]> git.proxmox.com Git - systemd.git/commitdiff
Add v208-stable patch series.
authorJon Severinsson <jon@severinsson.net>
Sun, 6 Jul 2014 16:00:00 +0000 (18:00 +0200)
committerJon Severinsson <jon@severinsson.net>
Mon, 7 Jul 2014 10:29:26 +0000 (12:29 +0200)
This commit was created using the following commands and then fixing up debian/patches/series manually.
$ git config diff.renames false
$ git rebase --onto debian/208-5 v208 stable/v208-stable
$ git checkout -b patch-queue/experimental HEAD
$ gbp-pq export --no-patch-numbers
$ git add --ignore-removal debian/patches/

480 files changed:
debian/changelog
debian/patches/Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch [new file with mode: 0644]
debian/patches/Add-strappenda3.patch [new file with mode: 0644]
debian/patches/Add-support-for-saving-restoring-keyboard-backlights.patch [new file with mode: 0644]
debian/patches/Allow-fractional-parts-in-disk-sizes.patch [new file with mode: 0644]
debian/patches/Configurable-Timeouts-Restarts-default-values.patch [new file with mode: 0644]
debian/patches/DEFAULT_PATH_SPLIT_USR-macro.patch [new file with mode: 0644]
debian/patches/Do-not-print-invalid-UTF-8-in-error-messages.patch [new file with mode: 0644]
debian/patches/Do-not-unescape-unit-names-in-Install-section.patch [new file with mode: 0644]
debian/patches/Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch [new file with mode: 0644]
debian/patches/Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch [new file with mode: 0644]
debian/patches/Fix-a-few-resource-leaks-in-error-paths.patch [new file with mode: 0644]
debian/patches/Fix-a-few-signed-unsigned-format-string-issues.patch [new file with mode: 0644]
debian/patches/Fix-bad-assert-in-show_pid_array.patch [new file with mode: 0644]
debian/patches/Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch [new file with mode: 0644]
debian/patches/Fix-instance-argument-for-systemd-backlight-.service.patch [new file with mode: 0644]
debian/patches/Fix-keysize-handling-in-cryptsetup-bits-vs.-bytes.patch [new file with mode: 0644]
debian/patches/Fix-kmod-error-message-to-have-correct-version-requi.patch [new file with mode: 0644]
debian/patches/Fix-memory-leak-in-stdout-journal-streams.patch [new file with mode: 0644]
debian/patches/Fix-possible-lack-of-status-messages-on-shutdown-reb.patch [new file with mode: 0644]
debian/patches/Fix-prototype-of-get_process_state.patch [new file with mode: 0644]
debian/patches/Introduce-udev-object-cleanup-functions.patch [new file with mode: 0644]
debian/patches/Make-hibernation-test-work-for-swap-files.patch [new file with mode: 0644]
debian/patches/Make-sure-that-we-don-t-dereference-NULL.patch [new file with mode: 0644]
debian/patches/Make-systemctl-root-look-for-files-in-the-proper-pla.patch [new file with mode: 0644]
debian/patches/Never-call-qsort-on-potentially-NULL-arrays.patch [new file with mode: 0644]
debian/patches/Only-disable-output-on-console-during-boot-if-needed.patch [new file with mode: 0644]
debian/patches/README-document-that-var-run-must-be-a-symlink-run.patch [new file with mode: 0644]
debian/patches/Reset-signal-mask-on-re-exec-to-init.patch [new file with mode: 0644]
debian/patches/Resolve-dev-console-to-the-active-tty-instead-of-jus.patch [new file with mode: 0644]
debian/patches/Revert-journalctl-flip-to-full-by-default.patch [new file with mode: 0644]
debian/patches/Revert-login-Don-t-stop-a-running-user-manager-from-.patch [new file with mode: 0644]
debian/patches/Revert-systemd-add-a-start-job-for-all-units-specifi.patch [new file with mode: 0644]
debian/patches/Temporary-work-around-for-slow-shutdown-due-to-unter.patch [new file with mode: 0644]
debian/patches/Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch [new file with mode: 0644]
debian/patches/acpi-fpdt-break-on-zero-or-negative-length-read.patch [new file with mode: 0644]
debian/patches/acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch [new file with mode: 0644]
debian/patches/acpi-make-sure-we-never-free-an-uninitialized-pointe.patch [new file with mode: 0644]
debian/patches/activate-clean-up-inherited-descriptors.patch [new file with mode: 0644]
debian/patches/activate-fix-crash-when-s-is-passed.patch [new file with mode: 0644]
debian/patches/activate-mention-E-in-the-help-text.patch [new file with mode: 0644]
debian/patches/add-bash-completion-for-systemd-cat.patch [new file with mode: 0644]
debian/patches/add-bash-completion-for-systemd-cgls.patch [new file with mode: 0644]
debian/patches/add-bash-completion-for-systemd-cgtop.patch [new file with mode: 0644]
debian/patches/add-bash-completion-for-systemd-detect-virt.patch [new file with mode: 0644]
debian/patches/analyze-fix-plot-issues-when-using-gummiboot.patch [new file with mode: 0644]
debian/patches/analyze-fix-plot-with-bad-y-size.patch [new file with mode: 0644]
debian/patches/analyze-plot-place-the-text-on-the-side-with-most-sp.patch [new file with mode: 0644]
debian/patches/analyze-set-white-backgound.patch [new file with mode: 0644]
debian/patches/ask-password-when-the-user-types-a-overly-long-passw.patch [new file with mode: 0644]
debian/patches/async-add-asynchronous-close-call.patch [new file with mode: 0644]
debian/patches/automount-log-info-about-triggering-process.patch [new file with mode: 0644]
debian/patches/backlight-Avoid-restoring-brightness-to-an-unreadabl.patch [new file with mode: 0644]
debian/patches/backlight-Do-not-clamp-brightness-for-LEDs.patch [new file with mode: 0644]
debian/patches/backlight-Fix-copy-paste-error-printing-an-unrelated.patch [new file with mode: 0644]
debian/patches/backlight-always-prefer-firmware-platform-backlights.patch [new file with mode: 0644]
debian/patches/backlight-do-nothing-if-max_brightness-is-0.patch [new file with mode: 0644]
debian/patches/backlight-handle-saved-brightness-exceeding-max-brig.patch [new file with mode: 0644]
debian/patches/backlight-include-ID_PATH-in-file-names-for-backligh.patch [new file with mode: 0644]
debian/patches/backlight-unify-error-messages.patch [new file with mode: 0644]
debian/patches/bash-add-completion-for-systemd-nspawn.patch [new file with mode: 0644]
debian/patches/bash-completion-fix-__get_startable_units.patch [new file with mode: 0644]
debian/patches/bash-completion-fix-completion-of-complete-verbs.patch [new file with mode: 0644]
debian/patches/bash-completion-journalctl-file.patch [new file with mode: 0644]
debian/patches/bootchart-set-white-background.patch [new file with mode: 0644]
debian/patches/bootctl-add-bash-completion.patch [new file with mode: 0644]
debian/patches/build-sys-Don-t-distribute-generated-udev-rule.patch [new file with mode: 0644]
debian/patches/build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch [new file with mode: 0644]
debian/patches/build-sys-at-configure-check-for-verifying-that-ln-s.patch [new file with mode: 0644]
debian/patches/bus-fix-potentially-uninitialized-memory-access.patch [new file with mode: 0644]
debian/patches/button-don-t-exit-if-we-cannot-handle-a-button-press.patch [new file with mode: 0644]
debian/patches/calendar-support-yearly-and-annually-names-the-same-.patch [new file with mode: 0644]
debian/patches/catalog-remove-links-to-non-existent-wiki-pages.patch [new file with mode: 0644]
debian/patches/cdrom_id-use-the-old-MMC-fallback.patch [new file with mode: 0644]
debian/patches/cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch [new file with mode: 0644]
debian/patches/cgroup-run-PID-1-in-the-root-cgroup.patch [new file with mode: 0644]
debian/patches/conf-files-fix-when-for-root-logic.patch [new file with mode: 0644]
debian/patches/conf-files-include-root-in-returned-file-paths.patch [new file with mode: 0644]
debian/patches/conf-parser-never-consider-it-an-error-if-we-cannot-.patch [new file with mode: 0644]
debian/patches/core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch [new file with mode: 0644]
debian/patches/core-check-for-return-value-from-get_process_state.patch [new file with mode: 0644]
debian/patches/core-check-the-right-variable-for-failed-open.patch [new file with mode: 0644]
debian/patches/core-clean-up-signal-reset-logic-when-reexec.patch [new file with mode: 0644]
debian/patches/core-close-socket-fds-asynchronously.patch [new file with mode: 0644]
debian/patches/core-correctly-unregister-PIDs-from-PID-hashtables.patch [new file with mode: 0644]
debian/patches/core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch [new file with mode: 0644]
debian/patches/core-do-not-add-what-to-RequiresMountsFor-for-networ.patch [new file with mode: 0644]
debian/patches/core-do-not-print-invalid-utf-8-in-error-messages.patch [new file with mode: 0644]
debian/patches/core-do-not-read-system-boot-timestamps-in-systemd-u.patch [new file with mode: 0644]
debian/patches/core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch [new file with mode: 0644]
debian/patches/core-do-not-segfault-if-swap-activity-happens-when-p.patch [new file with mode: 0644]
debian/patches/core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch [new file with mode: 0644]
debian/patches/core-fix-crashes-if-locale.conf-contains-invalid-utf.patch [new file with mode: 0644]
debian/patches/core-fix-detection-of-dead-processes.patch [new file with mode: 0644]
debian/patches/core-fix-invalid-free-in-killall.patch [new file with mode: 0644]
debian/patches/core-fix-property-changes-in-transient-units.patch [new file with mode: 0644]
debian/patches/core-gc-half-created-stub-units.patch [new file with mode: 0644]
debian/patches/core-introduce-new-stop-protocol-for-unit-scopes.patch [new file with mode: 0644]
debian/patches/core-let-selinux_setup-load-policy-more-than-once.patch [new file with mode: 0644]
debian/patches/core-make-StopWhenUnneeded-work-in-conjunction-with-.patch [new file with mode: 0644]
debian/patches/core-make-sure-to-serialize-jobs-for-all-units.patch [new file with mode: 0644]
debian/patches/core-manager-print-info-about-interesting-signals.patch [new file with mode: 0644]
debian/patches/core-manager-remove-infinite-loop.patch [new file with mode: 0644]
debian/patches/core-more-exact-test-on-the-procfs-special-string-de.patch [new file with mode: 0644]
debian/patches/core-print-debug-instead-of-error-message.patch [new file with mode: 0644]
debian/patches/core-reindent-selinux-ima-smack-setup.c.patch [new file with mode: 0644]
debian/patches/core-service-check-if-mainpid-matches-only-if-it-is-.patch [new file with mode: 0644]
debian/patches/core-socket-fix-SO_REUSEPORT.patch [new file with mode: 0644]
debian/patches/core-sysvcompat-network-should-be-equivalent-to-netw.patch [new file with mode: 0644]
debian/patches/core-unify-the-way-we-denote-serialization-attribute.patch [new file with mode: 0644]
debian/patches/core-watch-SIGCHLD-more-closely-to-track-processes-o.patch [new file with mode: 0644]
debian/patches/coredumpctl-in-case-of-error-free-pattern-after-prin.patch [new file with mode: 0644]
debian/patches/correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch [new file with mode: 0644]
debian/patches/cryptsetup-Support-key-slot-option.patch [new file with mode: 0644]
debian/patches/cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch [new file with mode: 0644]
debian/patches/cryptsetup-generator-auto-add-deps-for-device-as-pas.patch [new file with mode: 0644]
debian/patches/cryptsetup-introduce-new-cryptsetup-pre.traget-unit-.patch [new file with mode: 0644]
debian/patches/dbus-common-avoid-leak-in-error-path.patch [new file with mode: 0644]
debian/patches/dbus-fix-return-value-of-dispatch_rqueue.patch [new file with mode: 0644]
debian/patches/delta-add-bash-completion.patch [new file with mode: 0644]
debian/patches/delta-do-not-use-unicode-chars-in-C-locale.patch [new file with mode: 0644]
debian/patches/delta-ensure-that-d_type-will-be-set-on-every-fs.patch [new file with mode: 0644]
debian/patches/delta-fix-delta-for-drop-ins.patch [new file with mode: 0644]
debian/patches/delta-if-prefix-is-specified-only-show-overrides-the.patch [new file with mode: 0644]
debian/patches/delta-replace-readdir_r-with-readdir.patch [new file with mode: 0644]
debian/patches/detect_virtualization-returns-NULL-pass-empty-string.patch [new file with mode: 0644]
debian/patches/do-not-accept-garbage-from-acpi-firmware-performance.patch [new file with mode: 0644]
debian/patches/doc-choose-different-words-to-improve-clarity.patch [new file with mode: 0644]
debian/patches/doc-properly-use-XML-entities.patch [new file with mode: 0644]
debian/patches/doc-resolve-missing-extraneous-words-or-inappropriat.patch [new file with mode: 0644]
debian/patches/doc-update-punctuation.patch [new file with mode: 0644]
debian/patches/docs-remove-unneeded-the-s-in-gudev-docs.patch [new file with mode: 0644]
debian/patches/drop-ins-check-return-value.patch [new file with mode: 0644]
debian/patches/drop-several-entries-from-kbd-model-map-whose-kbd-la.patch [new file with mode: 0644]
debian/patches/efi-boot-generator-don-t-mount-boot-eagerly.patch [new file with mode: 0644]
debian/patches/efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch [new file with mode: 0644]
debian/patches/efi-never-call-qsort-on-potentially-NULL-arrays.patch [new file with mode: 0644]
debian/patches/execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch [new file with mode: 0644]
debian/patches/execute-free-directory-path-if-we-fail-to-remove-it-.patch [new file with mode: 0644]
debian/patches/execute-more-debugging-messages.patch [new file with mode: 0644]
debian/patches/execute.c-always-set-SHELL.patch [new file with mode: 0644]
debian/patches/fix-SELinux-check-for-transient-units.patch [new file with mode: 0644]
debian/patches/fix-lingering-references-to-var-lib-backlight-random.patch [new file with mode: 0644]
debian/patches/fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch [new file with mode: 0644]
debian/patches/fsck-modernization.patch [new file with mode: 0644]
debian/patches/fstab-generator-Create-fsck-root-symlink-with-correc.patch [new file with mode: 0644]
debian/patches/fstab-generator-Do-not-try-to-fsck-non-devices.patch [new file with mode: 0644]
debian/patches/fstab-generator-use-RequiresOverridable-for-fsck-uni.patch [new file with mode: 0644]
debian/patches/getty-generator-properly-escape-instance-names.patch [new file with mode: 0644]
debian/patches/getty-generator-verify-ttys-before-we-make-use-of-th.patch [new file with mode: 0644]
debian/patches/gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch [new file with mode: 0644]
debian/patches/gpt-auto-generator-exit-immediately-if-in-container.patch [new file with mode: 0644]
debian/patches/gpt-auto-generator-skip-nonexistent-devices.patch [new file with mode: 0644]
debian/patches/gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch [new file with mode: 0644]
debian/patches/hashmap-be-a-bit-more-conservative-with-pre-allocati.patch [new file with mode: 0644]
debian/patches/hostnamed-avoid-using-NULL-in-error-path.patch [new file with mode: 0644]
debian/patches/hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch [new file with mode: 0644]
debian/patches/hwdb-PCI-include-primary-model-string-in-subsystem-m.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-131.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-151.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-205.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-241.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-314.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-315.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-357.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-370.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-379.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-418.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-468.patch [new file with mode: 0644]
debian/patches/hwdb-Update-database-of-Bluetooth-company-identifier.patch [new file with mode: 0644]
debian/patches/hwdb-add-Samsung-700G.patch [new file with mode: 0644]
debian/patches/hwdb-change-key-mappings-for-Samsung-90X3A.patch [new file with mode: 0644]
debian/patches/hwdb-fix-case-sensitive-match.patch [new file with mode: 0644]
debian/patches/hwdb-fix-match-for-Thinkpad-X201-tablet.patch [new file with mode: 0644]
debian/patches/hwdb-remove-duplicate-entry-for-Samsung-700Z.patch [new file with mode: 0644]
debian/patches/hwdb-update-189.patch [new file with mode: 0644]
debian/patches/hwdb-update-219.patch [new file with mode: 0644]
debian/patches/hwdb-update-361.patch [new file with mode: 0644]
debian/patches/hwdb-update-381.patch [new file with mode: 0644]
debian/patches/hwdb-update-396.patch [new file with mode: 0644]
debian/patches/hwdb-update-419.patch [new file with mode: 0644]
debian/patches/hwdb-update.patch [new file with mode: 0644]
debian/patches/implement-a-union-to-pad-out-file_handle.patch [new file with mode: 0644]
debian/patches/input_id-Recognize-buttonless-joystick-types.patch [new file with mode: 0644]
debian/patches/install-create_symlink-check-unlink-return-value.patch [new file with mode: 0644]
debian/patches/install-fix-invalid-free-in-unit_file_mask.patch [new file with mode: 0644]
debian/patches/install-make-sure-systemctl-disable-foobar-.service-.patch [new file with mode: 0644]
debian/patches/install-make-sure-that-root-mode-doesn-t-make-us-con.patch [new file with mode: 0644]
debian/patches/install-simplify-and-clarify-disabling-logic-for-ins.patch [new file with mode: 0644]
debian/patches/install-simplify-symlink-root-logic.patch [new file with mode: 0644]
debian/patches/install-various-modernizations.patch [new file with mode: 0644]
debian/patches/install-when-looking-for-a-unit-file-for-enabling-se.patch [new file with mode: 0644]
debian/patches/job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch [new file with mode: 0644]
debian/patches/journal-Add-missing-byte-order-conversions.patch [new file with mode: 0644]
debian/patches/journal-allow-journal_file_copy_entry-to-work-on-non.patch [new file with mode: 0644]
debian/patches/journal-assume-that-next-entry-is-after-previous-ent.patch [new file with mode: 0644]
debian/patches/journal-cleanup-up-error-handling-in-update_catalog.patch [new file with mode: 0644]
debian/patches/journal-don-t-clobber-return-parameters-of-sd_journa.patch [new file with mode: 0644]
debian/patches/journal-downgrade-vaccuum-message-to-debug-level.patch [new file with mode: 0644]
debian/patches/journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch [new file with mode: 0644]
debian/patches/journal-file-protect-against-alloca-0.patch [new file with mode: 0644]
debian/patches/journal-file.c-remove-redundant-assignment-of-variab.patch [new file with mode: 0644]
debian/patches/journal-fix-access-to-munmapped-memory-in-sd_journal.patch [new file with mode: 0644]
debian/patches/journal-fix-against-theoretical-undefined-behavior.patch [new file with mode: 0644]
debian/patches/journal-fix-export-of-messages-containing-newlines.patch [new file with mode: 0644]
debian/patches/journal-fix-iteration-when-we-go-backwards-from-the-.patch [new file with mode: 0644]
debian/patches/journal-fix-minor-memory-leak.patch [new file with mode: 0644]
debian/patches/journal-forget-file-after-encountering-an-error.patch [new file with mode: 0644]
debian/patches/journal-make-table-const.patch [new file with mode: 0644]
debian/patches/journal-optimize-bisection-logic-a-bit-by-caching-th.patch [new file with mode: 0644]
debian/patches/journal-pipe-journalctl-help-output-into-a-pager.patch [new file with mode: 0644]
debian/patches/journal-simplify-pre-allocation-logic.patch [new file with mode: 0644]
debian/patches/journal-timestamp-support-on-console-messages.patch [new file with mode: 0644]
debian/patches/journal-when-appending-to-journal-file-allocate-larg.patch [new file with mode: 0644]
debian/patches/journalctl-add-list-boots-to-show-boot-IDs-and-times.patch [new file with mode: 0644]
debian/patches/journalctl-flip-to-full-by-default.patch [new file with mode: 0644]
debian/patches/journalctl-free-arg_file-on-exit.patch [new file with mode: 0644]
debian/patches/journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch [new file with mode: 0644]
debian/patches/journalctl-refuse-extra-arguments-with-verify-and-si.patch [new file with mode: 0644]
debian/patches/journalctl-zsh-completion-fix-several-issues-in-help.patch [new file with mode: 0644]
debian/patches/journald-add-missing-error-check.patch [new file with mode: 0644]
debian/patches/journald-do-not-free-space-when-disk-space-runs-low.patch [new file with mode: 0644]
debian/patches/journald-downgrade-warning-message-when-dev-kmsg-doe.patch [new file with mode: 0644]
debian/patches/journald-fix-minor-memory-leak.patch [new file with mode: 0644]
debian/patches/journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch [new file with mode: 0644]
debian/patches/journald-malloc-less-when-streaming-messages.patch [new file with mode: 0644]
debian/patches/journald-mention-how-long-we-needed-to-flush-to-var-.patch [new file with mode: 0644]
debian/patches/journald-remove-rotated-file-from-hashmap-when-rotat.patch [new file with mode: 0644]
debian/patches/journald-use-a-bit-more-cleanup-magic.patch [new file with mode: 0644]
debian/patches/kernel-install-add-h-help.patch [new file with mode: 0644]
debian/patches/kernel-install-fix-help-output.patch [new file with mode: 0644]
debian/patches/keyboard-add-Plantronics-.Audio-mute-button.patch [new file with mode: 0644]
debian/patches/keymap-Add-HP-Chromebook-14-Falco.patch [new file with mode: 0644]
debian/patches/keymap-Add-Lenovo-Enhanced-USB-Keyboard.patch [new file with mode: 0644]
debian/patches/keymap-Add-Sony-Vaio-VGN-FW250.patch [new file with mode: 0644]
debian/patches/keymap-Add-Toshiba-EQUIUM.patch [new file with mode: 0644]
debian/patches/keymap-Add-Toshiba-Satellite-U940.patch [new file with mode: 0644]
debian/patches/keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch [new file with mode: 0644]
debian/patches/keymap-Asus-EeePC-touchpad-toggle-key.patch [new file with mode: 0644]
debian/patches/keymap-Fix-Samsung-900X-34-C.patch [new file with mode: 0644]
debian/patches/keymap-Recognize-different-Toshiba-Satellite-capital.patch [new file with mode: 0644]
debian/patches/keymap-Refactor-Acer-tables.patch [new file with mode: 0644]
debian/patches/label-when-clearing-selinux-context-don-t-mangle-err.patch [new file with mode: 0644]
debian/patches/libudev-default-log_priority-to-INFO.patch [new file with mode: 0644]
debian/patches/libudev-devices-received-from-udev-are-always-initia.patch [new file with mode: 0644]
debian/patches/libudev-hwdb-use-libudev-not-systemd-logging.patch [new file with mode: 0644]
debian/patches/load-modules-properly-return-a-failing-error-code-if.patch [new file with mode: 0644]
debian/patches/localed-match-converted-keymaps-before-legacy.patch [new file with mode: 0644]
debian/patches/log-don-t-reopen-dev-console-each-time-we-call-log_o.patch [new file with mode: 0644]
debian/patches/log-log_error-and-friends-add-a-newline-after-each-l.patch [new file with mode: 0644]
debian/patches/log-when-we-log-to-dev-console-and-got-disconnected-.patch [new file with mode: 0644]
debian/patches/logging-reduce-send-timeout-to-something-more-sensib.patch [new file with mode: 0644]
debian/patches/login-Don-t-stop-a-running-user-manager-from-garbage.patch
debian/patches/login-fix-invalid-free-in-sd_session_get_vt.patch
debian/patches/login-make-sd_session_get_vt-actually-work.patch
debian/patches/loginctl-when-showing-device-tree-of-seats-with-no-d.patch [new file with mode: 0644]
debian/patches/logind-add-forgotten-call-to-user_send_changed.patch [new file with mode: 0644]
debian/patches/logind-add-forgotten-return-statement.patch [new file with mode: 0644]
debian/patches/logind-allow-unprivileged-session-device-access.patch [new file with mode: 0644]
debian/patches/logind-also-escape-external-data-when-saving-to-run.patch [new file with mode: 0644]
debian/patches/logind-bring-polkit-policy-for-hibernate-in-line-wit.patch [new file with mode: 0644]
debian/patches/logind-fix-bus-introspection-data-for-TakeControl.patch [new file with mode: 0644]
debian/patches/logind-fix-policykit-checks.patch [new file with mode: 0644]
debian/patches/logind-fix-reference-to-systemd-user-sessions.servic.patch [new file with mode: 0644]
debian/patches/logind-given-that-we-can-now-relatively-safely-shutd.patch [new file with mode: 0644]
debian/patches/logind-ignore-failing-close-on-session-devices.patch [new file with mode: 0644]
debian/patches/logind-initialize-timer_fd.patch [new file with mode: 0644]
debian/patches/logind-order-all-scopes-after-both-systemd-logind.se.patch [new file with mode: 0644]
debian/patches/logind-pass-pointer-to-User-object-to-user_save.patch [new file with mode: 0644]
debian/patches/logind-remove-dead-variable.patch [new file with mode: 0644]
debian/patches/logind-rework-session-shutdown-logic.patch [new file with mode: 0644]
debian/patches/logind-save-session-after-setting-the-stopping-flag.patch [new file with mode: 0644]
debian/patches/logind-save-user-state-after-stopping-the-session.patch [new file with mode: 0644]
debian/patches/logind-uninitialized-timer_fd-is-set-to-1.patch [new file with mode: 0644]
debian/patches/logind-use-correct-who-enum-values-with-KillUnit.patch [new file with mode: 0644]
debian/patches/logs-show-fix-corrupt-output-with-empty-messages.patch [new file with mode: 0644]
debian/patches/machine-escape-fields-we-store-in-run-so-that-they-c.patch [new file with mode: 0644]
debian/patches/machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch [new file with mode: 0644]
debian/patches/machinectl-add-bash-completion.patch [new file with mode: 0644]
debian/patches/macro-add-a-macro-to-test-whether-a-value-is-in-a-sp.patch [new file with mode: 0644]
debian/patches/man-Improve-the-description-of-parameter-X-in-tmpfil.patch [new file with mode: 0644]
debian/patches/man-Searching-for-an-explanation-of-what-a-slice-uni.patch [new file with mode: 0644]
debian/patches/man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch [new file with mode: 0644]
debian/patches/man-add-a-note-about-propagating-signals.patch [new file with mode: 0644]
debian/patches/man-add-bootctl-8.patch [new file with mode: 0644]
debian/patches/man-add-busctl-1.patch [new file with mode: 0644]
debian/patches/man-add-docs-for-sd_is_special-and-some-man-page-sym.patch [new file with mode: 0644]
debian/patches/man-add-missing-comma.patch [new file with mode: 0644]
debian/patches/man-add-more-markup-to-udevadm-8.patch [new file with mode: 0644]
debian/patches/man-add-rationale-into-systemd-halt-8.patch [new file with mode: 0644]
debian/patches/man-always-place-programlisting-and-programlisting-i.patch [new file with mode: 0644]
debian/patches/man-be-more-explicit-about-option-arguments-that-tak.patch [new file with mode: 0644]
debian/patches/man-be-more-specific-when-EnvironmentFile-is-read.patch [new file with mode: 0644]
debian/patches/man-beef-up-ExecStart-description.patch [new file with mode: 0644]
debian/patches/man-busctl-typo-fix.patch [new file with mode: 0644]
debian/patches/man-clarify-that-the-ExecReload-command-should-be-sy.patch [new file with mode: 0644]
debian/patches/man-describe-journalctl-show-cursor.patch [new file with mode: 0644]
debian/patches/man-do-not-use-term-in-para.patch [new file with mode: 0644]
debian/patches/man-document-MAINPID.patch [new file with mode: 0644]
debian/patches/man-document-fail-nofail-auto-noauto.patch [new file with mode: 0644]
debian/patches/man-document-is-enabled-output.patch [new file with mode: 0644]
debian/patches/man-document-relationship-between-RequiresMountsFor-.patch [new file with mode: 0644]
debian/patches/man-document-that-per-interface-sysctl-variables-are.patch [new file with mode: 0644]
debian/patches/man-document-the-b-special-boot-option.patch [new file with mode: 0644]
debian/patches/man-drop-reference-to-file-locking-for-PID-file-crea.patch [new file with mode: 0644]
debian/patches/man-expand-on-some-more-subtle-points-in-systemd.soc.patch [new file with mode: 0644]
debian/patches/man-explain-NAME-in-systemctl-man-page.patch [new file with mode: 0644]
debian/patches/man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch [new file with mode: 0644]
debian/patches/man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch [new file with mode: 0644]
debian/patches/man-explicitly-say-when-multiple-units-can-be-specif.patch [new file with mode: 0644]
debian/patches/man-fix-Type-reference-v2.patch [new file with mode: 0644]
debian/patches/man-fix-Type-reference.patch [new file with mode: 0644]
debian/patches/man-fix-another-reference-in-systemd-inhibit-1.patch [new file with mode: 0644]
debian/patches/man-fix-description-of-is-enabled-returned-value.patch [new file with mode: 0644]
debian/patches/man-fix-description-of-systemctl-after-before.patch [new file with mode: 0644]
debian/patches/man-fix-grammatical-errors-and-other-formatting-issu.patch [new file with mode: 0644]
debian/patches/man-fix-reference-in-systemd-inhibit-1.patch
debian/patches/man-fix-references-to-sd_journal_cutoff_realtime_use.patch [new file with mode: 0644]
debian/patches/man-fix-typo.patch [new file with mode: 0644]
debian/patches/man-grammar-and-wording-improvements.patch [new file with mode: 0644]
debian/patches/man-improve-wording-and-comma-usage-in-systemd.journ.patch [new file with mode: 0644]
debian/patches/man-improve-wording-of-systemctl-s-after-before.patch [new file with mode: 0644]
debian/patches/man-improvements-to-comma-placement.patch [new file with mode: 0644]
debian/patches/man-include-autoconf-snippet-in-daemon-7.patch [new file with mode: 0644]
debian/patches/man-machinectl-there-is-no-command-kill-machine.patch [new file with mode: 0644]
debian/patches/man-mention-which-variables-will-be-expanded-in-Exec.patch [new file with mode: 0644]
debian/patches/man-multiple-sleep-modes-are-to-be-separated-by-whit.patch [new file with mode: 0644]
debian/patches/man-readahead-fix-cmdline-switch-inconsistency-betwe.patch [new file with mode: 0644]
debian/patches/man-remove-advice-to-avoid-setting-the-same-var-more.patch [new file with mode: 0644]
debian/patches/man-replace-STDOUT-with-standard-output-etc.patch [new file with mode: 0644]
debian/patches/man-resolve-word-omissions.patch [new file with mode: 0644]
debian/patches/man-sd_journal_send-does-nothing-when-journald-is-no.patch [new file with mode: 0644]
debian/patches/man-systemd-bootchart-fix-spacing-in-command.patch [new file with mode: 0644]
debian/patches/man-there-is-no-ExecStopPre-for-service-units.patch [new file with mode: 0644]
debian/patches/man-typo-fix.patch [new file with mode: 0644]
debian/patches/man-units-fix-installation-of-systemd-nspawn-.servic.patch [new file with mode: 0644]
debian/patches/man-units-tmpfiles.d-5-cleanup.patch [new file with mode: 0644]
debian/patches/man-update-URL-refernce-in-daemon-7.patch [new file with mode: 0644]
debian/patches/man-update-journald-rate-limit-defaults.patch [new file with mode: 0644]
debian/patches/man-update-link-to-LSB.patch [new file with mode: 0644]
debian/patches/man-updates-to-the-passive-target-section.patch [new file with mode: 0644]
debian/patches/man-use-spaces-instead-of-tabs.patch [new file with mode: 0644]
debian/patches/manager-configurable-StartLimit-default-values.patch [new file with mode: 0644]
debian/patches/manager-don-t-do-plymouth-in-a-container.patch [new file with mode: 0644]
debian/patches/manager-when-verifying-whether-clients-may-change-en.patch [new file with mode: 0644]
debian/patches/mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch [new file with mode: 0644]
debian/patches/modules-load-fix-error-handling.patch [new file with mode: 0644]
debian/patches/mount-check-for-NULL-before-reading-pm-what.patch [new file with mode: 0644]
debian/patches/mount-don-t-fire-PropertiesChanged-signals-for-mount.patch [new file with mode: 0644]
debian/patches/mount-don-t-send-out-PropertiesChanged-message-if-ac.patch [new file with mode: 0644]
debian/patches/nspawn-add-new-drop-capability-switch.patch [new file with mode: 0644]
debian/patches/nspawn-allow-to-bind-mount-journal-on-top-of-a-non-e.patch [new file with mode: 0644]
debian/patches/nspawn-complain-and-continue-if-machine-has-same-id.patch [new file with mode: 0644]
debian/patches/nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch [new file with mode: 0644]
debian/patches/nspawn-explicitly-terminate-machines-when-we-exit-ns.patch [new file with mode: 0644]
debian/patches/nspawn-if-we-don-t-find-bash-try-sh.patch [new file with mode: 0644]
debian/patches/nspawn-log-out-of-memory-errors.patch [new file with mode: 0644]
debian/patches/nspawn-only-pass-in-slice-setting-if-it-is-set.patch [new file with mode: 0644]
debian/patches/nspawn-properly-format-container_uuid-in-UUID-format.patch [new file with mode: 0644]
debian/patches/nspawn-restore-journal-directory-is-empty-check.patch [new file with mode: 0644]
debian/patches/nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch [new file with mode: 0644]
debian/patches/pam-module-fix-warning-about-ignoring-vtnr.patch [new file with mode: 0644]
debian/patches/pam-use-correct-log-level.patch [new file with mode: 0644]
debian/patches/pam_systemd-Ignore-vtnr-when-seat-seat0.patch [new file with mode: 0644]
debian/patches/pam_systemd-do-not-set-XDG_RUNTIME_DIR-if-the-sessio.patch [new file with mode: 0644]
debian/patches/random-seed-improve-debugging-messages-a-bit.patch [new file with mode: 0644]
debian/patches/reduce-the-amount-of-messages-logged-to-dev-kmsg-whe.patch [new file with mode: 0644]
debian/patches/rpm-don-t-hardcode-the-binary-paths-in-the-macros-re.patch [new file with mode: 0644]
debian/patches/rules-add-loop-control-and-btrfs-control-to-disk-gro.patch [new file with mode: 0644]
debian/patches/rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch [new file with mode: 0644]
debian/patches/rules-drivers-do-not-reset-RUN-list.patch [new file with mode: 0644]
debian/patches/rules-expose-loop-block-devices-to-systemd.patch [new file with mode: 0644]
debian/patches/rules-load-path_id-on-DRM-devices.patch [new file with mode: 0644]
debian/patches/rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch [new file with mode: 0644]
debian/patches/rules-remove-pointless-MODE-settings.patch [new file with mode: 0644]
debian/patches/rules-simply-60-drm.rules.patch [new file with mode: 0644]
debian/patches/run-support-system-to-match-other-commands-even-if-r.patch [new file with mode: 0644]
debian/patches/s390-getty-generator-initialize-essential-system-ter.patch [new file with mode: 0644]
debian/patches/selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch [new file with mode: 0644]
debian/patches/series
debian/patches/shared-add-root-argument-to-search_and_fopen.patch [new file with mode: 0644]
debian/patches/shared-fix-search_and_fopen-with-alternate-roots.patch [new file with mode: 0644]
debian/patches/shared-include-root-when-canonicalizing-conf-paths.patch [new file with mode: 0644]
debian/patches/shared-install-do-not-prefix-created-symlink-with-ro.patch [new file with mode: 0644]
debian/patches/shared-util-Fix-glob_extend-argument.patch [new file with mode: 0644]
debian/patches/shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch [new file with mode: 0644]
debian/patches/shell-completion-dump-has-moved-to-systemd-analyze.patch [new file with mode: 0644]
debian/patches/shell-completion-fix-completion-of-localectl-set-loc.patch [new file with mode: 0644]
debian/patches/shell-completion-remove-load-from-systemctl.patch [new file with mode: 0644]
debian/patches/shutdown-trim-the-cgroup-tree-on-loop-iteration.patch [new file with mode: 0644]
debian/patches/sleep-config-Dereference-pointer-before-check-for-NU.patch [new file with mode: 0644]
debian/patches/sleep-config-fix-double-free.patch [new file with mode: 0644]
debian/patches/sleep-config-fix-useless-check-for-swapfile-type.patch [new file with mode: 0644]
debian/patches/sleep.c-fix-typo.patch [new file with mode: 0644]
debian/patches/socket-check-return-from-exec_spawn.patch [new file with mode: 0644]
debian/patches/socket-properly-handle-if-our-service-vanished-durin.patch [new file with mode: 0644]
debian/patches/static-nodes-don-t-call-mkdir.patch [new file with mode: 0644]
debian/patches/strv-don-t-access-potentially-NULL-string-arrays.patch [new file with mode: 0644]
debian/patches/swap-remove-if-else-with-the-same-data-path.patch [new file with mode: 0644]
debian/patches/sysctl-replaces-some-slashes-with-dots.patch [new file with mode: 0644]
debian/patches/sysfs-show.c-return-negative-error.patch [new file with mode: 0644]
debian/patches/systemctl-add-more-verbose-explanation-of-kill-who-a.patch [new file with mode: 0644]
debian/patches/systemctl-add-the-plain-option-to-the-help-message.patch [new file with mode: 0644]
debian/patches/systemctl-fix-name-mangling-for-sysv-units.patch [new file with mode: 0644]
debian/patches/systemctl-fix-typo-in-help-text.patch [new file with mode: 0644]
debian/patches/systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch [new file with mode: 0644]
debian/patches/systemctl-make-LOAD-column-width-dynamic.patch [new file with mode: 0644]
debian/patches/systemctl-return-r-instead-of-always-returning-0.patch [new file with mode: 0644]
debian/patches/systemctl-skip-native-unit-file-handling-if-sysv-fil.patch [new file with mode: 0644]
debian/patches/systemd-add-a-start-job-for-all-units-specified-with.patch [new file with mode: 0644]
debian/patches/systemd-detect-virt-only-discover-Xen-domU.patch [new file with mode: 0644]
debian/patches/systemd-fix-memory-leak-in-cgroup-code.patch [new file with mode: 0644]
debian/patches/systemd-order-remote-mounts-from-mountinfo-before-re.patch
debian/patches/systemd-python-convert-keyword-value-to-string.patch [new file with mode: 0644]
debian/patches/systemd-python-fix-booted-and-add-two-functions-to-d.patch [new file with mode: 0644]
debian/patches/systemd-python-fix-listen_fds-under-Python-2.patch [new file with mode: 0644]
debian/patches/systemd-python-fix-setting-of-exception-codes.patch [new file with mode: 0644]
debian/patches/systemd-python-use-.hex-instead-of-.get_hex.patch [new file with mode: 0644]
debian/patches/systemd-serialize-deserialize-forbid_restart-value.patch [new file with mode: 0644]
debian/patches/systemd-treat-reload-failure-as-failure.patch [new file with mode: 0644]
debian/patches/systemd-use-unit-name-in-PrivateTmp-directories.patch [new file with mode: 0644]
debian/patches/test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch [new file with mode: 0644]
debian/patches/timer-consider-usec_t-1-an-invalid-timestamp.patch [new file with mode: 0644]
debian/patches/timer-properly-format-relative-timestamps-in-the-fut.patch [new file with mode: 0644]
debian/patches/tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch [new file with mode: 0644]
debian/patches/tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch [new file with mode: 0644]
debian/patches/tmpfiles-fix-memory-leak-of-exclude_prefixes.patch [new file with mode: 0644]
debian/patches/tmpfiles-fix-permissions-on-new-journal-files.patch [new file with mode: 0644]
debian/patches/tmpfiles-introduce-the-concept-of-unsafe-operations.patch [new file with mode: 0644]
debian/patches/tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch [new file with mode: 0644]
debian/patches/tmpfiles-rename-unsafe-to-boot.patch [new file with mode: 0644]
debian/patches/tmpfiles-set-up-selinux-label-proeprly-when-creating.patch [new file with mode: 0644]
debian/patches/tmpfiles.d-include-setgid-perms-for-run-log-journal.patch [new file with mode: 0644]
debian/patches/tty-ask-password-agent-Do-tell-what-directory-we-fai.patch [new file with mode: 0644]
debian/patches/tty-ask-password-agent-return-negative-errno.patch [new file with mode: 0644]
debian/patches/udev-add-zram-to-the-list-of-devices-inappropriate-f.patch [new file with mode: 0644]
debian/patches/udev-ata_id-log-faling-ioctls-as-debug.patch [new file with mode: 0644]
debian/patches/udev-avoid-use-of-uninitialized-err.patch [new file with mode: 0644]
debian/patches/udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch [new file with mode: 0644]
debian/patches/udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch [new file with mode: 0644]
debian/patches/udev-builtin-path_id-add-support-for-bcma-bus.patch [new file with mode: 0644]
debian/patches/udev-do-not-export-static-node-tags-for-non-existing.patch [new file with mode: 0644]
debian/patches/udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch [new file with mode: 0644]
debian/patches/udev-increase-the-size-of-RESULT-buffer.patch [new file with mode: 0644]
debian/patches/udev-keyboard-also-hook-into-change-events.patch [new file with mode: 0644]
debian/patches/udev-make-sure-we-always-return-a-valid-error-code-i.patch [new file with mode: 0644]
debian/patches/udev-net_id-Introduce-predictable-network-names-for-.patch [new file with mode: 0644]
debian/patches/udev-properly-detect-reference-to-unexisting-part-of.patch [new file with mode: 0644]
debian/patches/udev-rules-setup-tty-permissions-and-group-for-sclp_.patch [new file with mode: 0644]
debian/patches/udev-static_node-do-not-exit-rule-after-first-static.patch [new file with mode: 0644]
debian/patches/udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch [new file with mode: 0644]
debian/patches/udevadm.xml-document-resolve-names-option-for-test.patch [new file with mode: 0644]
debian/patches/unit-name-fix-detection-of-unit-templates-instances.patch [new file with mode: 0644]
debian/patches/unit.c-Move-code-around-to-easy-cherrypicking.patch [new file with mode: 0644]
debian/patches/units-Do-not-unescape-instance-name-in-systemd-backl.patch [new file with mode: 0644]
debian/patches/units-don-t-run-readahead-done-timers-in-containers.patch [new file with mode: 0644]
debian/patches/units-drop-Install-section-from-multi-user.target-an.patch [new file with mode: 0644]
debian/patches/units-order-network-online.target-after-network.targ.patch [new file with mode: 0644]
debian/patches/units-serial-getty-.service-add-Install-section.patch [new file with mode: 0644]
debian/patches/units-systemd-logind-fails-hard-without-dbus.patch [new file with mode: 0644]
debian/patches/utf8-fix-utf8_is_printable.patch [new file with mode: 0644]
debian/patches/util-add-files_same-helper-function.patch [new file with mode: 0644]
debian/patches/util-add-timeout-to-generator-execution.patch [new file with mode: 0644]
debian/patches/util-allow-trailing-semicolons-on-define_trivial_cle.patch [new file with mode: 0644]
debian/patches/util-check-for-overflow-in-greedy_realloc.patch [new file with mode: 0644]
debian/patches/util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch [new file with mode: 0644]
debian/patches/util-fix-handling-of-trailing-whitespace-in-split_qu.patch [new file with mode: 0644]
debian/patches/util-ignore_file-should-not-allow-files-ending-with.patch [new file with mode: 0644]
debian/patches/util-make-sure-all-our-name_to_handle_at-code-makes-.patch [new file with mode: 0644]
debian/patches/util-replace-close_nointr_nofail-by-a-more-useful-sa.patch [new file with mode: 0644]
debian/patches/util-treat-fuse.sshfs-as-a-network-filesystem.patch [new file with mode: 0644]
debian/patches/util-try-harder-to-increase-the-send-recv-buffers-of.patch [new file with mode: 0644]
debian/patches/util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch [new file with mode: 0644]
debian/patches/utils-silence-the-compiler-warning.patch [new file with mode: 0644]
debian/patches/valgrind-make-running-PID-1-in-valgrind-useful.patch [new file with mode: 0644]
debian/patches/virt-move-caching-of-virtualization-check-results-in.patch [new file with mode: 0644]
debian/patches/virt-split-detect_vm-into-separate-functions.patch [new file with mode: 0644]
debian/patches/zsh-completion-add-bootctl.patch [new file with mode: 0644]
debian/patches/zsh-completion-add-systemd-run.patch [new file with mode: 0644]
debian/patches/zsh-completions-kernel-install-only-show-existing-ke.patch [new file with mode: 0644]

index 970f09ba03617bd0da20df65c3d293dcb2a355fe..24b5b247223cfa3950a313774d0ae753a3e5a2c4 100644 (file)
@@ -1,3 +1,9 @@
+systemd (208-6) UNRELEASED; urgency=medium
+
+  * Add v208-stable patch series.
+
+ -- Jon Severinsson <jon@severinsson.net>  Sun, 06 Jul 2014 18:00:00 +0200
+
 systemd (208-5) experimental; urgency=medium
 
   * Merge changes from unstable branch.
diff --git a/debian/patches/Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch b/debian/patches/Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch
new file mode 100644 (file)
index 0000000..f81c842
--- /dev/null
@@ -0,0 +1,29 @@
+From: Scott Thrasher <scott.thrasher@gmail.com>
+Date: Wed, 26 Mar 2014 18:48:13 -0700
+Subject: Add hwdb entry for Samsung Series 7 Ultra
+
+(cherry picked from commit 15f392394e75ffb7f318920008fd1bbe4e82b488)
+(cherry picked from commit cc76be2f760478eb32b9645ba6cb84cc1b791a52)
+---
+ hwdb/60-keyboard.hwdb | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index f9084e4..fdab827 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -921,6 +921,14 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
+  KEYBOARD_KEY_96=!kbdillumup                            # Fn+F8 keyboard backlight up
+  KEYBOARD_KEY_d5=!wlan                                  # Fn+F12 Wi-Fi toggle
++# Series 7 Ultra
++keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*7[34]0U3E*:pvr*
++ KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
++ KEYBOARD_KEY_97=!kbdillumdown                          # Fn+F9 keyboard backlight down
++ KEYBOARD_KEY_96=!kbdillumup                            # Fn+F10 keyboard backlight up
++ KEYBOARD_KEY_b3=!prog3                                 # Fn+F11 fan/cooling mode changer
++ KEYBOARD_KEY_d5=!wlan                                  # Fn+F12 wlan/airplane switch
++
+ # SQ1US
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pnSQ1US:pvr*
+  KEYBOARD_KEY_d4=menu
diff --git a/debian/patches/Add-strappenda3.patch b/debian/patches/Add-strappenda3.patch
new file mode 100644 (file)
index 0000000..3e2b55f
--- /dev/null
@@ -0,0 +1,40 @@
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 6 Mar 2014 16:35:02 +0100
+Subject: Add strappenda3
+
+(cherry picked from commit f39d4a08e746e703d562076a0f622eb91dbdcd3e)
+
+For strappenda3, and it seems a good fix in general.
+
+(cherry picked from commit 4f0b9b433473d4f2b24675253064fd098d21e5a6)
+
+Conflicts:
+       src/systemctl/systemctl.c
+---
+ src/shared/util.h | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 20d81e5..3f97663 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -728,6 +728,19 @@ int unlink_noerrno(const char *path);
+                 _c_;                                    \
+         })
++#define strappenda3(a, b, c)                                    \
++        ({                                                      \
++                const char *_a_ = (a), *_b_ = (b), *_c_ = (c);  \
++                char *_d_;                                      \
++                size_t _x_, _y_, _z_;                           \
++                _x_ = strlen(_a_);                              \
++                _y_ = strlen(_b_);                              \
++                _z_ = strlen(_c_);                              \
++                _d_ = alloca(_x_ + _y_ + _z_ + 1);              \
++                strcpy(stpcpy(stpcpy(_d_, _a_), _b_), _c_);     \
++                _d_;                                            \
++        })
++
+ #define procfs_file_alloca(pid, field)                                  \
+         ({                                                              \
+                 pid_t _pid_ = (pid);                                    \
diff --git a/debian/patches/Add-support-for-saving-restoring-keyboard-backlights.patch b/debian/patches/Add-support-for-saving-restoring-keyboard-backlights.patch
new file mode 100644 (file)
index 0000000..0349073
--- /dev/null
@@ -0,0 +1,65 @@
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 11 Oct 2013 09:45:32 +0200
+Subject: Add support for saving/restoring keyboard backlights
+
+Piggy-backing on the display backlight code, this saves and restores
+keyboard backlights on supported devices.
+
+The detection code matches that of UPower:
+http://cgit.freedesktop.org/upower/tree/src/up-kbd-backlight.c#n173
+
+https://bugs.freedesktop.org/show_bug.cgi?id=70367
+
+[tomegun: also work for devices named "{smc,samsung,asus}::kbd_backlight"]
+
+Conflicts:
+       rules/99-systemd.rules.in
+---
+ rules/99-systemd.rules.in | 4 +++-
+ src/backlight/backlight.c | 7 +++++--
+ 2 files changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index 307f18f..a00ffed 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -51,9 +51,11 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:
+ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name"
+-# Pull in backlight save/restore for all firmware backlight devices
++# Pull in backlight save/restore for all firmware backlight devices,
++# and keyboard backlights
+ SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
++SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+ # Asynchronously mount file systems implemented by these modules as
+ # soon as they are loaded.
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 9b2eada..f22deed 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -56,9 +56,11 @@ int main(int argc, char *argv[]) {
+         errno = 0;
+         device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]);
++        if (!device)
++                device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]);
+         if (!device) {
+                 if (errno != 0) {
+-                        log_error("Failed to get backlight device: %m");
++                        log_error("Failed to get backlight device '%s': %m", argv[2]);
+                         r = -errno;
+                 } else
+                         r = log_oom();
+@@ -66,7 +68,8 @@ int main(int argc, char *argv[]) {
+                 goto finish;
+         }
+-        if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) {
++        if (!streq_ptr(udev_device_get_subsystem(device), "backlight") &&
++            !streq_ptr(udev_device_get_subsystem(device), "leds")) {
+                 log_error("Not a backlight device: %s", argv[2]);
+                 r = -ENODEV;
+                 goto finish;
diff --git a/debian/patches/Allow-fractional-parts-in-disk-sizes.patch b/debian/patches/Allow-fractional-parts-in-disk-sizes.patch
new file mode 100644 (file)
index 0000000..8332e3b
--- /dev/null
@@ -0,0 +1,63 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 2 Mar 2014 00:05:16 -0500
+Subject: Allow fractional parts in disk sizes
+
+It seems natural to be able to say SystemMaxUsage=1.5G.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1047568
+(cherry picked from commit 9480794b277b5ce33e467578ed669996df576bb9)
+
+Conflicts:
+       src/test/test-util.c
+---
+ src/shared/util.c | 24 ++++++++++++++++++++++--
+ 1 file changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 7500779..e754747 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -2285,6 +2285,8 @@ int parse_bytes(const char *t, off_t *bytes) {
+         p = t;
+         do {
+                 long long l;
++                unsigned long long l2;
++                double frac = 0;
+                 char *e;
+                 unsigned i;
+@@ -2300,14 +2302,32 @@ int parse_bytes(const char *t, off_t *bytes) {
+                 if (e == p)
+                         return -EINVAL;
++                if (*e == '.') {
++                        e++;
++                        if (*e >= '0' && *e <= '9') {
++                                char *e2;
++
++                                /* strotoull itself would accept space/+/- */
++                                l2 = strtoull(e, &e2, 10);
++
++                                if (errno == ERANGE)
++                                        return -errno;
++
++                                /* Ignore failure. E.g. 10.M is valid */
++                                frac = l2;
++                                for (; e < e2; e++)
++                                        frac /= 10;
++                        }
++                }
++
+                 e += strspn(e, WHITESPACE);
+                 for (i = 0; i < ELEMENTSOF(table); i++)
+                         if (startswith(e, table[i].suffix)) {
+                                 unsigned long long tmp;
+-                                if ((unsigned long long) l > ULLONG_MAX / table[i].factor)
++                                if ((unsigned long long) l + (frac > 0) > ULLONG_MAX / table[i].factor)
+                                         return -ERANGE;
+-                                tmp = l * table[i].factor;
++                                tmp = l * table[i].factor + (unsigned long long) (frac * table[i].factor);
+                                 if (tmp > ULLONG_MAX - r)
+                                         return -ERANGE;
diff --git a/debian/patches/Configurable-Timeouts-Restarts-default-values.patch b/debian/patches/Configurable-Timeouts-Restarts-default-values.patch
new file mode 100644 (file)
index 0000000..7ddf7ea
--- /dev/null
@@ -0,0 +1,292 @@
+From: Oleksii Shevchuk <alxchk@gmail.com>
+Date: Mon, 4 Nov 2013 18:47:43 +0200
+Subject: Configurable Timeouts/Restarts default values
+
+https://bugs.freedesktop.org/show_bug.cgi?id=71132
+
+Patch adds DefaultTimeoutStartSec, DefaultTimeoutStopSec, DefaultRestartSec
+configuration options to manager configuration file.
+---
+ man/systemd-system.conf.xml | 24 +++++++++++++++++++++++-
+ man/systemd.mount.xml       |  4 ++--
+ man/systemd.service.xml     |  6 ++++--
+ man/systemd.socket.xml      |  4 ++--
+ man/systemd.swap.xml        |  4 ++--
+ src/core/device.c           |  2 +-
+ src/core/main.c             |  9 +++++++++
+ src/core/manager.h          |  3 +++
+ src/core/mount.c            |  2 +-
+ src/core/scope.c            |  2 +-
+ src/core/service.c          |  6 +++---
+ src/core/socket.c           |  2 +-
+ src/core/swap.c             |  2 +-
+ src/core/system.conf        |  3 +++
+ src/core/user.conf          |  3 +++
+ 15 files changed, 59 insertions(+), 17 deletions(-)
+
+diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
+index e8cf8a9..c1f2648 100644
+--- a/man/systemd-system.conf.xml
++++ b/man/systemd-system.conf.xml
+@@ -61,7 +61,6 @@
+                 otherwise <filename>user.conf</filename>. These
+                 configuration files contain a few settings controlling
+                 basic manager operations.</para>
+-
+         </refsect1>
+         <refsect1>
+@@ -95,6 +94,29 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><varname>DefaultTimeoutStartSec=</varname></term>
++                                <term><varname>DefaultTimeoutStopSec=</varname></term>
++                                <term><varname>DefaultRestartSec=</varname></term>
++
++                                <listitem><para>Configures the default
++                                time-outs for starting and stopping of
++                                units, as well as the default time to
++                                sleep between automatic restarts of a
++                                units, as configured per-unit in
++                                <varname>TimeoutStartSec=</varname>,
++                                <varname>TimeoutStopSec=</varname> and
++                                <varname>RestartSec=</varname> (for
++                                service units see
++                                <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++                                for details on the per-unit
++                                settings). For non-service units
++                                <varname>DefaultTimeoutStartSec=</varname>
++                                sets the default
++                                <varname>TimeoutSec=</varname> value.
++                                </para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
+                                 <term><varname>CPUAffinity=</varname></term>
+                                 <listitem><para>Configures the initial
+diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
+index 48af1ca..71a5736 100644
+--- a/man/systemd.mount.xml
++++ b/man/systemd.mount.xml
+@@ -260,8 +260,8 @@
+                                 Takes a unit-less value in seconds, or
+                                 a time span value such as "5min
+                                 20s". Pass 0 to disable the timeout
+-                                logic. Defaults to
+-                                90s.</para></listitem>
++                                logic. Default value is setted up in manager configuration
++                                file via <term><varname>DefaultTimeoutStart=</varname></term>.</para></listitem>
+                         </varlistentry>
+                 </variablelist>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 5e1ddf7..df04048 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -524,7 +524,8 @@
+                                 Takes a unit-less value in seconds, or a
+                                 time span value such as "5min
+                                 20s". Pass 0 to disable the timeout
+-                                logic. Defaults to 90s, except when
++                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
++                                manager configuration file, except when
+                                 <varname>Type=oneshot</varname> is
+                                 used in which case the timeout
+                                 is disabled by default.
+@@ -545,7 +546,8 @@
+                                 Takes a unit-less value in seconds, or a
+                                 time span value such as "5min
+                                 20s". Pass 0 to disable the timeout
+-                                logic. Defaults to 90s.
++                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
++                                manager configuration file.
+                                 </para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index 8c88d9f..1c78562 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -679,8 +679,8 @@
+                                 Takes a unit-less value in seconds, or
+                                 a time span value such as "5min
+                                 20s". Pass 0 to disable the timeout
+-                                logic. Defaults to
+-                                90s.</para></listitem>
++                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
++                                manager configuration file.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
+index 813ae6c..13f6c84 100644
+--- a/man/systemd.swap.xml
++++ b/man/systemd.swap.xml
+@@ -186,8 +186,8 @@
+                                 Takes a unit-less value in seconds, or
+                                 a time span value such as "5min
+                                 20s". Pass 0 to disable the timeout
+-                                logic. Defaults to
+-                                90s.</para></listitem>
++                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
++                                manager configuration file.</para></listitem>
+                         </varlistentry>
+                 </variablelist>
+diff --git a/src/core/device.c b/src/core/device.c
+index 9fca82a..5397bd6 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -70,7 +70,7 @@ static void device_init(Unit *u) {
+          * indefinitely for plugged in devices, something which cannot
+          * happen for the other units since their operations time out
+          * anyway. */
+-        UNIT(d)->job_timeout = DEFAULT_TIMEOUT_USEC;
++        UNIT(d)->job_timeout = u->manager->default_timeout_start_usec;
+         UNIT(d)->ignore_on_isolate = true;
+         UNIT(d)->ignore_on_snapshot = true;
+diff --git a/src/core/main.c b/src/core/main.c
+index fe291f8..937994c 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -90,6 +90,9 @@ static bool arg_switched_root = false;
+ static char ***arg_join_controllers = NULL;
+ static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL;
+ static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT;
++static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC;
++static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC;
++static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
+ static usec_t arg_runtime_watchdog = 0;
+ static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE;
+ static char **arg_default_environment = NULL;
+@@ -636,6 +639,9 @@ static int parse_config_file(void) {
+                 { "Manager", "CPUAffinity",           config_parse_cpu_affinity2, 0, NULL                    },
+                 { "Manager", "DefaultStandardOutput", config_parse_output,       0, &arg_default_std_output  },
+                 { "Manager", "DefaultStandardError",  config_parse_output,       0, &arg_default_std_error   },
++                { "Manager", "DefaultTimeoutStartSec", config_parse_sec,         0, &arg_default_timeout_start_usec },
++                { "Manager", "DefaultTimeoutStopSec", config_parse_sec,          0, &arg_default_timeout_stop_usec  },
++                { "Manager", "DefaultRestartSec",     config_parse_sec,          0, &arg_default_restart_usec  },
+                 { "Manager", "JoinControllers",       config_parse_join_controllers, 0, &arg_join_controllers },
+                 { "Manager", "RuntimeWatchdogSec",    config_parse_sec,          0, &arg_runtime_watchdog    },
+                 { "Manager", "ShutdownWatchdogSec",   config_parse_sec,          0, &arg_shutdown_watchdog   },
+@@ -1542,6 +1548,9 @@ int main(int argc, char *argv[]) {
+         m->confirm_spawn = arg_confirm_spawn;
+         m->default_std_output = arg_default_std_output;
+         m->default_std_error = arg_default_std_error;
++        m->default_restart_usec = arg_default_restart_usec;
++        m->default_timeout_start_usec = arg_default_timeout_start_usec;
++        m->default_timeout_stop_usec = arg_default_timeout_stop_usec;
+         m->runtime_watchdog = arg_runtime_watchdog;
+         m->shutdown_watchdog = arg_shutdown_watchdog;
+         m->userspace_timestamp = userspace_timestamp;
+diff --git a/src/core/manager.h b/src/core/manager.h
+index a3049b5..e74c609 100644
+--- a/src/core/manager.h
++++ b/src/core/manager.h
+@@ -230,6 +230,9 @@ struct Manager {
+         ExecOutput default_std_output, default_std_error;
++        usec_t default_restart_usec, default_timeout_start_usec,
++                default_timeout_stop_usec;
++
+         struct rlimit *rlimit[RLIMIT_NLIMITS];
+         /* non-zero if we are reloading or reexecuting, */
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 70cd372..c0445a6 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -131,7 +131,7 @@ static void mount_init(Unit *u) {
+         assert(u);
+         assert(u->load_state == UNIT_STUB);
+-        m->timeout_usec = DEFAULT_TIMEOUT_USEC;
++        m->timeout_usec = u->manager->default_timeout_start_usec;
+         m->directory_mode = 0755;
+         exec_context_init(&m->exec_context);
+diff --git a/src/core/scope.c b/src/core/scope.c
+index 50e5dba..41da3b9 100644
+--- a/src/core/scope.c
++++ b/src/core/scope.c
+@@ -46,7 +46,7 @@ static void scope_init(Unit *u) {
+         assert(u);
+         assert(u->load_state == UNIT_STUB);
+-        s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
++        s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
+         watch_init(&s->timer_watch);
+diff --git a/src/core/service.c b/src/core/service.c
+index 96ed2d3..e81aa1f 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -124,9 +124,9 @@ static void service_init(Unit *u) {
+         assert(u);
+         assert(u->load_state == UNIT_STUB);
+-        s->timeout_start_usec = DEFAULT_TIMEOUT_USEC;
+-        s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
+-        s->restart_usec = DEFAULT_RESTART_USEC;
++        s->timeout_start_usec = u->manager->default_timeout_start_usec;
++        s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
++        s->restart_usec = u->manager->default_restart_usec;
+         s->type = _SERVICE_TYPE_INVALID;
+         watch_init(&s->watchdog_watch);
+diff --git a/src/core/socket.c b/src/core/socket.c
+index 6c0ac1a..d368f7e 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -73,7 +73,7 @@ static void socket_init(Unit *u) {
+         assert(u->load_state == UNIT_STUB);
+         s->backlog = SOMAXCONN;
+-        s->timeout_usec = DEFAULT_TIMEOUT_USEC;
++        s->timeout_usec = u->manager->default_timeout_start_usec;
+         s->directory_mode = 0755;
+         s->socket_mode = 0666;
+diff --git a/src/core/swap.c b/src/core/swap.c
+index a68ab7c..147f710 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -86,7 +86,7 @@ static void swap_init(Unit *u) {
+         assert(s);
+         assert(UNIT(s)->load_state == UNIT_STUB);
+-        s->timeout_usec = DEFAULT_TIMEOUT_USEC;
++        s->timeout_usec = u->manager->default_timeout_start_usec;
+         exec_context_init(&s->exec_context);
+         s->exec_context.std_output = u->manager->default_std_output;
+diff --git a/src/core/system.conf b/src/core/system.conf
+index 7b03c87..3c6cc03 100644
+--- a/src/core/system.conf
++++ b/src/core/system.conf
+@@ -24,6 +24,9 @@
+ #ShutdownWatchdogSec=10min
+ #CapabilityBoundingSet=
+ #TimerSlackNSec=
++#DefaultTimeoutStartSec=90s
++#DefaultTimeoutStopSec=90s
++#DefaultRestartSec=100ms
+ #DefaultEnvironment=
+ #DefaultLimitCPU=
+ #DefaultLimitFSIZE=
+diff --git a/src/core/user.conf b/src/core/user.conf
+index 4a0129a..b030701 100644
+--- a/src/core/user.conf
++++ b/src/core/user.conf
+@@ -14,3 +14,6 @@
+ #LogLocation=no
+ #DefaultStandardOutput=inherit
+ #DefaultStandardError=inherit
++#DefaultTimeoutStartSec=90s
++#DefaultTimeoutStopSec=90s
++#DefaultRestartSec=100ms
diff --git a/debian/patches/DEFAULT_PATH_SPLIT_USR-macro.patch b/debian/patches/DEFAULT_PATH_SPLIT_USR-macro.patch
new file mode 100644 (file)
index 0000000..c77b70c
--- /dev/null
@@ -0,0 +1,43 @@
+From: Shawn Landden <shawn@churchofgit.com>
+Date: Fri, 20 Dec 2013 15:35:38 -0800
+Subject: DEFAULT_PATH_SPLIT_USR macro
+
+(cherry picked from commit e10a55fd72b5246cec1bbd09135d544db32e0414)
+---
+ src/nspawn/nspawn.c    | 2 +-
+ src/shared/path-util.h | 7 +++++--
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 618f9c3..cafc306 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -1227,7 +1227,7 @@ int main(int argc, char *argv[]) {
+                         gid_t gid = (gid_t) -1;
+                         unsigned n_env = 2;
+                         const char *envp[] = {
+-                                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
++                                "PATH=" DEFAULT_PATH_SPLIT_USR,
+                                 "container=systemd-nspawn", /* LXC sets container=lxc, so follow the scheme here */
+                                 NULL, /* TERM */
+                                 NULL, /* HOME */
+diff --git a/src/shared/path-util.h b/src/shared/path-util.h
+index 0a42de7..1e58e1b 100644
+--- a/src/shared/path-util.h
++++ b/src/shared/path-util.h
+@@ -25,10 +25,13 @@
+ #include "macro.h"
++#define DEFAULT_PATH_NORMAL "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
++#define DEFAULT_PATH_SPLIT_USR DEFAULT_PATH_NORMAL ":/sbin:/bin"
++
+ #ifdef HAVE_SPLIT_USR
+-#  define DEFAULT_PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
++#  define DEFAULT_PATH DEFAULT_PATH_SPLIT_USR
+ #else
+-#  define DEFAULT_PATH "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
++#  define DEFAULT_PATH DEFAULT_PATH_NORMAL
+ #endif
+ bool is_path(const char *p) _pure_;
diff --git a/debian/patches/Do-not-print-invalid-UTF-8-in-error-messages.patch b/debian/patches/Do-not-print-invalid-UTF-8-in-error-messages.patch
new file mode 100644 (file)
index 0000000..f8d598a
--- /dev/null
@@ -0,0 +1,122 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 4 Mar 2014 09:50:26 -0500
+Subject: Do not print invalid UTF-8 in error messages
+
+Inexplicably, 550a40ec ('core: do not print invalid utf-8 in error
+messages') only fixed two paths. Convert all of them now.
+
+(cherry picked from commit b5d742138f71e87312541a89aac5657015f50f48)
+
+Conflicts:
+       src/core/load-fragment.c
+       src/shared/conf-parser.c
+---
+ src/core/load-fragment.c | 11 +++--------
+ src/shared/conf-parser.c |  6 ++----
+ src/shared/conf-parser.h |  6 ++++++
+ src/shared/fileio.c      |  9 ++++++---
+ 4 files changed, 17 insertions(+), 15 deletions(-)
+
+diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
+index f01843d..d6ac4f6 100644
+--- a/src/core/load-fragment.c
++++ b/src/core/load-fragment.c
+@@ -515,9 +515,7 @@ int config_parse_exec(const char *unit,
+                                 }
+                                 if (!utf8_is_valid(path)) {
+-                                        log_syntax(unit, LOG_ERR, filename, line, EINVAL,
+-                                                   "Path is not UTF-8 clean, ignoring assignment: %s",
+-                                                   rvalue);
++                                        log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
+                                         r = 0;
+                                         goto fail;
+                                 }
+@@ -532,9 +530,7 @@ int config_parse_exec(const char *unit,
+                                 }
+                                 if (!utf8_is_valid(c)) {
+-                                        log_syntax(unit, LOG_ERR, filename, line, EINVAL,
+-                                                   "Path is not UTF-8 clean, ignoring assignment: %s",
+-                                                   rvalue);
++                                        log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
+                                         r = 0;
+                                         goto fail;
+                                 }
+@@ -1803,8 +1799,7 @@ int config_parse_unit_requires_mounts_for(
+                         return log_oom();
+                 if (!utf8_is_valid(n)) {
+-                        log_syntax(unit, LOG_ERR, filename, line, EINVAL,
+-                                   "Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
++                        log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
+                         continue;
+                 }
+diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
+index 6085d33..4ac71ed 100644
+--- a/src/shared/conf-parser.c
++++ b/src/shared/conf-parser.c
+@@ -607,8 +607,7 @@ int config_parse_path(const char *unit,
+         assert(data);
+         if (!utf8_is_valid(rvalue)) {
+-                log_syntax(unit, LOG_ERR, filename, line, EINVAL,
+-                           "Path is not UTF-8 clean, ignoring assignment: %s", rvalue);
++                log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
+                 return 0;
+         }
+@@ -675,8 +674,7 @@ int config_parse_strv(const char *unit,
+                         return log_oom();
+                 if (!utf8_is_valid(n)) {
+-                        log_syntax(unit, LOG_ERR, filename, line, EINVAL,
+-                                   "String is not UTF-8 clean, ignoring: %s", rvalue);
++                        log_invalid_utf8(unit, LOG_ERR, filename, line, EINVAL, rvalue);
+                         continue;
+                 }
+diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h
+index 08428a5..247e562 100644
+--- a/src/shared/conf-parser.h
++++ b/src/shared/conf-parser.h
+@@ -122,6 +122,12 @@ int log_syntax_internal(const char *unit, int level,
+                             config_file, config_line,                   \
+                             error, __VA_ARGS__)
++#define log_invalid_utf8(unit, level, config_file, config_line, error, rvalue) { \
++        _cleanup_free_ char *__p = utf8_escape_invalid(rvalue);                  \
++        log_syntax(unit, level, config_file, config_line, error,                 \
++                   "String is not UTF-8 clean, ignoring assignment: %s", __p);   \
++        }
++
+ #define DEFINE_CONFIG_PARSE_ENUM(function,name,type,msg)                \
+         int function(const char *unit,                                  \
+                      const char *filename,                              \
+diff --git a/src/shared/fileio.c b/src/shared/fileio.c
+index 121cd57..0586e33 100644
+--- a/src/shared/fileio.c
++++ b/src/shared/fileio.c
+@@ -526,15 +526,18 @@ static int load_env_file_push(const char *filename, unsigned line,
+         int r;
+         if (!utf8_is_valid(key)) {
++                _cleanup_free_ char *t = utf8_escape_invalid(key);
++
+                 log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.",
+-                          filename, line, key);
++                          filename, line, t);
+                 return -EINVAL;
+         }
+         if (value && !utf8_is_valid(value)) {
+-                /* FIXME: filter UTF-8 */
++                _cleanup_free_ char *t = utf8_escape_invalid(value);
++
+                 log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.",
+-                          filename, line, key, value);
++                          filename, line, key, t);
+                 return -EINVAL;
+         }
diff --git a/debian/patches/Do-not-unescape-unit-names-in-Install-section.patch b/debian/patches/Do-not-unescape-unit-names-in-Install-section.patch
new file mode 100644 (file)
index 0000000..2bada4c
--- /dev/null
@@ -0,0 +1,24 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 26 May 2014 20:09:45 +0200
+Subject: Do not unescape unit names in [Install] section
+
+https://bugs.freedesktop.org/show_bug.cgi?id=49316
+(cherry picked from commit 000f6e5667eb4f73e137cbd0d7395a9f9db7728a)
+(cherry picked from commit 6a5aa37d144cf0d2be355324e78ff320556628a5)
+---
+ src/shared/conf-parser.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
+index e206b5b..348a540 100644
+--- a/src/shared/conf-parser.c
++++ b/src/shared/conf-parser.c
+@@ -669,7 +669,7 @@ int config_parse_strv(const char *unit,
+         FOREACH_WORD_QUOTED(w, l, rvalue, state) {
+                 _cleanup_free_ char *n;
+-                n = cunescape_length(w, l);
++                n = strndup(w, l);
+                 if (!n)
+                         return log_oom();
diff --git a/debian/patches/Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch b/debian/patches/Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch
new file mode 100644 (file)
index 0000000..5f7b4df
--- /dev/null
@@ -0,0 +1,34 @@
+From: Dan McGee <dan@archlinux.org>
+Date: Sun, 8 Dec 2013 13:27:05 -0600
+Subject: Ensure unit is journaled for short-lived or oneshot processes
+
+In the time it takes to process incoming log messages, the process we
+are logging details for may exit. This means the cgroup data is no
+longer available from '/proc'. Unfortunately, the way the code was
+structured before, we never log _SYSTEMD_UNIT if we don't have this
+cgroup information.
+
+Add an else if case that allows the passed in unit_id to be logged even
+if we couldn't capture cgroup information. This ensures a command like
+`journalctl -u run-XXX` will return all log messages from a oneshot
+process.
+
+(cherry picked from commit 2d43b190901902dbd98ccea77c1d1ddc9e2a9955)
+---
+ src/journal/journald-server.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index a0a8e9c..1fcb3d5 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -626,6 +626,9 @@ static void dispatch_message_real(
+                         }
+                         free(c);
++                } else if (unit_id) {
++                        x = strappenda("_SYSTEMD_UNIT=", unit_id);
++                        IOVEC_SET_STRING(iovec[n++], x);
+                 }
+ #ifdef HAVE_SELINUX
diff --git a/debian/patches/Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch b/debian/patches/Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch
new file mode 100644 (file)
index 0000000..ee834d6
--- /dev/null
@@ -0,0 +1,53 @@
+From: Olivier Brunel <jjk@jjacky.com>
+Date: Thu, 14 Nov 2013 15:52:54 +0100
+Subject: Fix RemainAfterExit services keeping a hold on console
+
+When a service exits succesfully and has RemainAfterExit set, its hold
+on the console (in m->n_on_console) wasn't released since the unit state
+didn't change.
+---
+ src/core/service.c | 16 ++++++++++++++++
+ src/core/unit.c    |  3 +++
+ 2 files changed, 19 insertions(+)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index 5662180..62ae8f0 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -1570,6 +1570,22 @@ static void service_set_state(Service *s, ServiceState state) {
+         if (state == SERVICE_EXITED && UNIT(s)->manager->n_reloading <= 0)
+                 unit_destroy_cgroup(UNIT(s));
++        /* For remain_after_exit services, let's see if we can "release" the
++         * hold on the console, since unit_notify() only does that in case of
++         * change of state */
++        if (state == SERVICE_EXITED && s->remain_after_exit &&
++            UNIT(s)->manager->n_on_console > 0) {
++                ExecContext *ec = unit_get_exec_context(UNIT(s));
++                if (ec && exec_context_may_touch_console(ec)) {
++                        Manager *m = UNIT(s)->manager;
++
++                        m->n_on_console --;
++                        if (m->n_on_console == 0)
++                                /* unset no_console_output flag, since the console is free */
++                                m->no_console_output = false;
++                }
++        }
++
+         if (old_state != state)
+                 log_debug_unit(UNIT(s)->id,
+                                "%s changed %s -> %s", UNIT(s)->id,
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 717ce84..b65e798 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1446,6 +1446,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
+         if (UNIT_IS_INACTIVE_OR_FAILED(ns))
+                 unit_destroy_cgroup(u);
++        /* Note that this doesn't apply to RemainAfterExit services exiting
++         * sucessfully, since there's no change of state in that case. Which is
++         * why it is handled in service_set_state() */
+         if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) {
+                 ExecContext *ec = unit_get_exec_context(u);
+                 if (ec && exec_context_may_touch_console(ec)) {
diff --git a/debian/patches/Fix-a-few-resource-leaks-in-error-paths.patch b/debian/patches/Fix-a-few-resource-leaks-in-error-paths.patch
new file mode 100644 (file)
index 0000000..6f4cb99
--- /dev/null
@@ -0,0 +1,67 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 15 Dec 2013 16:25:04 -0500
+Subject: Fix a few resource leaks in error paths
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1043304
+(cherry picked from commit 2fd069b18e525860514a70d3ea08410ca122d3e2)
+
+Conflicts:
+       src/libsystemd-bus/bus-objects.c
+       src/udev/net/link-config.c
+---
+ src/sleep/sleep.c | 15 +++++++--------
+ 1 file changed, 7 insertions(+), 8 deletions(-)
+
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index a56ab89..f96987f 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -57,15 +57,14 @@ static int write_mode(char **modes) {
+         return r;
+ }
+-static int write_state(FILE *f0, char **states) {
+-        FILE _cleanup_fclose_ *f = f0;
++static int write_state(FILE **f, char **states) {
+         char **state;
+         int r = 0;
+         STRV_FOREACH(state, states) {
+                 int k;
+-                k = write_string_to_file(f, *state);
++                k = write_string_to_file(*f, *state);
+                 if (k == 0)
+                         return 0;
+                 log_debug("Failed to write '%s' to /sys/power/state: %s",
+@@ -73,9 +72,9 @@ static int write_state(FILE *f0, char **states) {
+                 if (r == 0)
+                         r = k;
+-                fclose(f);
+-                f = fopen("/sys/power/state", "we");
+-                if (!f) {
++                fclose(*f);
++                *f = fopen("/sys/power/state", "we");
++                if (!*f) {
+                         log_error("Failed to open /sys/power/state: %m");
+                         return -errno;
+                 }
+@@ -87,7 +86,7 @@ static int write_state(FILE *f0, char **states) {
+ static int execute(char **modes, char **states) {
+         char* arguments[4];
+         int r;
+-        FILE *f;
++        _cleanup_fclose_ FILE *f = NULL;
+         const char* note = strappenda("SLEEP=", arg_verb);
+         /* This file is opened first, so that if we hit an error,
+@@ -115,7 +114,7 @@ static int execute(char **modes, char **states) {
+                    note,
+                    NULL);
+-        r = write_state(f, states);
++        r = write_state(&f, states);
+         if (r < 0)
+                 return r;
diff --git a/debian/patches/Fix-a-few-signed-unsigned-format-string-issues.patch b/debian/patches/Fix-a-few-signed-unsigned-format-string-issues.patch
new file mode 100644 (file)
index 0000000..4414d11
--- /dev/null
@@ -0,0 +1,81 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 15 Dec 2013 16:26:27 -0500
+Subject: Fix a few signed/unsigned format string issues
+
+Since numbers involved are all small, behaviour was correct already.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1043304
+(cherry picked from commit b5dd8148730db080b48b874c214f8f74ae787d6b)
+---
+ src/shared/time-util.c         |  2 +-
+ src/udev/udev-builtin-net_id.c | 21 +++++++--------------
+ 2 files changed, 8 insertions(+), 15 deletions(-)
+
+diff --git a/src/shared/time-util.c b/src/shared/time-util.c
+index 81d4ede..d31401b 100644
+--- a/src/shared/time-util.c
++++ b/src/shared/time-util.c
+@@ -382,7 +382,7 @@ void dual_timestamp_deserialize(const char *value, dual_timestamp *t) {
+         assert(value);
+         assert(t);
+-        if (sscanf(value, "%lli %llu", &a, &b) != 2)
++        if (sscanf(value, "%llu %llu", &a, &b) != 2)
+                 log_debug("Failed to parse finish timestamp value %s", value);
+         else {
+                 t->realtime = a;
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 9ae8f08..9bc1946 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -166,23 +166,17 @@ out:
+ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+         struct udev *udev = udev_device_get_udev(names->pcidev);
+-        unsigned int domain;
+-        unsigned int bus;
+-        unsigned int slot;
+-        unsigned int func;
+-        unsigned int dev_id = 0;
++        unsigned domain, bus, slot, func, dev_id = 0;
+         size_t l;
+         char *s;
+         const char *attr;
+         struct udev_device *pci = NULL;
+-        char slots[256];
+-        DIR *dir;
++        char slots[256], str[256];
++        _cleanup_closedir_ DIR *dir = NULL;
+         struct dirent *dent;
+-        char str[256];
+-        int hotplug_slot = 0;
+-        int err = 0;
++        int hotplug_slot = 0, err = 0;
+-        if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%d", &domain, &bus, &slot, &func) != 4)
++        if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%u", &domain, &bus, &slot, &func) != 4)
+                 return -ENOENT;
+         /* kernel provided multi-device index */
+@@ -239,7 +233,6 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+                 if (hotplug_slot > 0)
+                         break;
+         }
+-        closedir(dir);
+         if (hotplug_slot > 0) {
+                 s = names->pci_slot;
+@@ -341,11 +334,11 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) {
+                 return -ENOENT;
+         /* bus num:core num */
+-        if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*d:%d", &core) != 1)
++        if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*u:%u", &core) != 1)
+                 return -EINVAL;
+         /* suppress the common core == 0 */
+         if (core > 0)
+-                snprintf(names->bcma_core, sizeof(names->bcma_core), "b%d", core);
++                snprintf(names->bcma_core, sizeof(names->bcma_core), "b%u", core);
+         names->type = NET_BCMA;
+         return 0;
diff --git a/debian/patches/Fix-bad-assert-in-show_pid_array.patch b/debian/patches/Fix-bad-assert-in-show_pid_array.patch
new file mode 100644 (file)
index 0000000..eb60471
--- /dev/null
@@ -0,0 +1,34 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 14 Oct 2013 19:15:24 -0400
+Subject: Fix bad assert in show_pid_array
+
+This function should get the same treatment as other qsort uses
+did in 7ff7394 "Never call qsort on potentially NULL arrays".
+
+Reported-by: Oleksii Shevchuk <alxchk@gmail.com>
+---
+ src/shared/cgroup-show.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
+index cc44ab4..aa0f017 100644
+--- a/src/shared/cgroup-show.c
++++ b/src/shared/cgroup-show.c
+@@ -44,8 +44,6 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
+         unsigned i, m, pid_width;
+         pid_t biggest = 0;
+-        assert(n_pids > 0);
+-
+         /* Filter duplicates */
+         m = 0;
+         for (i = 0; i < n_pids; i++) {
+@@ -65,7 +63,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
+         pid_width = DECIMAL_STR_WIDTH(biggest);
+         /* And sort */
+-        qsort(pids, n_pids, sizeof(pid_t), compare);
++        qsort_safe(pids, n_pids, sizeof(pid_t), compare);
+         if(flags & OUTPUT_FULL_WIDTH)
+                 n_columns = 0;
diff --git a/debian/patches/Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch b/debian/patches/Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
new file mode 100644 (file)
index 0000000..9bada76
--- /dev/null
@@ -0,0 +1,29 @@
+From: Igor Zhbanov <i.zhbanov@samsung.com>
+Date: Tue, 15 Oct 2013 14:35:13 +0400
+Subject: Fix for SIGSEGV in systemd-bootchart on short-living processes
+
+The function svg_ps_bars() dereferencess NULL pointer in the line
+       endtime = ps->last->sampledata->sampletime;
+because of partially initialized ps_struct (ps->last == NULL).
+
+If some process terminates between scaning /proc directory in the log_sample()
+function and reading additional information from /proc/PID/... files,
+the files couldn't be read, the loop will be continued and partially
+initialized structure returned.
+---
+ src/bootchart/store.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bootchart/store.c b/src/bootchart/store.c
+index f8c97c2..7f86cfe 100644
+--- a/src/bootchart/store.c
++++ b/src/bootchart/store.c
+@@ -275,7 +275,7 @@ schedstat_next:
+                         pscount++;
+                         /* mark our first sample */
+-                        ps->first = ps->sample;
++                        ps->first = ps->last = ps->sample;
+                         ps->sample->runtime = atoll(rt);
+                         ps->sample->waittime = atoll(wt);
diff --git a/debian/patches/Fix-instance-argument-for-systemd-backlight-.service.patch b/debian/patches/Fix-instance-argument-for-systemd-backlight-.service.patch
new file mode 100644 (file)
index 0000000..5113ef2
--- /dev/null
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 20 Jun 2014 08:10:36 -0400
+Subject: Fix instance argument for systemd-backlight@.service
+
+When backporting patches, I lost "backlight:" in the udev rule.
+---
+ rules/99-systemd.rules.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index dd6e7f1..713e052 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -57,8 +57,8 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy
+ # Pull in backlight save/restore for all backlight devices and
+ # keyboard backlights
+-SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+-SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
++SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@backlight:$name.service"
++SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@leds:$name.service"
+ # Asynchronously mount file systems implemented by these modules as
+ # soon as they are loaded.
diff --git a/debian/patches/Fix-keysize-handling-in-cryptsetup-bits-vs.-bytes.patch b/debian/patches/Fix-keysize-handling-in-cryptsetup-bits-vs.-bytes.patch
new file mode 100644 (file)
index 0000000..ae36ef4
--- /dev/null
@@ -0,0 +1,57 @@
+From: =?utf-8?q?David_H=C3=A4rdeman?= <david@hardeman.nu>
+Date: Tue, 25 Mar 2014 11:05:28 +0100
+Subject: Fix keysize handling in cryptsetup (bits vs. bytes)
+
+The command line key-size is in bits but the libcryptsetup API expects bytes.
+
+Note that the modulo 8 check is in the original cryptsetup binary as well, so
+it's no new limitation.
+
+(v2: changed the point at which the /= 8 is performed, rebased, removed tabs)
+
+(cherry picked from commit 6131a78b4d247618715e042e14ad682f678d3b32)
+
+Conflicts:
+       src/cryptsetup/cryptsetup.c
+
+(cherry picked from commit 19ef179118bcf92b7290669edf7e38e12f1a80d6)
+---
+ src/cryptsetup/cryptsetup.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
+index 6a76d21..1211433 100644
+--- a/src/cryptsetup/cryptsetup.c
++++ b/src/cryptsetup/cryptsetup.c
+@@ -88,6 +88,13 @@ static int parse_one_option(const char *option) {
+                         return 0;
+                 }
++                if (opt_key_size % 8) {
++                        log_error("size= not a multiple of 8, ignoring.");
++                        return 0;
++                }
++
++                opt_key_size /= 8;
++
+         } else if (startswith(option, "key-slot=")) {
+                 opt_type = CRYPT_LUKS1;
+@@ -414,7 +421,7 @@ static int attach_luks_or_plain(struct crypt_device *cd,
+                 /* for CRYPT_PLAIN limit reads
+                  * from keyfile to key length, and
+                  * ignore keyfile-size */
+-                opt_keyfile_size = opt_key_size / 8;
++                opt_keyfile_size = opt_key_size;
+                 /* In contrast to what the name
+                  * crypt_setup() might suggest this
+@@ -577,7 +584,7 @@ int main(int argc, char *argv[]) {
+                 else
+                         until = 0;
+-                opt_key_size = (opt_key_size > 0 ? opt_key_size : 256);
++                opt_key_size = (opt_key_size > 0 ? opt_key_size : (256 / 8));
+                 if (key_file) {
+                         struct stat st;
diff --git a/debian/patches/Fix-kmod-error-message-to-have-correct-version-requi.patch b/debian/patches/Fix-kmod-error-message-to-have-correct-version-requi.patch
new file mode 100644 (file)
index 0000000..2fb0290
--- /dev/null
@@ -0,0 +1,21 @@
+From: David Strauss <david@davidstrauss.net>
+Date: Thu, 17 Oct 2013 13:19:29 -0700
+Subject: Fix kmod error message to have correct version requirement
+
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 5bc31c5..9904e25 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -271,7 +271,7 @@ if test "x$enable_kmod" != "xno"; then
+         if test "x$have_kmod" = "xyes"; then
+                 PKG_CHECK_MODULES(KMOD, [ libkmod >= 15 ],
+                         [AC_DEFINE(HAVE_KMOD, 1, [Define if kmod is available])],
+-                        AC_MSG_ERROR([*** kmod version >= 14 not found]))
++                        AC_MSG_ERROR([*** kmod version >= 15 not found]))
+         fi
+         if test "x$have_kmod" = xno -a "x$enable_kmod" = xyes; then
+                 AC_MSG_ERROR([*** kmod support requested, but libraries not found])
diff --git a/debian/patches/Fix-memory-leak-in-stdout-journal-streams.patch b/debian/patches/Fix-memory-leak-in-stdout-journal-streams.patch
new file mode 100644 (file)
index 0000000..a12b10b
--- /dev/null
@@ -0,0 +1,24 @@
+From: Dan McGee <dan@archlinux.org>
+Date: Sun, 8 Dec 2013 14:33:45 -0600
+Subject: Fix memory leak in stdout journal streams
+
+Just as 'identifier' is strdup-ed and freed, we need to do the same for
+unit_id.
+
+(cherry picked from commit f92ae4968f070ef0ada61ba7cd585794fac404dd)
+---
+ src/journal/journald-stream.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
+index 9c4efec..4080622 100644
+--- a/src/journal/journald-stream.c
++++ b/src/journal/journald-stream.c
+@@ -339,6 +339,7 @@ void stdout_stream_free(StdoutStream *s) {
+ #endif
+         free(s->identifier);
++        free(s->unit_id);
+         free(s);
+ }
diff --git a/debian/patches/Fix-possible-lack-of-status-messages-on-shutdown-reb.patch b/debian/patches/Fix-possible-lack-of-status-messages-on-shutdown-reb.patch
new file mode 100644 (file)
index 0000000..b9315a9
--- /dev/null
@@ -0,0 +1,25 @@
+From: Olivier Brunel <jjk@jjacky.com>
+Date: Fri, 20 Sep 2013 22:18:30 +0200
+Subject: Fix possible lack of status messages on shutdown/reboot
+
+Since 31a7eb86 the output on console can be disabled to avoid colliding with
+gettys. However, it could also lead to a lack of messages during
+shutdown/reboot.
+---
+ src/core/job.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/core/job.c b/src/core/job.c
+index bf1d956..dc3bc12 100644
+--- a/src/core/job.c
++++ b/src/core/job.c
+@@ -1097,6 +1097,9 @@ void job_shutdown_magic(Job *j) {
+         if (!unit_has_name(j->unit, SPECIAL_SHUTDOWN_TARGET))
+                 return;
++        /* In case messages on console has been disabled on boot */
++        j->unit->manager->no_console_output = false;
++
+         if (detect_container(NULL) > 0)
+                 return;
diff --git a/debian/patches/Fix-prototype-of-get_process_state.patch b/debian/patches/Fix-prototype-of-get_process_state.patch
new file mode 100644 (file)
index 0000000..1c1e138
--- /dev/null
@@ -0,0 +1,21 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 14 Feb 2014 23:04:50 -0500
+Subject: Fix prototype of get_process_state
+
+---
+ src/shared/util.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/util.h b/src/shared/util.h
+index ca38336..02621a7 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -216,7 +216,7 @@ char *file_in_same_dir(const char *path, const char *filename);
+ int rmdir_parents(const char *path, const char *stop);
+-char get_process_state(pid_t pid);
++int get_process_state(pid_t pid);
+ int get_process_comm(pid_t pid, char **name);
+ int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line);
+ int get_process_exe(pid_t pid, char **name);
diff --git a/debian/patches/Introduce-udev-object-cleanup-functions.patch b/debian/patches/Introduce-udev-object-cleanup-functions.patch
new file mode 100644 (file)
index 0000000..6411373
--- /dev/null
@@ -0,0 +1,1039 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 12 Oct 2013 20:28:21 -0400
+Subject: Introduce udev object cleanup functions
+
+Conflicts:
+       src/gpt-auto-generator/gpt-auto-generator.c <-- skipped
+       src/shared/fdset.h
+       src/shared/util.h
+---
+ Makefile.am                      |   1 +
+ src/backlight/backlight.c        |  55 ++++++---------
+ src/core/umount.c                | 143 ++++++++++++++-------------------------
+ src/cryptsetup/cryptsetup.c      |  27 +++-----
+ src/fsck/fsck.c                  |  13 ++--
+ src/journal/journal-internal.h   |   7 +-
+ src/login/sysfs-show.c           |  22 ++----
+ src/readahead/readahead-common.c |  66 +++++++-----------
+ src/shared/fdset.h               |   3 +
+ src/shared/install.c             |   6 +-
+ src/shared/set.h                 |  10 +--
+ src/shared/strv.h                |   7 +-
+ src/shared/udev-util.h           |  37 ++++++++++
+ src/shared/util.h                |  32 ++++-----
+ src/test/test-libudev.c          |   8 +--
+ src/test/test-udev.c             |  21 +++---
+ src/tmpfiles/tmpfiles.c          |   5 +-
+ 17 files changed, 194 insertions(+), 269 deletions(-)
+ create mode 100644 src/shared/udev-util.h
+
+diff --git a/Makefile.am b/Makefile.am
+index efe5aa3..910e780 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -648,6 +648,7 @@ libsystemd_shared_la_SOURCES = \
+       src/shared/sparse-endian.h \
+       src/shared/util.c \
+       src/shared/util.h \
++      src/shared/udev-util.h \
+       src/shared/virt.c \
+       src/shared/virt.h \
+       src/shared/efivars.c \
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index f22deed..c45b2d0 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -19,15 +19,15 @@
+   along with systemd; If not, see <http://www.gnu.org/licenses/>.
+ ***/
+-#include <libudev.h>
+-
+ #include "util.h"
+ #include "mkdir.h"
+ #include "fileio.h"
++#include "libudev.h"
++#include "udev-util.h"
+ int main(int argc, char *argv[]) {
+-        struct udev *udev = NULL;
+-        struct udev_device *device = NULL;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+         _cleanup_free_ char *saved = NULL;
+         int r;
+@@ -45,13 +45,13 @@ int main(int argc, char *argv[]) {
+         r = mkdir_p("/var/lib/systemd/backlight", 0755);
+         if (r < 0) {
+                 log_error("Failed to create backlight directory: %s", strerror(-r));
+-                goto finish;
++                return EXIT_FAILURE;
+         }
+         udev = udev_new();
+         if (!udev) {
+-                r = log_oom();
+-                goto finish;
++                log_oom();
++                return EXIT_FAILURE;
+         }
+         errno = 0;
+@@ -59,26 +59,24 @@ int main(int argc, char *argv[]) {
+         if (!device)
+                 device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]);
+         if (!device) {
+-                if (errno != 0) {
++                if (errno != 0)
+                         log_error("Failed to get backlight device '%s': %m", argv[2]);
+-                        r = -errno;
+-                } else
++                else
+                         r = log_oom();
+-                goto finish;
++                return EXIT_FAILURE;
+         }
+         if (!streq_ptr(udev_device_get_subsystem(device), "backlight") &&
+             !streq_ptr(udev_device_get_subsystem(device), "leds")) {
+                 log_error("Not a backlight device: %s", argv[2]);
+-                r = -ENODEV;
+-                goto finish;
++                return EXIT_FAILURE;
+         }
+         saved = strappend("/var/lib/systemd/backlight/", udev_device_get_sysname(device));
+         if (!saved) {
+-                r = log_oom();
+-                goto finish;
++                log_oom();
++                return EXIT_FAILURE;
+         }
+         if (streq(argv[1], "load")) {
+@@ -87,19 +85,17 @@ int main(int argc, char *argv[]) {
+                 r = read_one_line_file(saved, &value);
+                 if (r < 0) {
+-                        if (r == -ENOENT) {
+-                                r = 0;
+-                                goto finish;
+-                        }
++                        if (r == -ENOENT)
++                                return EXIT_SUCCESS;
+                         log_error("Failed to read %s: %s", saved, strerror(-r));
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+                 r = udev_device_set_sysattr_value(device, "brightness", value);
+                 if (r < 0) {
+                         log_error("Failed to write system attribute: %s", strerror(-r));
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+         } else if (streq(argv[1], "save")) {
+@@ -108,28 +104,19 @@ int main(int argc, char *argv[]) {
+                 value = udev_device_get_sysattr_value(device, "brightness");
+                 if (!value) {
+                         log_error("Failed to read system attribute: %s", strerror(-r));
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+                 r = write_string_file(saved, value);
+                 if (r < 0) {
+                         log_error("Failed to write %s: %s", saved, strerror(-r));
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+         } else {
+                 log_error("Unknown verb %s.", argv[1]);
+-                r = -EINVAL;
+-                goto finish;
++                return EXIT_FAILURE;
+         }
+-finish:
+-        if (device)
+-                udev_device_unref(device);
+-
+-        if (udev)
+-                udev_unref(udev);
+-
+-        return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+-
++        return EXIT_SUCCESS;
+ }
+diff --git a/src/core/umount.c b/src/core/umount.c
+index 1e95ad7..99dbe27 100644
+--- a/src/core/umount.c
++++ b/src/core/umount.c
+@@ -27,7 +27,6 @@
+ #include <unistd.h>
+ #include <linux/loop.h>
+ #include <linux/dm-ioctl.h>
+-#include <libudev.h>
+ #include "list.h"
+ #include "mount-setup.h"
+@@ -35,6 +34,8 @@
+ #include "path-util.h"
+ #include "util.h"
+ #include "virt.h"
++#include "libudev.h"
++#include "udev-util.h"
+ typedef struct MountPoint {
+         char *path;
+@@ -201,145 +202,108 @@ finish:
+ }
+ static int loopback_list_get(MountPoint **head) {
+-        int r;
+-        struct udev *udev;
+-        struct udev_enumerate *e = NULL;
++        _cleanup_udev_unref_ struct udev *udev;
++        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
+         struct udev_list_entry *item = NULL, *first = NULL;
+         assert(head);
+-        if (!(udev = udev_new())) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        udev = udev_new();
++        if (!udev)
++                return -ENOMEM;
+-        if (!(e = udev_enumerate_new(udev))) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        e = udev_enumerate_new(udev);
++        if (!e)
++                return -ENOMEM;
+         if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
+             udev_enumerate_add_match_sysname(e, "loop*") < 0 ||
+-            udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) {
+-                r = -EIO;
+-                goto finish;
+-        }
++            udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0)
++                return -EIO;
+-        if (udev_enumerate_scan_devices(e) < 0) {
+-                r = -EIO;
+-                goto finish;
+-        }
++        if (udev_enumerate_scan_devices(e) < 0)
++                return -EIO;
+         first = udev_enumerate_get_list_entry(e);
+         udev_list_entry_foreach(item, first) {
+                 MountPoint *lb;
+-                struct udev_device *d;
++                _cleanup_udev_device_unref_ struct udev_device *d;
+                 char *loop;
+                 const char *dn;
+-                if (!(d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)))) {
+-                        r = -ENOMEM;
+-                        goto finish;
+-                }
++                d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
++                if (!d)
++                        return -ENOMEM;
+-                if (!(dn = udev_device_get_devnode(d))) {
+-                        udev_device_unref(d);
++                dn = udev_device_get_devnode(d);
++                if (!dn)
+                         continue;
+-                }
+                 loop = strdup(dn);
+-                udev_device_unref(d);
+-
+-                if (!loop) {
+-                        r = -ENOMEM;
+-                        goto finish;
+-                }
++                if (!loop)
++                        return -ENOMEM;
+-                if (!(lb = new0(MountPoint, 1))) {
++                lb = new0(MountPoint, 1);
++                if (!lb) {
+                         free(loop);
+-                        r = -ENOMEM;
+-                        goto finish;
++                        return -ENOMEM;
+                 }
+                 lb->path = loop;
+                 LIST_PREPEND(MountPoint, mount_point, *head, lb);
+         }
+-        r = 0;
+-
+-finish:
+-        if (e)
+-                udev_enumerate_unref(e);
+-
+-        if (udev)
+-                udev_unref(udev);
+-
+-        return r;
++        return 0;
+ }
+ static int dm_list_get(MountPoint **head) {
+-        int r;
+-        struct udev *udev;
+-        struct udev_enumerate *e = NULL;
++        _cleanup_udev_unref_ struct udev *udev;
++        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
+         struct udev_list_entry *item = NULL, *first = NULL;
+         assert(head);
+-        if (!(udev = udev_new())) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        udev = udev_new();
++        if (!udev)
++                return -ENOMEM;
+-        if (!(e = udev_enumerate_new(udev))) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        e = udev_enumerate_new(udev);
++        if (!e)
++                return -ENOMEM;
+         if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
+-            udev_enumerate_add_match_sysname(e, "dm-*") < 0) {
+-                r = -EIO;
+-                goto finish;
+-        }
++            udev_enumerate_add_match_sysname(e, "dm-*") < 0)
++                return -EIO;
+-        if (udev_enumerate_scan_devices(e) < 0) {
+-                r = -EIO;
+-                goto finish;
+-        }
++        if (udev_enumerate_scan_devices(e) < 0)
++                return -EIO;
+         first = udev_enumerate_get_list_entry(e);
+         udev_list_entry_foreach(item, first) {
+                 MountPoint *m;
+-                struct udev_device *d;
++                _cleanup_udev_device_unref_ struct udev_device *d;
+                 dev_t devnum;
+                 char *node;
+                 const char *dn;
+-                if (!(d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)))) {
+-                        r = -ENOMEM;
+-                        goto finish;
+-                }
++                d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
++                if (!d)
++                        return -ENOMEM;
+                 devnum = udev_device_get_devnum(d);
+                 dn = udev_device_get_devnode(d);
+-
+-                if (major(devnum) == 0 || !dn) {
+-                        udev_device_unref(d);
++                if (major(devnum) == 0 || !dn)
+                         continue;
+-                }
+                 node = strdup(dn);
+-                udev_device_unref(d);
+-
+-                if (!node) {
+-                        r = -ENOMEM;
+-                        goto finish;
+-                }
++                if (!node)
++                        return -ENOMEM;
+-                if (!(m = new(MountPoint, 1))) {
++                m = new(MountPoint, 1);
++                if (!m) {
+                         free(node);
+-                        r = -ENOMEM;
+-                        goto finish;
++                        return -ENOMEM;
+                 }
+                 m->path = node;
+@@ -347,16 +311,7 @@ static int dm_list_get(MountPoint **head) {
+                 LIST_PREPEND(MountPoint, mount_point, *head, m);
+         }
+-        r = 0;
+-
+-finish:
+-        if (e)
+-                udev_enumerate_unref(e);
+-
+-        if (udev)
+-                udev_unref(udev);
+-
+-        return r;
++        return 0;
+ }
+ static int delete_loopback(const char *device) {
+diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
+index 769c3e4..39f7db7 100644
+--- a/src/cryptsetup/cryptsetup.c
++++ b/src/cryptsetup/cryptsetup.c
+@@ -25,7 +25,6 @@
+ #include <mntent.h>
+ #include <libcryptsetup.h>
+-#include <libudev.h>
+ #include "fileio.h"
+ #include "log.h"
+@@ -34,6 +33,8 @@
+ #include "strv.h"
+ #include "ask-password-api.h"
+ #include "def.h"
++#include "libudev.h"
++#include "udev-util.h"
+ static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */
+ static char *opt_cipher = NULL;
+@@ -184,7 +185,7 @@ static void log_glue(int level, const char *msg, void *usrptr) {
+         log_debug("%s", msg);
+ }
+-static char *disk_description(const char *path) {
++static char* disk_description(const char *path) {
+         static const char name_fields[] = {
+                 "ID_PART_ENTRY_NAME\0"
+@@ -193,10 +194,9 @@ static char *disk_description(const char *path) {
+                 "ID_MODEL\0"
+         };
+-        struct udev *udev = NULL;
+-        struct udev_device *device = NULL;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+         struct stat st;
+-        char *description = NULL;
+         const char *i;
+         assert(path);
+@@ -213,26 +213,17 @@ static char *disk_description(const char *path) {
+         device = udev_device_new_from_devnum(udev, 'b', st.st_rdev);
+         if (!device)
+-                goto finish;
++                return NULL;
+         NULSTR_FOREACH(i, name_fields) {
+                 const char *name;
+                 name = udev_device_get_property_value(device, i);
+-                if (!isempty(name)) {
+-                        description = strdup(name);
+-                        break;
+-                }
++                if (!isempty(name))
++                        return strdup(name);
+         }
+-finish:
+-        if (device)
+-                udev_device_unref(device);
+-
+-        if (udev)
+-                udev_unref(udev);
+-
+-        return description;
++        return NULL;
+ }
+ static char *disk_mount_point(const char *label) {
+diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
+index e23ddc5..9b4e555 100644
+--- a/src/fsck/fsck.c
++++ b/src/fsck/fsck.c
+@@ -27,7 +27,6 @@
+ #include <fcntl.h>
+ #include <sys/file.h>
+-#include <libudev.h>
+ #include <dbus/dbus.h>
+ #include "util.h"
+@@ -36,6 +35,8 @@
+ #include "bus-errors.h"
+ #include "virt.h"
+ #include "fileio.h"
++#include "libudev.h"
++#include "udev-util.h"
+ static bool arg_skip = false;
+ static bool arg_force = false;
+@@ -241,8 +242,8 @@ int main(int argc, char *argv[]) {
+         int i = 0, r = EXIT_FAILURE, q;
+         pid_t pid;
+         siginfo_t status;
+-        struct udev *udev = NULL;
+-        struct udev_device *udev_device = NULL;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
+         const char *device;
+         bool root_directory;
+         int progress_pipe[2] = { -1, -1 };
+@@ -393,12 +394,6 @@ int main(int argc, char *argv[]) {
+                 touch("/run/systemd/quotacheck");
+ finish:
+-        if (udev_device)
+-                udev_device_unref(udev_device);
+-
+-        if (udev)
+-                udev_unref(udev);
+-
+         close_pipe(progress_pipe);
+         return r;
+diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
+index 5bc6535..1bc912c 100644
+--- a/src/journal/journal-internal.h
++++ b/src/journal/journal-internal.h
+@@ -135,11 +135,8 @@ struct sd_journal {
+ char *journal_make_match_string(sd_journal *j);
+ void journal_print_header(sd_journal *j);
+-static inline void journal_closep(sd_journal **j) {
+-        sd_journal_close(*j);
+-}
+-
+-#define _cleanup_journal_close_ _cleanup_(journal_closep)
++define_trivial_cleanup_func(sd_journal*, sd_journal_close)
++#define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
+ #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval)                     \
+         for (sd_journal_restart_data(j); ((retval) = sd_journal_enumerate_data((j), &(data), &(l))) > 0; )
+diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
+index 3c03bd1..7c1adfa 100644
+--- a/src/login/sysfs-show.c
++++ b/src/login/sysfs-show.c
+@@ -26,6 +26,7 @@
+ #include "util.h"
+ #include "sysfs-show.h"
+ #include "path-util.h"
++#include "udev-util.h"
+ static int show_sysfs_one(
+                 struct udev *udev,
+@@ -143,9 +144,9 @@ static int show_sysfs_one(
+ }
+ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
+-        struct udev *udev;
++        _cleanup_udev_unref_ struct udev *udev;
++        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
+         struct udev_list_entry *first = NULL;
+-        struct udev_enumerate *e;
+         int r;
+         if (n_columns <= 0)
+@@ -162,10 +163,8 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
+                 return -ENOMEM;
+         e = udev_enumerate_new(udev);
+-        if (!e) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        if (!e)
++                return ENOMEM;
+         if (!streq(seat, "seat0"))
+                 r = udev_enumerate_add_match_tag(e, seat);
+@@ -173,22 +172,15 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
+                 r = udev_enumerate_add_match_tag(e, "seat");
+         if (r < 0)
+-                goto finish;
++                return r;
+         r = udev_enumerate_scan_devices(e);
+         if (r < 0)
+-                goto finish;
++                return r;
+         first = udev_enumerate_get_list_entry(e);
+         if (first)
+                 show_sysfs_one(udev, seat, &first, "/", prefix, n_columns);
+-finish:
+-        if (e)
+-                udev_enumerate_unref(e);
+-
+-        if (udev)
+-                udev_unref(udev);
+-
+         return r;
+ }
+diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c
+index a234a89..aea1fbe 100644
+--- a/src/readahead/readahead-common.c
++++ b/src/readahead/readahead-common.c
+@@ -27,13 +27,14 @@
+ #include <fcntl.h>
+ #include <sys/mman.h>
+ #include <unistd.h>
+-#include <libudev.h>
+ #include "log.h"
+ #include "readahead-common.h"
+ #include "util.h"
+ #include "missing.h"
+ #include "fileio.h"
++#include "libudev.h"
++#include "udev-util.h"
+ int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) {
+         assert(fd >= 0);
+@@ -60,9 +61,9 @@ int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) {
+ int fs_on_ssd(const char *p) {
+         struct stat st;
+-        struct udev *udev = NULL;
+-        struct udev_device *udev_device = NULL, *look_at = NULL;
+-        bool b = false;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
++        struct udev_device *look_at = NULL;
+         const char *devtype, *rotational, *model, *id;
+         int r;
+@@ -128,7 +129,7 @@ int fs_on_ssd(const char *p) {
+         udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
+         if (!udev_device)
+-                goto finish;
++                return false;
+         devtype = udev_device_get_property_value(udev_device, "DEVTYPE");
+         if (devtype && streq(devtype, "partition"))
+@@ -137,46 +138,34 @@ int fs_on_ssd(const char *p) {
+                 look_at = udev_device;
+         if (!look_at)
+-                goto finish;
++                return false;
+         /* First, try high-level property */
+         id = udev_device_get_property_value(look_at, "ID_SSD");
+-        if (id) {
+-                b = streq(id, "1");
+-                goto finish;
+-        }
++        if (id)
++                return streq(id, "1");
+         /* Second, try kernel attribute */
+         rotational = udev_device_get_sysattr_value(look_at, "queue/rotational");
+-        if (rotational) {
+-                b = streq(rotational, "0");
+-                goto finish;
+-        }
++        if (rotational)
++                return streq(rotational, "0");
+         /* Finally, fallback to heuristics */
+         look_at = udev_device_get_parent(look_at);
+         if (!look_at)
+-                goto finish;
++                return false;
+         model = udev_device_get_sysattr_value(look_at, "model");
+         if (model)
+-                b = !!strstr(model, "SSD");
+-
+-finish:
+-        if (udev_device)
+-                udev_device_unref(udev_device);
+-
+-        if (udev)
+-                udev_unref(udev);
++                return !!strstr(model, "SSD");
+-        return b;
++        return false;
+ }
+ int fs_on_read_only(const char *p) {
+         struct stat st;
+-        struct udev *udev = NULL;
+-        struct udev_device *udev_device = NULL;
+-        bool b = false;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
+         const char *read_only;
+         assert(p);
+@@ -187,24 +176,19 @@ int fs_on_read_only(const char *p) {
+         if (major(st.st_dev) == 0)
+                 return false;
+-        if (!(udev = udev_new()))
++        udev = udev_new();
++        if (!udev)
+                 return -ENOMEM;
+-        if (!(udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev)))
+-                goto finish;
+-
+-        if ((read_only = udev_device_get_sysattr_value(udev_device, "ro")))
+-                if ((b = streq(read_only, "1")))
+-                        goto finish;
+-
+-finish:
+-        if (udev_device)
+-                udev_device_unref(udev_device);
++        udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
++        if (!udev_device)
++                return false;
+-        if (udev)
+-                udev_unref(udev);
++        read_only = udev_device_get_sysattr_value(udev_device, "ro");
++        if (read_only)
++                return streq(read_only, "1");
+-        return b;
++        return false;
+ }
+ bool enough_ram(void) {
+diff --git a/src/shared/fdset.h b/src/shared/fdset.h
+index a7bd5e2..d0dc875 100644
+--- a/src/shared/fdset.h
++++ b/src/shared/fdset.h
+@@ -47,3 +47,6 @@ int fdset_iterate(FDSet *s, Iterator *i);
+ #define FDSET_FOREACH(fd, fds, i) \
+         for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
++
++define_trivial_cleanup_func(FDSet*, fdset_free)
++#define _cleanup_fdset_free_ _cleanup_(fdset_freep)
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 9722ed4..b9c85b7 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -44,10 +44,8 @@ typedef struct {
+         Hashmap *have_installed;
+ } InstallContext;
+-#define _cleanup_lookup_paths_free_ \
+-        __attribute__((cleanup(lookup_paths_free)))
+-#define _cleanup_install_context_done_ \
+-        __attribute__((cleanup(install_context_done)))
++#define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
++#define _cleanup_install_context_done_ _cleanup_(install_context_done)
+ static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) {
+         assert(paths);
+diff --git a/src/shared/set.h b/src/shared/set.h
+index e5d46e9..a291470 100644
+--- a/src/shared/set.h
++++ b/src/shared/set.h
+@@ -28,19 +28,13 @@
+  * for each set use. */
+ #include "hashmap.h"
++#include "util.h"
+ typedef struct Set Set;
+ Set *set_new(hash_func_t hash_func, compare_func_t compare_func);
+ void set_free(Set* s);
+-static inline void set_freep(Set **s) {
+-        set_free(*s);
+-}
+-
+ void set_free_free(Set *s);
+-static inline void set_free_freep(Set **s) {
+-        set_free_free(*s);
+-}
+ Set* set_copy(Set *s);
+ int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func);
+@@ -79,5 +73,7 @@ char **set_get_strv(Set *s);
+ #define SET_FOREACH_BACKWARDS(e, s, i) \
+         for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i)))
++define_trivial_cleanup_func(Set*, set_free)
++define_trivial_cleanup_func(Set*, set_free_free)
+ #define _cleanup_set_free_ _cleanup_(set_freep)
+ #define _cleanup_set_free_free_ _cleanup_(set_free_freep)
+diff --git a/src/shared/strv.h b/src/shared/strv.h
+index d1f2a0e..4d117f8 100644
+--- a/src/shared/strv.h
++++ b/src/shared/strv.h
+@@ -24,16 +24,13 @@
+ #include <stdarg.h>
+ #include <stdbool.h>
+-#include "macro.h"
++#include "util.h"
+ char *strv_find(char **l, const char *name) _pure_;
+ char *strv_find_prefix(char **l, const char *name) _pure_;
+ void strv_free(char **l);
+-static inline void strv_freep(char ***l) {
+-        strv_free(*l);
+-}
+-
++define_trivial_cleanup_func(char**, strv_free)
+ #define _cleanup_strv_free_ _cleanup_(strv_freep)
+ char **strv_copy(char * const *l);
+diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
+new file mode 100644
+index 0000000..bff8f5f
+--- /dev/null
++++ b/src/shared/udev-util.h
+@@ -0,0 +1,37 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++#pragma once
++
++/***
++  This file is part of systemd.
++
++  Copyright 2013 Zbigniew Jędrzejewski-Szmek
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include "udev.h"
++#include "util.h"
++
++define_trivial_cleanup_func(struct udev*, udev_unref)
++define_trivial_cleanup_func(struct udev_device*, udev_device_unref)
++define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref)
++define_trivial_cleanup_func(struct udev_event*, udev_event_unref)
++define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref)
++
++#define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
++#define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
++#define _cleanup_udev_enumerate_unref_ _cleanup_(udev_enumerate_unrefp)
++#define _cleanup_udev_event_unref_ _cleanup_(udev_event_unrefp)
++#define _cleanup_udev_rules_unref_ _cleanup_(udev_rules_unrefp)
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 222abe0..2c41765 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -39,6 +39,7 @@
+ #include <stddef.h>
+ #include <unistd.h>
+ #include <locale.h>
++#include <mntent.h>
+ #include "macro.h"
+ #include "time-util.h"
+@@ -554,37 +555,34 @@ static inline void freep(void *p) {
+         free(*(void**) p);
+ }
+-static inline void fclosep(FILE **f) {
+-        if (*f)
+-                fclose(*f);
+-}
+-
+-static inline void pclosep(FILE **f) {
+-        if (*f)
+-                pclose(*f);
+-}
++#define define_trivial_cleanup_func(type, func) \
++        static inline void func##p(type *p) {   \
++        if (*p)                                 \
++                func(*p);                       \
++        }                                       \
+ static inline void closep(int *fd) {
+         if (*fd >= 0)
+                 close_nointr_nofail(*fd);
+ }
+-static inline void closedirp(DIR **d) {
+-        if (*d)
+-                closedir(*d);
+-}
+-
+ static inline void umaskp(mode_t *u) {
+         umask(*u);
+ }
++define_trivial_cleanup_func(FILE*, fclose)
++define_trivial_cleanup_func(FILE*, pclose)
++define_trivial_cleanup_func(DIR*, closedir)
++define_trivial_cleanup_func(FILE*, endmntent)
++
+ #define _cleanup_free_ _cleanup_(freep)
+-#define _cleanup_fclose_ _cleanup_(fclosep)
+-#define _cleanup_pclose_ _cleanup_(pclosep)
+ #define _cleanup_close_ _cleanup_(closep)
+-#define _cleanup_closedir_ _cleanup_(closedirp)
+ #define _cleanup_umask_ _cleanup_(umaskp)
+ #define _cleanup_globfree_ _cleanup_(globfree)
++#define _cleanup_fclose_ _cleanup_(fclosep)
++#define _cleanup_pclose_ _cleanup_(pclosep)
++#define _cleanup_closedir_ _cleanup_(closedirp)
++#define _cleanup_endmntent_ _cleanup_(endmntentp)
+ _malloc_  _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
+         if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
+diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c
+index 716767b..ab7d5a9 100644
+--- a/src/test/test-libudev.c
++++ b/src/test/test-libudev.c
+@@ -29,6 +29,7 @@
+ #include <sys/epoll.h>
+ #include "libudev.h"
++#include "udev-util.h"
+ #include "util.h"
+ #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+@@ -117,7 +118,7 @@ static void print_device(struct udev_device *device)
+ static int test_device(struct udev *udev, const char *syspath)
+ {
+-        struct udev_device *device;
++        _cleanup_udev_device_unref_ struct udev_device *device;
+         printf("looking at device: %s\n", syspath);
+         device = udev_device_new_from_syspath(udev, syspath);
+@@ -126,13 +127,13 @@ static int test_device(struct udev *udev, const char *syspath)
+                 return -1;
+         }
+         print_device(device);
+-        udev_device_unref(device);
++
+         return 0;
+ }
+ static int test_device_parents(struct udev *udev, const char *syspath)
+ {
+-        struct udev_device *device;
++        _cleanup_udev_device_unref_ struct udev_device *device;
+         struct udev_device *device_parent;
+         printf("looking at device: %s\n", syspath);
+@@ -153,7 +154,6 @@ static int test_device_parents(struct udev *udev, const char *syspath)
+                 print_device(device_parent);
+                 device_parent = udev_device_get_parent(device_parent);
+         } while (device_parent != NULL);
+-        udev_device_unref(device);
+         return 0;
+ }
+diff --git a/src/test/test-udev.c b/src/test/test-udev.c
+index 52b61b4..17825f1 100644
+--- a/src/test/test-udev.c
++++ b/src/test/test-udev.c
+@@ -34,6 +34,7 @@
+ #include "missing.h"
+ #include "udev.h"
++#include "udev-util.h"
+ void udev_main_log(struct udev *udev, int priority,
+                    const char *file, int line, const char *fn,
+@@ -82,10 +83,10 @@ out:
+ int main(int argc, char *argv[])
+ {
+-        struct udev *udev;
+-        struct udev_event *event = NULL;
+-        struct udev_device *dev = NULL;
+-        struct udev_rules *rules = NULL;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_event_unref_ struct udev_event *event = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
++        _cleanup_udev_rules_unref_ struct udev_rules *rules = NULL;
+         char syspath[UTIL_PATH_SIZE];
+         const char *devpath;
+         const char *action;
+@@ -98,7 +99,8 @@ int main(int argc, char *argv[])
+         udev = udev_new();
+         if (udev == NULL)
+-                exit(EXIT_FAILURE);
++                return EXIT_FAILURE;
++
+         log_debug("version %s\n", VERSION);
+         label_init("/dev");
+@@ -160,12 +162,7 @@ int main(int argc, char *argv[])
+ out:
+         if (event != NULL && event->fd_signal >= 0)
+                 close(event->fd_signal);
+-        udev_event_unref(event);
+-        udev_device_unref(dev);
+-        udev_rules_unref(rules);
+         label_finish();
+-        udev_unref(udev);
+-        if (err != 0)
+-                return EXIT_FAILURE;
+-        return EXIT_SUCCESS;
++
++        return err ? EXIT_FAILURE : EXIT_SUCCESS;
+ }
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 239e56b..7e873af 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -998,10 +998,7 @@ static void item_free(Item *i) {
+         free(i);
+ }
+-static inline void item_freep(Item **i) {
+-        if (*i)
+-                item_free(*i);
+-}
++define_trivial_cleanup_func(Item*, item_free)
+ #define _cleanup_item_free_ _cleanup_(item_freep)
+ static bool item_equal(Item *a, Item *b) {
diff --git a/debian/patches/Make-hibernation-test-work-for-swap-files.patch b/debian/patches/Make-hibernation-test-work-for-swap-files.patch
new file mode 100644 (file)
index 0000000..fd7a3b1
--- /dev/null
@@ -0,0 +1,24 @@
+From: Jan Janssen <medhefgo@web.de>
+Date: Thu, 31 Oct 2013 17:22:03 +0100
+Subject: Make hibernation test work for swap files
+
+Suspend to disk works for swap files too (even if it is located
+on an ecrypted file system):
+https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt
+---
+ src/shared/sleep-config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
+index d068bfc..2bb0493 100644
+--- a/src/shared/sleep-config.c
++++ b/src/shared/sleep-config.c
+@@ -206,7 +206,7 @@ static int hibernation_partition_size(size_t *size, size_t *used) {
+                 if (!d)
+                         return -ENOMEM;
+-                if (!streq(type, "partition")) {
++                if (!streq(type, "partition") && !streq(type, "file")) {
+                         log_debug("Partition %s has type %s, ignoring.", d, type);
+                         continue;
+                 }
diff --git a/debian/patches/Make-sure-that-we-don-t-dereference-NULL.patch b/debian/patches/Make-sure-that-we-don-t-dereference-NULL.patch
new file mode 100644 (file)
index 0000000..97bec2f
--- /dev/null
@@ -0,0 +1,26 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 12 Oct 2013 13:43:07 -0400
+Subject: Make sure that we don't dereference NULL
+
+The code was actually safe, because b should
+never be null, because if rvalue is empty, a different
+branch is taken. But we *do* check for NULL in the
+loop above, so it's better to also check here for symmetry.
+---
+ src/core/load-fragment.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
+index 44920d6..f01843d 100644
+--- a/src/core/load-fragment.c
++++ b/src/core/load-fragment.c
+@@ -1860,7 +1860,8 @@ int config_parse_documentation(const char *unit,
+                         free(*a);
+                 }
+         }
+-        *b = NULL;
++        if (b)
++                *b = NULL;
+         return r;
+ }
diff --git a/debian/patches/Make-systemctl-root-look-for-files-in-the-proper-pla.patch b/debian/patches/Make-systemctl-root-look-for-files-in-the-proper-pla.patch
new file mode 100644 (file)
index 0000000..61981f8
--- /dev/null
@@ -0,0 +1,342 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 24 Apr 2014 01:44:10 -0400
+Subject: Make systemctl --root look for files in the proper places
+
+Running systemctl enable/disable/set-default/... with the --root
+option under strace reveals that it accessed various files and
+directories in the main fs, and not underneath the specified root.
+This can lead to correct results only when the layout and
+configuration in the container are identical, which often is not the
+case. Fix this by adding the specified root to all file access
+operations.
+
+This patch does not handle some corner cases: symlinks which point
+outside of the specified root might be interpreted differently than
+they would be by the kernel if the specified root was the real root.
+But systemctl does not create such symlinks by itself, and I think
+this is enough of a corner case not to be worth the additional
+complexity of reimplementing link chasing in systemd.
+
+Also, simplify the code in a few places and remove an hypothetical
+memory leak on error.
+
+(cherry picked from commit 12ed81d9c88406234c20e9261ae8c8b992d8bc4d)
+
+Conflicts:
+       TODO
+
+(cherry picked from commit fd516dfa0612d2a169158bbed6f8994f47f3e6ce)
+
+Conflicts:
+       src/shared/install.c
+---
+ src/core/manager.c        |  2 ++
+ src/shared/install.c      | 34 +++++++++++++++++++++-----------
+ src/shared/path-lookup.c  | 12 ++++--------
+ src/shared/path-lookup.h  |  8 +++++++-
+ src/shared/path-util.c    | 49 ++++++++++++++++++++++++++++++++++++-----------
+ src/systemctl/systemctl.c |  2 +-
+ 6 files changed, 75 insertions(+), 32 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 28f4d72..1baa863 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -890,6 +890,7 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
+         r = lookup_paths_init(
+                         &m->lookup_paths, m->running_as, true,
++                        NULL,
+                         m->generator_unit_path,
+                         m->generator_unit_path_early,
+                         m->generator_unit_path_late);
+@@ -2390,6 +2391,7 @@ int manager_reload(Manager *m) {
+         q = lookup_paths_init(
+                         &m->lookup_paths, m->running_as, true,
++                        NULL,
+                         m->generator_unit_path,
+                         m->generator_unit_path_early,
+                         m->generator_unit_path_late);
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 9f34ac5..cb07947 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -47,7 +47,9 @@ typedef struct {
+ #define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
+ #define _cleanup_install_context_done_ _cleanup_(install_context_done)
+-static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) {
++static int lookup_paths_init_from_scope(LookupPaths *paths,
++                                        UnitFileScope scope,
++                                        const char *root_dir) {
+         assert(paths);
+         assert(scope >= 0);
+         assert(scope < _UNIT_FILE_SCOPE_MAX);
+@@ -57,6 +59,7 @@ static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope)
+         return lookup_paths_init(paths,
+                                  scope == UNIT_FILE_SYSTEM ? SYSTEMD_SYSTEM : SYSTEMD_USER,
+                                  scope == UNIT_FILE_USER,
++                                 root_dir,
+                                  NULL, NULL, NULL);
+ }
+@@ -705,7 +708,7 @@ int unit_file_link(
+         assert(scope >= 0);
+         assert(scope < _UNIT_FILE_SCOPE_MAX);
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+@@ -1475,7 +1478,7 @@ int unit_file_enable(
+         assert(scope >= 0);
+         assert(scope < _UNIT_FILE_SCOPE_MAX);
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+@@ -1515,7 +1518,7 @@ int unit_file_disable(
+         assert(scope >= 0);
+         assert(scope < _UNIT_FILE_SCOPE_MAX);
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+@@ -1577,7 +1580,7 @@ int unit_file_set_default(
+         if (unit_name_to_type(file) != UNIT_TARGET)
+                 return -EINVAL;
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+@@ -1612,7 +1615,11 @@ int unit_file_get_default(
+         char **p;
+         int r;
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        assert(scope >= 0);
++        assert(scope < _UNIT_FILE_SCOPE_MAX);
++        assert(name);
++
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+@@ -1664,12 +1671,13 @@ UnitFileState unit_file_get_state(
+         if (!unit_name_is_valid(name, true))
+                 return -EINVAL;
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+         STRV_FOREACH(i, paths.unit_path) {
+                 struct stat st;
++                char *partial;
+                 free(path);
+                 path = NULL;
+@@ -1678,10 +1686,14 @@ UnitFileState unit_file_get_state(
+                         asprintf(&path, "%s/%s/%s", root_dir, *i, name);
+                 else
+                         asprintf(&path, "%s/%s", *i, name);
+-
+                 if (!path)
+                         return -ENOMEM;
++                if (root_dir)
++                        partial = path + strlen(root_dir) + 1;
++                else
++                        partial = path;
++
+                 /*
+                  * Search for a unit file in our default paths, to
+                  * be sure, that there are no broken symlinks.
+@@ -1713,7 +1725,7 @@ UnitFileState unit_file_get_state(
+                 else if (r > 0)
+                         return state;
+-                r = unit_file_can_install(&paths, root_dir, path, true);
++                r = unit_file_can_install(&paths, root_dir, partial, true);
+                 if (r < 0 && errno != ENOENT)
+                         return r;
+                 else if (r > 0)
+@@ -1821,7 +1833,7 @@ int unit_file_preset(
+         assert(scope >= 0);
+         assert(scope < _UNIT_FILE_SCOPE_MAX);
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+@@ -1890,7 +1902,7 @@ int unit_file_get_list(
+         if (root_dir && scope != UNIT_FILE_SYSTEM)
+                 return -EINVAL;
+-        r = lookup_paths_init_from_scope(&paths, scope);
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+         if (r < 0)
+                 return r;
+diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
+index 03c1380..b62f302 100644
+--- a/src/shared/path-lookup.c
++++ b/src/shared/path-lookup.c
+@@ -239,6 +239,7 @@ int lookup_paths_init(
+                 LookupPaths *p,
+                 SystemdRunningAs running_as,
+                 bool personal,
++                const char *root_dir,
+                 const char *generator,
+                 const char *generator_early,
+                 const char *generator_late) {
+@@ -316,11 +317,9 @@ int lookup_paths_init(
+                 }
+         }
+-        if (!path_strv_canonicalize_absolute(p->unit_path, NULL))
++        if (!path_strv_canonicalize_absolute_uniq(p->unit_path, root_dir))
+                 return -ENOMEM;
+-        strv_uniq(p->unit_path);
+-
+         if (!strv_isempty(p->unit_path)) {
+                 _cleanup_free_ char *t = strv_join(p->unit_path, "\n\t");
+                 if (!t)
+@@ -372,15 +371,12 @@ int lookup_paths_init(
+                                 return -ENOMEM;
+                 }
+-                if (!path_strv_canonicalize_absolute(p->sysvinit_path, NULL))
++                if (!path_strv_canonicalize_absolute_uniq(p->sysvinit_path, root_dir))
+                         return -ENOMEM;
+-                if (!path_strv_canonicalize_absolute(p->sysvrcnd_path, NULL))
++                if (!path_strv_canonicalize_absolute_uniq(p->sysvrcnd_path, root_dir))
+                         return -ENOMEM;
+-                strv_uniq(p->sysvinit_path);
+-                strv_uniq(p->sysvrcnd_path);
+-
+                 if (!strv_isempty(p->sysvinit_path)) {
+                         _cleanup_free_ char *t = strv_join(p->sysvinit_path, "\n\t");
+                         if (!t)
+diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h
+index 9dee85f..0db9bfb 100644
+--- a/src/shared/path-lookup.h
++++ b/src/shared/path-lookup.h
+@@ -41,5 +41,11 @@ SystemdRunningAs systemd_running_as_from_string(const char *s) _pure_;
+ int user_config_home(char **config_home);
+-int lookup_paths_init(LookupPaths *p, SystemdRunningAs running_as, bool personal, const char *generator, const char *generator_early, const char *generator_late);
++int lookup_paths_init(LookupPaths *p,
++                      SystemdRunningAs running_as,
++                      bool personal,
++                      const char *root_dir,
++                      const char *generator,
++                      const char *generator_early,
++                      const char *generator_late);
+ void lookup_paths_free(LookupPaths *p);
+diff --git a/src/shared/path-util.c b/src/shared/path-util.c
+index 36542cd..5c0bf93 100644
+--- a/src/shared/path-util.c
++++ b/src/shared/path-util.c
+@@ -179,36 +179,63 @@ char **path_strv_canonicalize_absolute(char **l, const char *prefix) {
+         STRV_FOREACH(s, l) {
+                 char *t, *u;
++                _cleanup_free_ char *orig = NULL;
+-                if (!path_is_absolute(*s))
++                if (!path_is_absolute(*s)) {
++                        free(*s);
+                         continue;
++                }
+                 if (prefix) {
+-                        t = strappend(prefix, *s);
+-                        free(*s);
+-                        *s = NULL;
+-
++                        orig = *s;
++                        t = strappend(prefix, orig);
+                         if (!t) {
+                                 enomem = true;
+                                 continue;
+                         }
+-                } else {
++                } else
+                         t = *s;
+-                        *s = NULL;
+-                }
+                 errno = 0;
+                 u = canonicalize_file_name(t);
+                 if (!u) {
+-                        if (errno == ENOENT)
+-                                u = t;
+-                        else {
++                        if (errno == ENOENT) {
++                                if (prefix) {
++                                        u = orig;
++                                        orig = NULL;
++                                        free(t);
++                                } else
++                                        u = t;
++                        } else {
+                                 free(t);
+                                 if (errno == ENOMEM || errno == 0)
+                                         enomem = true;
+                                 continue;
+                         }
++                } else if (prefix) {
++                        char *x;
++
++                        free(t);
++                        x = path_startswith(u, prefix);
++                        if (x) {
++                                /* restore the slash if it was lost */
++                                if (!startswith(x, "/"))
++                                        *(--x) = '/';
++
++                                t = strdup(x);
++                                free(u);
++                                if (!t) {
++                                        enomem = true;
++                                        continue;
++                                }
++                                u = t;
++                        } else {
++                                /* canonicalized path goes outside of
++                                 * prefix, keep the original path instead */
++                                u = orig;
++                                orig = NULL;
++                        }
+                 } else
+                         free(t);
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index da49da7..517257b 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4239,7 +4239,7 @@ static int enable_sysv_units(const char *verb, char **args) {
+         /* Processes all SysV units, and reshuffles the array so that
+          * afterwards only the native units remain */
+-        r = lookup_paths_init(&paths, SYSTEMD_SYSTEM, false, NULL, NULL, NULL);
++        r = lookup_paths_init(&paths, SYSTEMD_SYSTEM, false, arg_root, NULL, NULL, NULL);
+         if (r < 0)
+                 return r;
diff --git a/debian/patches/Never-call-qsort-on-potentially-NULL-arrays.patch b/debian/patches/Never-call-qsort-on-potentially-NULL-arrays.patch
new file mode 100644 (file)
index 0000000..643b5e4
--- /dev/null
@@ -0,0 +1,381 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 11 Oct 2013 19:33:13 -0400
+Subject: Never call qsort on potentially NULL arrays
+
+This extends 62678ded 'efi: never call qsort on potentially
+NULL arrays' to all other places where qsort is used and it
+is not obvious that the count is non-zero.
+---
+ src/analyze/systemd-analyze.c     |  2 +-
+ src/cgtop/cgtop.c                 |  2 +-
+ src/core/namespace.c              | 38 ++++++++++++++++++++------------------
+ src/journal/catalog.c             |  2 +-
+ src/journal/journal-file.c        |  2 +-
+ src/journal/journal-vacuum.c      |  3 +--
+ src/journal/journalctl.c          |  2 +-
+ src/libsystemd-bus/bus-match.c    |  2 +-
+ src/libudev/libudev-enumerate.c   |  2 +-
+ src/nss-myhostname/netlink.c      |  3 ++-
+ src/readahead/readahead-collect.c | 39 ++++++++++++++++++++++-----------------
+ src/shared/cgroup-show.c          |  2 ++
+ src/shared/conf-files.c           |  2 +-
+ src/shared/efivars.c              |  3 +--
+ src/shared/fileio.c               |  1 +
+ src/shared/util.h                 | 12 ++++++++++++
+ src/systemctl/systemctl.c         | 10 +++++-----
+ 17 files changed, 74 insertions(+), 53 deletions(-)
+
+diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
+index 27d063c..a4f15eb 100644
+--- a/src/analyze/systemd-analyze.c
++++ b/src/analyze/systemd-analyze.c
+@@ -768,7 +768,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned
+         if (r < 0)
+                 return r;
+-        qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
++        qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
+         r = acquire_boot_times(bus, &boot);
+         if (r < 0)
+diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
+index cacf705..293a211 100644
+--- a/src/cgtop/cgtop.c
++++ b/src/cgtop/cgtop.c
+@@ -461,7 +461,7 @@ static int display(Hashmap *a) {
+                 if (g->n_tasks_valid || g->cpu_valid || g->memory_valid || g->io_valid)
+                         array[n++] = g;
+-        qsort(array, n, sizeof(Group*), group_compare);
++        qsort_safe(array, n, sizeof(Group*), group_compare);
+         /* Find the longest names in one run */
+         for (j = 0; j < n; j++) {
+diff --git a/src/core/namespace.c b/src/core/namespace.c
+index 16b132b..936f368 100644
+--- a/src/core/namespace.c
++++ b/src/core/namespace.c
+@@ -222,7 +222,7 @@ int setup_namespace(char** read_write_dirs,
+                      strv_length(read_only_dirs) +
+                      strv_length(inaccessible_dirs) +
+                      (private_tmp ? 2 : 0);
+-        BindMount *m, *mounts;
++        BindMount *m, *mounts = NULL;
+         int r = 0;
+         if (!mount_flags)
+@@ -231,27 +231,29 @@ int setup_namespace(char** read_write_dirs,
+         if (unshare(CLONE_NEWNS) < 0)
+                 return -errno;
+-        m = mounts = (BindMount *) alloca(n * sizeof(BindMount));
+-        if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 ||
+-                (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 ||
+-                (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0)
+-                return r;
++        if (n) {
++                m = mounts = (BindMount *) alloca(n * sizeof(BindMount));
++                if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 ||
++                    (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 ||
++                    (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0)
++                        return r;
++
++                if (private_tmp) {
++                        m->path = "/tmp";
++                        m->mode = PRIVATE_TMP;
++                        m++;
++
++                        m->path = "/var/tmp";
++                        m->mode = PRIVATE_VAR_TMP;
++                        m++;
++                }
+-        if (private_tmp) {
+-                m->path = "/tmp";
+-                m->mode = PRIVATE_TMP;
+-                m++;
++                assert(mounts + n == m);
+-                m->path = "/var/tmp";
+-                m->mode = PRIVATE_VAR_TMP;
+-                m++;
++                qsort(mounts, n, sizeof(BindMount), mount_path_compare);
++                drop_duplicates(mounts, &n);
+         }
+-        assert(mounts + n == m);
+-
+-        qsort(mounts, n, sizeof(BindMount), mount_path_compare);
+-        drop_duplicates(mounts, &n);
+-
+         /* Remount / as SLAVE so that nothing now mounted in the namespace
+            shows up in the parent */
+         if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0)
+diff --git a/src/journal/catalog.c b/src/journal/catalog.c
+index 7738d24..90ca008 100644
+--- a/src/journal/catalog.c
++++ b/src/journal/catalog.c
+@@ -399,7 +399,7 @@ int catalog_update(const char* database, const char* root, const char* const* di
+         }
+         assert(n == hashmap_size(h));
+-        qsort(items, n, sizeof(CatalogItem), catalog_compare_func);
++        qsort_safe(items, n, sizeof(CatalogItem), catalog_compare_func);
+         r = write_catalog(database, h, sb, items, n);
+         if (r < 0)
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 81c344f..425e38a 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1344,7 +1344,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
+         /* Order by the position on disk, in order to improve seek
+          * times for rotating media. */
+-        qsort(items, n_iovec, sizeof(EntryItem), entry_item_cmp);
++        qsort_safe(items, n_iovec, sizeof(EntryItem), entry_item_cmp);
+         r = journal_file_append_entry_internal(f, ts, xor_hash, items, n_iovec, seqnum, ret, offset);
+diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
+index 8d5effb..d4a1c6c 100644
+--- a/src/journal/journal-vacuum.c
++++ b/src/journal/journal-vacuum.c
+@@ -299,8 +299,7 @@ int journal_directory_vacuum(
+                 n_list ++;
+         }
+-        if (n_list > 0)
+-                qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
++        qsort_safe(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
+         for (i = 0; i < n_list; i++) {
+                 struct statvfs ss;
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 9a2d255..0876ee6 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -755,7 +755,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative
+                 sd_journal_flush_matches(j);
+         }
+-        qsort(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
++        qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
+         if (sd_id128_equal(*boot_id, SD_ID128_NULL)) {
+                 if (relative > (int) count || relative <= -(int)count)
+diff --git a/src/libsystemd-bus/bus-match.c b/src/libsystemd-bus/bus-match.c
+index 1411167..916682a 100644
+--- a/src/libsystemd-bus/bus-match.c
++++ b/src/libsystemd-bus/bus-match.c
+@@ -768,7 +768,7 @@ int bus_match_parse(
+         }
+         /* Order the whole thing, so that we always generate the same tree */
+-        qsort(components, n_components, sizeof(struct bus_match_component), match_component_compare);
++        qsort_safe(components, n_components, sizeof(struct bus_match_component), match_component_compare);
+         /* Check for duplicates */
+         for (i = 0; i+1 < n_components; i++)
+diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
+index 8146f27..e71d766 100644
+--- a/src/libudev/libudev-enumerate.c
++++ b/src/libudev/libudev-enumerate.c
+@@ -276,7 +276,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume
+                 size_t move_later_prefix = 0;
+                 udev_list_cleanup(&udev_enumerate->devices_list);
+-                qsort(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp);
++                qsort_safe(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp);
+                 max = udev_enumerate->devices_cur;
+                 for (i = 0; i < max; i++) {
+diff --git a/src/nss-myhostname/netlink.c b/src/nss-myhostname/netlink.c
+index b1ef912..47a41f5 100644
+--- a/src/nss-myhostname/netlink.c
++++ b/src/nss-myhostname/netlink.c
+@@ -197,7 +197,8 @@ finish:
+                 return r;
+         }
+-        qsort(list, n_list, sizeof(struct address), address_compare);
++        if (n_list)
++                qsort(list, n_list, sizeof(struct address), address_compare);
+         *_list = list;
+         *_n_list = n_list;
+diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
+index 32888ad..6b74866 100644
+--- a/src/readahead/readahead-collect.c
++++ b/src/readahead/readahead-collect.c
+@@ -536,8 +536,7 @@ done:
+                 HASHMAP_FOREACH_KEY(q, p, files, i)
+                         pack_file(pack, p, on_btrfs);
+         } else {
+-                struct item *ordered, *j;
+-                unsigned k, n;
++                unsigned n;
+                 /* On rotating media, order things by the block
+                  * numbers */
+@@ -545,25 +544,31 @@ done:
+                 log_debug("Ordering...");
+                 n = hashmap_size(files);
+-                if (!(ordered = new(struct item, n))) {
+-                        r = log_oom();
+-                        goto finish;
+-                }
+-
+-                j = ordered;
+-                HASHMAP_FOREACH_KEY(q, p, files, i) {
+-                        memcpy(j, q, sizeof(struct item));
+-                        j++;
+-                }
++                if (n) {
++                        _cleanup_free_ struct item *ordered;
++                        struct item *j;
++                        unsigned k;
++
++                        ordered = new(struct item, n);
++                        if (!ordered) {
++                                r = log_oom();
++                                goto finish;
++                        }
+-                assert(ordered + n == j);
++                        j = ordered;
++                        HASHMAP_FOREACH_KEY(q, p, files, i) {
++                                memcpy(j, q, sizeof(struct item));
++                                j++;
++                        }
+-                qsort(ordered, n, sizeof(struct item), qsort_compare);
++                        assert(ordered + n == j);
+-                for (k = 0; k < n; k++)
+-                        pack_file(pack, ordered[k].path, on_btrfs);
++                        qsort(ordered, n, sizeof(struct item), qsort_compare);
+-                free(ordered);
++                        for (k = 0; k < n; k++)
++                                pack_file(pack, ordered[k].path, on_btrfs);
++                } else
++                        log_warning("No pack files");
+         }
+         log_debug("Finalizing...");
+diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
+index e971f36..cc44ab4 100644
+--- a/src/shared/cgroup-show.c
++++ b/src/shared/cgroup-show.c
+@@ -44,6 +44,8 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
+         unsigned i, m, pid_width;
+         pid_t biggest = 0;
++        assert(n_pids > 0);
++
+         /* Filter duplicates */
+         m = 0;
+         for (i = 0; i < n_pids; i++) {
+diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
+index 6d99739..ed4070c 100644
+--- a/src/shared/conf-files.c
++++ b/src/shared/conf-files.c
+@@ -127,7 +127,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
+                 return -ENOMEM;
+         }
+-        qsort(files, hashmap_size(fh), sizeof(char *), base_cmp);
++        qsort_safe(files, hashmap_size(fh), sizeof(char *), base_cmp);
+         *strv = files;
+         hashmap_free(fh);
+diff --git a/src/shared/efivars.c b/src/shared/efivars.c
+index c015b16..f3eb6a6 100644
+--- a/src/shared/efivars.c
++++ b/src/shared/efivars.c
+@@ -384,8 +384,7 @@ int efi_get_boot_options(uint16_t **options) {
+                 list[count ++] = id;
+         }
+-        if (list)
+-                qsort(list, count, sizeof(uint16_t), cmp_uint16);
++        qsort_safe(list, count, sizeof(uint16_t), cmp_uint16);
+         *options = list;
+         return count;
+diff --git a/src/shared/fileio.c b/src/shared/fileio.c
+index 603a1c7..733b320 100644
+--- a/src/shared/fileio.c
++++ b/src/shared/fileio.c
+@@ -662,6 +662,7 @@ int get_status_field(const char *filename, const char *pattern, char **field) {
+         int r;
+         assert(filename);
++        assert(pattern);
+         assert(field);
+         r = read_full_file(filename, &status, NULL);
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 1b845b3..222abe0 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -764,3 +764,15 @@ bool id128_is_valid(const char *s) _pure_;
+ void parse_user_at_host(char *arg, char **user, char **host);
+ int split_pair(const char *s, const char *sep, char **l, char **r);
++
++/**
++ * Normal qsort requires base to be nonnull. Here were require
++ * that only if nmemb > 0.
++ */
++static inline void qsort_safe(void *base, size_t nmemb, size_t size,
++                              int (*compar)(const void *, const void *)) {
++        if (nmemb) {
++                assert(base);
++                qsort(base, nmemb, size, compar);
++        }
++}
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index d75281f..036828b 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -471,7 +471,7 @@ static int list_units(DBusConnection *bus, char **args) {
+         if (r < 0)
+                 return r;
+-        qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
++        qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
+         output_units_list(unit_infos, c);
+@@ -733,8 +733,8 @@ static int list_sockets(DBusConnection *bus, char **args) {
+                 listen = triggered = NULL; /* avoid cleanup */
+         }
+-        qsort(socket_infos, cs, sizeof(struct socket_info),
+-              (__compar_fn_t) socket_info_compare);
++        qsort_safe(socket_infos, cs, sizeof(struct socket_info),
++                   (__compar_fn_t) socket_info_compare);
+         output_sockets_list(socket_infos, cs);
+@@ -1108,7 +1108,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve
+         if (r < 0)
+                 return r;
+-        qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
++        qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
+         STRV_FOREACH(c, deps) {
+                 if (strv_contains(u, *c)) {
+@@ -3532,7 +3532,7 @@ static int show_all(const char* verb,
+         if (r < 0)
+                 return r;
+-        qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
++        qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
+         for (u = unit_infos; u < unit_infos + c; u++) {
+                 _cleanup_free_ char *p = NULL;
diff --git a/debian/patches/Only-disable-output-on-console-during-boot-if-needed.patch b/debian/patches/Only-disable-output-on-console-during-boot-if-needed.patch
new file mode 100644 (file)
index 0000000..17333cb
--- /dev/null
@@ -0,0 +1,36 @@
+From: Olivier Brunel <jjk@jjacky.com>
+Date: Fri, 20 Sep 2013 22:18:29 +0200
+Subject: Only disable output on console during boot if needed
+
+If there are no more jobs on console, no need/we shouldn't disable output.
+---
+ src/core/manager.c | 2 +-
+ src/core/unit.c    | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 58dacdc..ce32baf 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -1761,7 +1761,7 @@ static int process_event(Manager *m, struct epoll_event *ev) {
+         }
+         case WATCH_IDLE_PIPE: {
+-                m->no_console_output = true;
++                m->no_console_output = m->n_on_console > 0;
+                 manager_unwatch_idle_pipe(m);
+                 close_idle_pipe(m);
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 1db7d06..717ce84 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1454,7 +1454,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
+                                 if (m->n_on_console == 0)
+                                         /* unset no_console_output flag, since the console is free */
+-                                        m->no_console_output = 0;
++                                        m->no_console_output = false;
+                         } else
+                                 m->n_on_console ++;
+                 }
diff --git a/debian/patches/README-document-that-var-run-must-be-a-symlink-run.patch b/debian/patches/README-document-that-var-run-must-be-a-symlink-run.patch
new file mode 100644 (file)
index 0000000..3bf20b6
--- /dev/null
@@ -0,0 +1,25 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 26 Feb 2014 02:54:37 +0100
+Subject: =?utf-8?q?README=3A_document_that_/var/run_must_be_a_symlink_?=
+ =?utf-8?q?=E2=86=92_/run?=
+
+(cherry picked from commit 47bc23c18cbc87471dc832534c8565625e4a9d16)
+(cherry picked from commit 10acd244847eb8689e79efbf95475aef8818bb51)
+---
+ README | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/README b/README
+index cf0a18d..fa433be 100644
+--- a/README
++++ b/README
+@@ -189,6 +189,9 @@ WARNINGS:
+         about this, since this kind of file system setup is not really
+         supported anymore by the basic set of Linux OS components.
++        systemd requires that the /run mount point exists. systemd also
++        requires that /var/run is a a symlink → /run.
++
+         For more information on this issue consult
+         http://freedesktop.org/wiki/Software/systemd/separate-usr-is-broken
diff --git a/debian/patches/Reset-signal-mask-on-re-exec-to-init.patch b/debian/patches/Reset-signal-mask-on-re-exec-to-init.patch
new file mode 100644 (file)
index 0000000..2dbc08b
--- /dev/null
@@ -0,0 +1,50 @@
+From: Ruediger Oertel <ro@suse.de>
+Date: Fri, 13 Jun 2014 16:41:06 +0200
+Subject: Reset signal-mask on re-exec to init=..
+
+Process 1 (aka init) needs to be started with an empty signal mask.
+That includes the process 1 that's started after the initrd is finished.
+When the initrd is using systemd (as it does with dracut based initrds)
+then it is systemd that calls the real init.  Normally this is systemd
+again, except when the user uses for instance "init=/bin/bash" on the
+kernel command line.
+
+(cherry picked from commit 5a85ca1cb622fda4a39c8a6f00dccea7f8a1e82a)
+(cherry picked from commit 3eb31d88fd664d55251102d8504d05426a97d0b3)
+---
+ src/core/main.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index 2a294c6..2f45485 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1748,6 +1748,7 @@ finish:
+         if (reexecute) {
+                 const char **args;
+                 unsigned i, args_size;
++                sigset_t ss, o_ss;
+                 /* Close and disarm the watchdog, so that the new
+                  * instance can reinitialize it, but doesn't get
+@@ -1831,6 +1832,11 @@ finish:
+                 args[i++] = NULL;
+                 assert(i <= args_size);
++                /* reenable any blocked signals, especially important
++                 * if we switch from initial ramdisk to init=... */
++                sigemptyset(&ss);
++                sigprocmask(SIG_SETMASK, &ss, &o_ss);
++
+                 if (switch_root_init) {
+                         args[0] = switch_root_init;
+                         execv(args[0], (char* const*) args);
+@@ -1849,6 +1855,8 @@ finish:
+                         log_error("Failed to execute /bin/sh, giving up: %m");
+                 } else
+                         log_warning("Failed to execute /sbin/init, giving up: %m");
++
++                sigprocmask(SIG_SETMASK, &o_ss, NULL);
+         }
+         if (serialization)
diff --git a/debian/patches/Resolve-dev-console-to-the-active-tty-instead-of-jus.patch b/debian/patches/Resolve-dev-console-to-the-active-tty-instead-of-jus.patch
new file mode 100644 (file)
index 0000000..0c8ff5a
--- /dev/null
@@ -0,0 +1,32 @@
+From: Olivier Brunel <jjk@jjacky.com>
+Date: Fri, 20 Sep 2013 22:18:28 +0200
+Subject: Resolve /dev/console to the active tty instead of just "tty0"
+
+When resolving /dev/console one would often get "tty0" meaning the active VT.
+Resolving to the actual tty (e.g. "tty1") will notably help on boot when
+determining whether or not PID1 can output to the console.
+---
+ src/shared/util.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 6c88040..3fc080a 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -3621,6 +3621,16 @@ char *resolve_dev_console(char **active) {
+         else
+                 tty = *active;
++        if (streq(tty, "tty0")) {
++                char *tmp;
++
++                /* Get the active VC (e.g. tty1) */
++                if (read_one_line_file("/sys/class/tty/tty0/active", &tmp) >= 0) {
++                        free(*active);
++                        tty = *active = tmp;
++                }
++        }
++
+         return tty;
+ }
diff --git a/debian/patches/Revert-journalctl-flip-to-full-by-default.patch b/debian/patches/Revert-journalctl-flip-to-full-by-default.patch
new file mode 100644 (file)
index 0000000..09bc379
--- /dev/null
@@ -0,0 +1,98 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 24 Feb 2014 21:53:13 -0500
+Subject: Revert "journalctl: flip to --full by default"
+
+This reverts commit 9425c5d1440fe5ffaa8f56b0ef91f17d97475706.
+
+This is a user visible change and doesn't belong in stable series.
+---
+ man/journalctl.xml       | 15 +++------------
+ src/journal/journalctl.c | 12 +++---------
+ 2 files changed, 6 insertions(+), 21 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index d1e841a..d75c758 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -152,20 +152,11 @@
+                         </varlistentry>
+                         <varlistentry>
+-                                <term><option>--no-full</option></term>
+-                                <term><option>--full</option></term>
+                                 <term><option>-l</option></term>
++                                <term><option>--full</option></term>
+-                                <listitem><para>Ellipsize fields when
+-                                they don't fit in available columns.
+-                                The default is to show full fields,
+-                                allowing them to wrap or be truncated
+-                                by the pager if one is used.</para>
+-
+-                                <para>Old options
+-                                <option>-l</option>/<option>--full</option>
+-                                not useful anymore, except to undo
+-                                <option>--no-full</option>.</para></listitem>
++                                <listitem><para>Show all (printable) fields in
++                                full.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 1b5bdd3..ccd96b2 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -64,7 +64,7 @@
+ static OutputMode arg_output = OUTPUT_SHORT;
+ static bool arg_pager_end = false;
+ static bool arg_follow = false;
+-static bool arg_full = true;
++static bool arg_full = false;
+ static bool arg_all = false;
+ static bool arg_no_pager = false;
+ static int arg_lines = -1;
+@@ -187,7 +187,7 @@ static int help(void) {
+                "                                   short-precise, short-monotonic, verbose,\n"
+                "                                   export, json, json-pretty, json-sse, cat)\n"
+                "  -x --catalog             Add message explanations where available\n"
+-               "     --no-full             Ellipsize fields\n"
++               "  -l --full                Do not ellipsize fields\n"
+                "  -a --all                 Show all fields, including long and unprintable\n"
+                "  -q --quiet               Do not show privilege warning\n"
+                "     --no-pager            Do not pipe output into a pager\n"
+@@ -224,7 +224,6 @@ static int parse_argv(int argc, char *argv[]) {
+         enum {
+                 ARG_VERSION = 0x100,
+                 ARG_NO_PAGER,
+-                ARG_NO_FULL,
+                 ARG_NO_TAIL,
+                 ARG_NEW_ID128,
+                 ARG_LIST_BOOTS,
+@@ -259,7 +258,6 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "output",         required_argument, NULL, 'o'                },
+                 { "all",            no_argument,       NULL, 'a'                },
+                 { "full",           no_argument,       NULL, 'l'                },
+-                { "no-full",        no_argument,       NULL, ARG_NO_FULL        },
+                 { "lines",          optional_argument, NULL, 'n'                },
+                 { "no-tail",        no_argument,       NULL, ARG_NO_TAIL        },
+                 { "new-id128",      no_argument,       NULL, ARG_NEW_ID128      },
+@@ -351,10 +349,6 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_full = true;
+                         break;
+-                case ARG_NO_FULL:
+-                        arg_full = false;
+-                        break;
+-
+                 case 'a':
+                         arg_all = true;
+                         break;
+@@ -1742,7 +1736,7 @@ int main(int argc, char *argv[]) {
+                         flags =
+                                 arg_all * OUTPUT_SHOW_ALL |
+-                                arg_full * OUTPUT_FULL_WIDTH |
++                                (arg_full || !on_tty() || pager_have()) * OUTPUT_FULL_WIDTH |
+                                 on_tty() * OUTPUT_COLOR |
+                                 arg_catalog * OUTPUT_CATALOG;
diff --git a/debian/patches/Revert-login-Don-t-stop-a-running-user-manager-from-.patch b/debian/patches/Revert-login-Don-t-stop-a-running-user-manager-from-.patch
new file mode 100644 (file)
index 0000000..3c8b428
--- /dev/null
@@ -0,0 +1,29 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 24 Feb 2014 21:50:36 -0500
+Subject: Revert "login: Don't stop a running user manager from
+ garbage-collecting the user."
+
+This reverts commit f3656789f8c0d5255809b4057f609247d440ef79.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1053315
+---
+ src/login/logind-user.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/login/logind-user.c b/src/login/logind-user.c
+index b87311c..ddf19eb 100644
+--- a/src/login/logind-user.c
++++ b/src/login/logind-user.c
+@@ -629,6 +629,12 @@ int user_check_gc(User *u, bool drop_not_started) {
+         if (u->slice_job || u->service_job)
+                 return 1;
++        if (u->slice && manager_unit_is_active(u->manager, u->slice) != 0)
++                return 1;
++
++        if (u->service && manager_unit_is_active(u->manager, u->service) != 0)
++                return 1;
++
+         return 0;
+ }
diff --git a/debian/patches/Revert-systemd-add-a-start-job-for-all-units-specifi.patch b/debian/patches/Revert-systemd-add-a-start-job-for-all-units-specifi.patch
new file mode 100644 (file)
index 0000000..c6561b8
--- /dev/null
@@ -0,0 +1,48 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 14 Jan 2014 17:31:00 -0500
+Subject: Revert "systemd: add a start job for all units specified with
+ SYSTEMD_WANTS="
+
+This reverts commit 043a559ff3732439fc61872a6320ee0a05dd088f.
+
+This was a mistake, and was reverted upstream.
+---
+ src/core/device.c | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+diff --git a/src/core/device.c b/src/core/device.c
+index e02c207..f79c206 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -282,8 +282,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+                         size_t l;
+                         FOREACH_WORD_QUOTED(w, l, wants, state) {
+-                                _cleanup_free_ char *e, *n = NULL;
+-                                Unit *other;
++                                char *e, *n;
+                                 e = strndup(w, l);
+                                 if (!e) {
+@@ -295,19 +294,12 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+                                         r = -ENOMEM;
+                                         goto fail;
+                                 }
++                                free(e);
+                                 r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true);
++                                free(n);
+                                 if (r < 0)
+                                         goto fail;
+-
+-                                other = manager_get_unit(u->manager, n);
+-                                if (!other || !unit_can_start(other))
+-                                        continue;
+-
+-                                r = manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL);
+-                                if (r < 0)
+-                                        log_warning("Failed to add job %s/%s, ignoring: %s.",
+-                                                    other->id, job_type_to_string(JOB_START), strerror(-r));
+                         }
+                 }
+         }
diff --git a/debian/patches/Temporary-work-around-for-slow-shutdown-due-to-unter.patch b/debian/patches/Temporary-work-around-for-slow-shutdown-due-to-unter.patch
new file mode 100644 (file)
index 0000000..4fce45b
--- /dev/null
@@ -0,0 +1,26 @@
+From: Colin Guthrie <colin@mageia.org>
+Date: Mon, 27 Jan 2014 17:54:29 +0000
+Subject: Temporary work around for slow shutdown due to unterminated user
+ sessions.
+
+---
+ units/user@.service.in | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/units/user@.service.in b/units/user@.service.in
+index 3f8b59d..a7e0584 100644
+--- a/units/user@.service.in
++++ b/units/user@.service.in
+@@ -14,5 +14,12 @@ User=%I
+ PAMName=systemd-user
+ Type=notify
+ ExecStart=-@rootlibexecdir@/systemd --user
++# Apply same work around as apache's httpd until issues with user session
++# killing is fixed (currently problem is that the kill issued by systemd --user
++# is itself killed by systemd (PID1) before it can work which can lead to slow
++# shutdowns
++# http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/16363
++ExecStop=/bin/kill -TERM ${MAINPID}
++KillSignal=SIGCONT
+ Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket
+ Slice=user-%i.slice
diff --git a/debian/patches/Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch b/debian/patches/Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch
new file mode 100644 (file)
index 0000000..4e9dc94
--- /dev/null
@@ -0,0 +1,45 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 25 Feb 2014 21:26:31 -0500
+Subject: Use /var/run/dbus/system_bus_socket for the D-Bus socket
+
+(cherry picked from commit 1ae383a8a3ae4824453e297352fda603d2d3fd5e)
+(cherry picked from commit d5194bbb174d0b9a87e81d465644624ab455bbf6)
+
+Conflicts:
+       man/systemd-bus-proxyd@.service.xml
+       src/libsystemd/sd-bus/PORTING-DBUS1
+       src/shared/def.h
+       units/systemd-bus-proxyd.socket
+---
+ src/libsystemd-bus/sd-bus.c     | 4 ++--
+ src/stdio-bridge/stdio-bridge.c | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
+index db0880f..8dc3f6e 100644
+--- a/src/libsystemd-bus/sd-bus.c
++++ b/src/libsystemd-bus/sd-bus.c
+@@ -972,8 +972,8 @@ int sd_bus_open_system(sd_bus **ret) {
+                         goto fail;
+         } else {
+                 b->sockaddr.un.sun_family = AF_UNIX;
+-                strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path));
+-                b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1;
++                strncpy(b->sockaddr.un.sun_path, "/var/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path));
++                b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + strlen("/var/run/dbus/system_bus_socket");
+         }
+         b->bus_client = true;
+diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c
+index ab1a43a..f2a26c0 100644
+--- a/src/stdio-bridge/stdio-bridge.c
++++ b/src/stdio-bridge/stdio-bridge.c
+@@ -62,7 +62,7 @@ int main(int argc, char *argv[]) {
+                 goto finish;
+         }
+-        r = sd_bus_set_address(a, "unix:path=/run/dbus/system_bus_socket");
++        r = sd_bus_set_address(a, "unix:path=/var/run/dbus/system_bus_socket");
+         if (r < 0) {
+                 log_error("Failed to set address to connect to: %s", strerror(-r));
+                 goto finish;
diff --git a/debian/patches/acpi-fpdt-break-on-zero-or-negative-length-read.patch b/debian/patches/acpi-fpdt-break-on-zero-or-negative-length-read.patch
new file mode 100644 (file)
index 0000000..4e3c73c
--- /dev/null
@@ -0,0 +1,22 @@
+From: Pavel Holica <conscript89@gmail.com>
+Date: Wed, 6 Nov 2013 23:24:16 +0100
+Subject: acpi-fpdt: break on zero or negative length read
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1027478
+---
+ src/shared/acpi-fpdt.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
+index 75648b4..7bae47f 100644
+--- a/src/shared/acpi-fpdt.c
++++ b/src/shared/acpi-fpdt.c
+@@ -109,6 +109,8 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
+         for (rec = (struct acpi_fpdt_header *)(buf + sizeof(struct acpi_table_header));
+              (char *)rec < buf + l;
+              rec = (struct acpi_fpdt_header *)((char *)rec + rec->length)) {
++                if (rec->length <= 0)
++                        break;
+                 if (rec->type != ACPI_FPDT_TYPE_BOOT)
+                         continue;
+                 if (rec->length != sizeof(struct acpi_fpdt_header))
diff --git a/debian/patches/acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch b/debian/patches/acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
new file mode 100644 (file)
index 0000000..0c3480f
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 2 Oct 2013 13:39:49 +0200
+Subject: acpi-fptd: fix memory leak in acpi_get_boot_usec
+
+---
+ src/shared/acpi-fpdt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
+index b094f34..a7c83ed 100644
+--- a/src/shared/acpi-fpdt.c
++++ b/src/shared/acpi-fpdt.c
+@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
+ };
+ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
+-        char *buf;
++        _cleanup_free_ char *buf;
+         struct acpi_table_header *tbl;
+         size_t l;
+         struct acpi_fpdt_header *rec;
diff --git a/debian/patches/acpi-make-sure-we-never-free-an-uninitialized-pointe.patch b/debian/patches/acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
new file mode 100644 (file)
index 0000000..b22a8ba
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 14:03:56 +0200
+Subject: acpi: make sure we never free an uninitialized pointer
+
+---
+ src/shared/acpi-fpdt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
+index a7c83ed..af58c7c 100644
+--- a/src/shared/acpi-fpdt.c
++++ b/src/shared/acpi-fpdt.c
+@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
+ };
+ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
+-        _cleanup_free_ char *buf;
++        _cleanup_free_ char *buf = NULL;
+         struct acpi_table_header *tbl;
+         size_t l;
+         struct acpi_fpdt_header *rec;
diff --git a/debian/patches/activate-clean-up-inherited-descriptors.patch b/debian/patches/activate-clean-up-inherited-descriptors.patch
new file mode 100644 (file)
index 0000000..7591d78
--- /dev/null
@@ -0,0 +1,78 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 10 Dec 2013 21:52:11 -0500
+Subject: activate: clean up inherited descriptors
+
+> [simon@troela server]$ /usr/lib/systemd/systemd-activate -l 9000 main.js
+> Assertion 'fd == 3 + count' failed at src/activate/activate.c:115,
+> function open_sockets(). Aborting.
+> Aborted (core dumped)
+
+> after a bit debuging i found the problem:
+> slim appears to leak an fd into all of its children:
+> stat /proc/14004/fd/3  (14004 is the pid a random process in my session)
+>  File: '/proc/14004/fd/3' -> '/var/log/slim.log'
+
+systemd-activate should be robust against the shell (or anything else) leaking
+descriptors. Now everything except stdin/stdout/stderr and received sockets
+will be closed.
+
+(cherry picked from commit c099716487df4a4f5394e57e7ca14da1d358166a)
+---
+ src/activate/activate.c | 23 +++++++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/src/activate/activate.c b/src/activate/activate.c
+index a9461bc..6aa8b9f 100644
+--- a/src/activate/activate.c
++++ b/src/activate/activate.c
+@@ -137,6 +137,17 @@ static int open_sockets(int *epoll_fd, bool accept) {
+                 count ++;
+         }
++        /* Close logging and all other descriptors */
++        if (arg_listen) {
++                int except[3 + n];
++
++                for (fd = 0; fd < SD_LISTEN_FDS_START + n; fd++)
++                        except[fd] = fd;
++
++                log_close();
++                close_all_fds(except, 3 + n);
++        }
++
+         /** Note: we leak some fd's on error here. I doesn't matter
+          *  much, since the program will exit immediately anyway, but
+          *  would be a pain to fix.
+@@ -147,6 +158,7 @@ static int open_sockets(int *epoll_fd, bool accept) {
+                 fd = make_socket_fd(*address, SOCK_STREAM | (arg_accept*SOCK_CLOEXEC));
+                 if (fd < 0) {
++                        log_open();
+                         log_error("Failed to open '%s': %s", *address, strerror(-fd));
+                         return fd;
+                 }
+@@ -154,6 +166,9 @@ static int open_sockets(int *epoll_fd, bool accept) {
+                 count ++;
+         }
++        if (arg_listen)
++                log_open();
++
+         *epoll_fd = epoll_create1(EPOLL_CLOEXEC);
+         if (*epoll_fd < 0) {
+                 log_error("Failed to create epoll object: %m");
+@@ -298,10 +313,10 @@ static void sigchld_hdl(int sig, siginfo_t *t, void *data) {
+ static int install_chld_handler(void) {
+         int r;
+-        struct sigaction act;
+-        zero(act);
+-        act.sa_flags = SA_SIGINFO;
+-        act.sa_sigaction = sigchld_hdl;
++        struct sigaction act = {
++                .sa_flags = SA_SIGINFO,
++                .sa_sigaction = sigchld_hdl,
++        };
+         r = sigaction(SIGCHLD, &act, 0);
+         if (r < 0)
diff --git a/debian/patches/activate-fix-crash-when-s-is-passed.patch b/debian/patches/activate-fix-crash-when-s-is-passed.patch
new file mode 100644 (file)
index 0000000..d09571d
--- /dev/null
@@ -0,0 +1,22 @@
+From: =?utf-8?q?Mantas_Mikul=C4=97nas?= <grawity@gmail.com>
+Date: Wed, 13 Nov 2013 13:36:16 +0200
+Subject: activate: fix crash when -s is passed
+
+getopt_long() was told to accept -s which was never implemented.
+---
+ src/activate/activate.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/activate/activate.c b/src/activate/activate.c
+index fc581b9..a9461bc 100644
+--- a/src/activate/activate.c
++++ b/src/activate/activate.c
+@@ -346,7 +346,7 @@ static int parse_argv(int argc, char *argv[]) {
+         assert(argc >= 0);
+         assert(argv);
+-        while ((c = getopt_long(argc, argv, "+hl:saE:", options, NULL)) >= 0)
++        while ((c = getopt_long(argc, argv, "+hl:aE:", options, NULL)) >= 0)
+                 switch(c) {
+                 case 'h':
+                         help();
diff --git a/debian/patches/activate-mention-E-in-the-help-text.patch b/debian/patches/activate-mention-E-in-the-help-text.patch
new file mode 100644 (file)
index 0000000..1e749d8
--- /dev/null
@@ -0,0 +1,21 @@
+From: =?utf-8?q?Mantas_Mikul=C4=97nas?= <grawity@gmail.com>
+Date: Wed, 13 Nov 2013 13:36:17 +0200
+Subject: activate: mention -E in the help text
+
+---
+ src/activate/activate.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/activate/activate.c b/src/activate/activate.c
+index 83d25b1..fc581b9 100644
+--- a/src/activate/activate.c
++++ b/src/activate/activate.c
+@@ -316,6 +316,8 @@ static int help(void) {
+                "  -l --listen=ADDR     Listen for raw connections at ADDR\n"
+                "  -a --accept          Spawn separate child for each connection\n"
+                "  -h --help            Show this help and exit\n"
++               "  -E --environment=NAME[=VALUE]\n"
++               "                       Pass an environment variable to children\n"
+                "  --version            Print version string and exit\n"
+                "\n"
+                "Note: file descriptors from sd_listen_fds() will be passed through.\n"
diff --git a/debian/patches/add-bash-completion-for-systemd-cat.patch b/debian/patches/add-bash-completion-for-systemd-cat.patch
new file mode 100644 (file)
index 0000000..fc66e10
--- /dev/null
@@ -0,0 +1,86 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 4 Mar 2014 23:16:30 +0100
+Subject: add bash completion for systemd-cat
+
+(cherry picked from commit 207017017db91232189226bfcf29e61926310a9b)
+---
+ Makefile.am                       |  1 +
+ shell-completion/bash/systemd-cat | 57 +++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 58 insertions(+)
+ create mode 100644 shell-completion/bash/systemd-cat
+
+diff --git a/Makefile.am b/Makefile.am
+index dafc428..df476ce 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -342,6 +342,7 @@ dist_bashcompletion_DATA = \
+       shell-completion/bash/journalctl \
+       shell-completion/bash/systemctl \
+       shell-completion/bash/systemd-analyze \
++      shell-completion/bash/systemd-cat \
+       shell-completion/bash/systemd-cgls \
+       shell-completion/bash/systemd-cgtop \
+       shell-completion/bash/systemd-delta \
+diff --git a/shell-completion/bash/systemd-cat b/shell-completion/bash/systemd-cat
+new file mode 100644
+index 0000000..8d84042
+--- /dev/null
++++ b/shell-completion/bash/systemd-cat
+@@ -0,0 +1,57 @@
++# systemd-cat(1) completion                  -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++_systemd_cat() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local i verb comps
++
++        local -A OPTS=(
++               [STANDALONE]='-h --help --version'
++                      [ARG]='-t --identifier -p --priority --level-prefix'
++        )
++
++        _init_completion || return
++
++        if __contains_word "$prev" ${OPTS[ARG]}; then
++                case $prev in
++                        --identifier|-t)
++                                comps=''
++                        ;;
++                        --priority|-p)
++                                comps='emerg alert crit err warning notice info debug'
++                        ;;
++                        --level-prefix)
++                                comps='yes no'
++                        ;;
++                esac
++                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++                return 0
++        fi
++
++        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++}
++
++complete -F _systemd_cat systemd-cat
diff --git a/debian/patches/add-bash-completion-for-systemd-cgls.patch b/debian/patches/add-bash-completion-for-systemd-cgls.patch
new file mode 100644 (file)
index 0000000..e808bfc
--- /dev/null
@@ -0,0 +1,85 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sat, 1 Mar 2014 23:08:38 +0100
+Subject: add bash completion for systemd-cgls
+
+(cherry picked from commit abdab4f602745952030a37b1521cd0374d51d3ea)
+---
+ Makefile.am                        |  1 +
+ shell-completion/bash/systemd-cgls | 56 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 57 insertions(+)
+ create mode 100644 shell-completion/bash/systemd-cgls
+
+diff --git a/Makefile.am b/Makefile.am
+index 03a1f91..d4a65e7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -342,6 +342,7 @@ dist_bashcompletion_DATA = \
+       shell-completion/bash/journalctl \
+       shell-completion/bash/systemctl \
+       shell-completion/bash/systemd-analyze \
++      shell-completion/bash/systemd-cgls \
+       shell-completion/bash/systemd-delta \
+       shell-completion/bash/systemd-nspawn \
+       shell-completion/bash/systemd-run \
+diff --git a/shell-completion/bash/systemd-cgls b/shell-completion/bash/systemd-cgls
+new file mode 100644
+index 0000000..0570438
+--- /dev/null
++++ b/shell-completion/bash/systemd-cgls
+@@ -0,0 +1,56 @@
++# systemd-cgls(1) completion                  -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++__get_machines() {
++        local a b
++        machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; };
++}
++
++_systemd_cgls() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local i verb comps
++
++        local -A OPTS=(
++               [STANDALONE]='-h --help --version --all -l --full -k --no-pager'
++                      [ARG]='-M --machine'
++        )
++
++        _init_completion || return
++
++        if __contains_word "$prev" ${OPTS[ARG]}; then
++                case $prev in
++                        --machine|-M)
++                                comps=$( __get_machines )
++                        ;;
++                esac
++                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++                return 0
++        fi
++
++        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++}
++
++complete -F _systemd_cgls systemd-cgls
diff --git a/debian/patches/add-bash-completion-for-systemd-cgtop.patch b/debian/patches/add-bash-completion-for-systemd-cgtop.patch
new file mode 100644 (file)
index 0000000..bc77a33
--- /dev/null
@@ -0,0 +1,69 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sun, 2 Mar 2014 22:58:18 +0100
+Subject: add bash completion for systemd-cgtop
+
+(cherry picked from commit d9256bac4da4241cb5d97960c899390839f2c6e5)
+---
+ Makefile.am                         |  1 +
+ shell-completion/bash/systemd-cgtop | 40 +++++++++++++++++++++++++++++++++++++
+ 2 files changed, 41 insertions(+)
+ create mode 100644 shell-completion/bash/systemd-cgtop
+
+diff --git a/Makefile.am b/Makefile.am
+index d4a65e7..64d44ce 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -343,6 +343,7 @@ dist_bashcompletion_DATA = \
+       shell-completion/bash/systemctl \
+       shell-completion/bash/systemd-analyze \
+       shell-completion/bash/systemd-cgls \
++      shell-completion/bash/systemd-cgtop \
+       shell-completion/bash/systemd-delta \
+       shell-completion/bash/systemd-nspawn \
+       shell-completion/bash/systemd-run \
+diff --git a/shell-completion/bash/systemd-cgtop b/shell-completion/bash/systemd-cgtop
+new file mode 100644
+index 0000000..d7ea42d
+--- /dev/null
++++ b/shell-completion/bash/systemd-cgtop
+@@ -0,0 +1,40 @@
++# systemd-cgtop(1) completion                  -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++_systemd_cgtop() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local comps
++
++        local -A OPTS=(
++               [STANDALONE]='-h --help --version -p -t -c -m -i -b --batch -n --iterations -d --delay'
++        )
++
++        _init_completion || return
++
++        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++}
++
++complete -F _systemd_cgtop systemd-cgtop
diff --git a/debian/patches/add-bash-completion-for-systemd-detect-virt.patch b/debian/patches/add-bash-completion-for-systemd-detect-virt.patch
new file mode 100644 (file)
index 0000000..bde6c20
--- /dev/null
@@ -0,0 +1,69 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Mon, 3 Mar 2014 22:16:04 +0100
+Subject: add bash completion for systemd-detect-virt
+
+(cherry picked from commit 3bfe58cbd4a9b1d2520f425f95de718f3a583d39)
+---
+ Makefile.am                               |  1 +
+ shell-completion/bash/systemd-detect-virt | 40 +++++++++++++++++++++++++++++++
+ 2 files changed, 41 insertions(+)
+ create mode 100644 shell-completion/bash/systemd-detect-virt
+
+diff --git a/Makefile.am b/Makefile.am
+index 64d44ce..dafc428 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -345,6 +345,7 @@ dist_bashcompletion_DATA = \
+       shell-completion/bash/systemd-cgls \
+       shell-completion/bash/systemd-cgtop \
+       shell-completion/bash/systemd-delta \
++      shell-completion/bash/systemd-detect-virt \
+       shell-completion/bash/systemd-nspawn \
+       shell-completion/bash/systemd-run \
+       shell-completion/bash/udevadm \
+diff --git a/shell-completion/bash/systemd-detect-virt b/shell-completion/bash/systemd-detect-virt
+new file mode 100644
+index 0000000..df06c29
+--- /dev/null
++++ b/shell-completion/bash/systemd-detect-virt
+@@ -0,0 +1,40 @@
++# systemd-detect-virt(1) completion             -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++_systemd_detect_virt() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local i verb comps
++
++        local -A OPTS=(
++               [STANDALONE]='-h --help --version -c --container -v --vm -q --quiet'
++        )
++
++        _init_completion || return
++
++        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++}
++
++complete -F _systemd_detect_virt systemd-detect-virt
diff --git a/debian/patches/analyze-fix-plot-issues-when-using-gummiboot.patch b/debian/patches/analyze-fix-plot-issues-when-using-gummiboot.patch
new file mode 100644 (file)
index 0000000..bf52562
--- /dev/null
@@ -0,0 +1,35 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Fri, 31 Jan 2014 07:07:20 +0100
+Subject: analyze: fix plot issues when using gummiboot
+
+It would crash and the legend in the bottom followed the time 0.0.
+
+(cherry picked from commit b5cfa7408c4cb68e9bb232fc34b07fd03c915617)
+---
+ src/analyze/systemd-analyze.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
+index f4c7f68..317baf9 100644
+--- a/src/analyze/systemd-analyze.c
++++ b/src/analyze/systemd-analyze.c
+@@ -540,7 +540,7 @@ static int analyze_plot(DBusConnection *bus) {
+             name.nodename, name.release, name.version, name.machine);
+         svg("<g transform=\"translate(%.3f,100)\">\n", 20.0 + (SCALE_X * boot->firmware_time));
+-        svg_graph_box(m, -boot->firmware_time, boot->finish_time);
++        svg_graph_box(m, -(double) boot->firmware_time, boot->finish_time);
+         if (boot->firmware_time) {
+                 svg_bar("firmware", -(double) boot->firmware_time, -(double) boot->loader_time, y);
+@@ -589,7 +589,10 @@ static int analyze_plot(DBusConnection *bus) {
+                 y++;
+         }
++        svg("</g>\n");
++
+         /* Legend */
++        svg("<g transform=\"translate(20,100)\">\n");
+         y++;
+         svg_bar("activating", 0, 300000, y);
+         svg_text(true, 400000, y, "Activating");
diff --git a/debian/patches/analyze-fix-plot-with-bad-y-size.patch b/debian/patches/analyze-fix-plot-with-bad-y-size.patch
new file mode 100644 (file)
index 0000000..3495b5f
--- /dev/null
@@ -0,0 +1,29 @@
+From: Jeffrey Clark <h0tw1r3@gmail.com>
+Date: Wed, 23 Apr 2014 22:37:43 +0200
+Subject: analyze: fix plot with bad y size
+
+systemd-analyze plot > test.svg produces output with all y and height
+element attributes equal to zero. This of course causes the resulting
+svg to appear blank (zero height). Bug does not affect x86. Looks like
+a compiler optimization may be the culprit.
+
+https://github.com/archlinuxarm/PKGBUILDs/issues/815
+(cherry picked from commit a213b7e977221ca96bbc1b19a5a879c912ba2488)
+(cherry picked from commit 6e150a59cacafbb2c339e0854f449d63ef919a4f)
+---
+ src/analyze/systemd-analyze.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
+index 317baf9..25f8ad6 100644
+--- a/src/analyze/systemd-analyze.c
++++ b/src/analyze/systemd-analyze.c
+@@ -41,7 +41,7 @@
+ #include "pager.h"
+ #define SCALE_X (0.1 / 1000.0)   /* pixels per us */
+-#define SCALE_Y 20.0
++#define SCALE_Y (20.0)
+ #define compare(a, b) (((a) > (b))? 1 : (((b) > (a))? -1 : 0))
diff --git a/debian/patches/analyze-plot-place-the-text-on-the-side-with-most-sp.patch b/debian/patches/analyze-plot-place-the-text-on-the-side-with-most-sp.patch
new file mode 100644 (file)
index 0000000..62ac68f
--- /dev/null
@@ -0,0 +1,90 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Fri, 1 Nov 2013 22:57:47 +0100
+Subject: analyze: plot: place the text on the side with most space
+
+Set the width of the svg to always fit the longest string
+while taking its starting position into consideration.
+
+Place the text on the right while the starting point is
+in the first half of the screen. After that we put it on
+the left to save the svg from being wider that it has to.
+---
+ src/analyze/systemd-analyze.c | 29 +++++++++++++++++------------
+ 1 file changed, 17 insertions(+), 12 deletions(-)
+
+diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
+index 9a69795..f4c7f68 100644
+--- a/src/analyze/systemd-analyze.c
++++ b/src/analyze/systemd-analyze.c
+@@ -462,7 +462,7 @@ static int analyze_plot(DBusConnection *bus) {
+                 m++;
+         for (u = times; u < times + n; u++) {
+-                double len;
++                double text_start, text_width;
+                 if (u->ixt < boot->userspace_time ||
+                     u->ixt > boot->finish_time) {
+@@ -470,10 +470,14 @@ static int analyze_plot(DBusConnection *bus) {
+                         u->name = NULL;
+                         continue;
+                 }
+-                len = ((boot->firmware_time + u->ixt) * SCALE_X)
+-                        + (10.0 * strlen(u->name));
+-                if (len > width)
+-                        width = len;
++
++                /* If the text cannot fit on the left side then
++                 * increase the svg width so it fits on the right.
++                 * TODO: calculate the text width more accurately */
++                text_width = 8.0 * strlen(u->name);
++                text_start = (boot->firmware_time + u->ixt) * SCALE_X;
++                if (text_width > text_start && text_width + text_start > width)
++                        width = text_width + text_start;
+                 if (u->iet > u->ixt && u->iet <= boot->finish_time
+                                 && u->aet == 0 && u->axt == 0)
+@@ -561,7 +565,7 @@ static int analyze_plot(DBusConnection *bus) {
+         svg_bar("active", boot->userspace_time, boot->finish_time, y);
+         svg_bar("generators", boot->generators_start_time, boot->generators_finish_time, y);
+         svg_bar("unitsload", boot->unitsload_start_time, boot->unitsload_finish_time, y);
+-        svg_text("left", boot->userspace_time, y, "systemd");
++        svg_text(true, boot->userspace_time, y, "systemd");
+         y++;
+         for (u = times; u < times + n; u++) {
+@@ -575,7 +579,8 @@ static int analyze_plot(DBusConnection *bus) {
+                 svg_bar("active",       u->aet, u->axt, y);
+                 svg_bar("deactivating", u->axt, u->iet, y);
+-                b = u->ixt * SCALE_X > width * 2 / 3;
++                /* place the text on the left if we have passed the half of the svg width */
++                b = u->ixt * SCALE_X < width / 2;
+                 if (u->time)
+                         svg_text(b, u->ixt, y, "%s (%s)",
+                                  u->name, format_timespan(ts, sizeof(ts), u->time, USEC_PER_MSEC));
+@@ -587,19 +592,19 @@ static int analyze_plot(DBusConnection *bus) {
+         /* Legend */
+         y++;
+         svg_bar("activating", 0, 300000, y);
+-        svg_text("right", 400000, y, "Activating");
++        svg_text(true, 400000, y, "Activating");
+         y++;
+         svg_bar("active", 0, 300000, y);
+-        svg_text("right", 400000, y, "Active");
++        svg_text(true, 400000, y, "Active");
+         y++;
+         svg_bar("deactivating", 0, 300000, y);
+-        svg_text("right", 400000, y, "Deactivating");
++        svg_text(true, 400000, y, "Deactivating");
+         y++;
+         svg_bar("generators", 0, 300000, y);
+-        svg_text("right", 400000, y, "Generators");
++        svg_text(true, 400000, y, "Generators");
+         y++;
+         svg_bar("unitsload", 0, 300000, y);
+-        svg_text("right", 400000, y, "Loading unit files");
++        svg_text(true, 400000, y, "Loading unit files");
+         y++;
+         svg("</g>\n\n");
diff --git a/debian/patches/analyze-set-white-backgound.patch b/debian/patches/analyze-set-white-backgound.patch
new file mode 100644 (file)
index 0000000..1064f67
--- /dev/null
@@ -0,0 +1,32 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Mon, 21 Oct 2013 21:29:23 +0200
+Subject: analyze: set white backgound
+
+In programs like eog and gimp the transparant background did not
+look very good.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=70720
+---
+ src/analyze/systemd-analyze.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
+index a4f15eb..9a69795 100644
+--- a/src/analyze/systemd-analyze.c
++++ b/src/analyze/systemd-analyze.c
+@@ -507,6 +507,7 @@ static int analyze_plot(DBusConnection *bus) {
+         /* style sheet */
+         svg("<defs>\n  <style type=\"text/css\">\n    <![CDATA[\n"
+             "      rect       { stroke-width: 1; stroke-opacity: 0; }\n"
++            "      rect.background   { fill: rgb(255,255,255); }\n"
+             "      rect.activating   { fill: rgb(255,0,0); fill-opacity: 0.7; }\n"
+             "      rect.active       { fill: rgb(200,150,150); fill-opacity: 0.7; }\n"
+             "      rect.deactivating { fill: rgb(150,100,100); fill-opacity: 0.7; }\n"
+@@ -528,6 +529,7 @@ static int analyze_plot(DBusConnection *bus) {
+             "      text.sec   { font-size: 10px; }\n"
+             "    ]]>\n   </style>\n</defs>\n\n");
++        svg("<rect class=\"background\" width=\"100%%\" height=\"100%%\" />\n");
+         svg("<text x=\"20\" y=\"50\">%s</text>", pretty_times);
+         svg("<text x=\"20\" y=\"30\">%s %s (%s %s) %s</text>",
+             isempty(osname) ? "Linux" : osname,
diff --git a/debian/patches/ask-password-when-the-user-types-a-overly-long-passw.patch b/debian/patches/ask-password-when-the-user-types-a-overly-long-passw.patch
new file mode 100644 (file)
index 0000000..fd7d081
--- /dev/null
@@ -0,0 +1,32 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 25 Mar 2014 01:27:05 +0100
+Subject: ask-password: when the user types a overly long password,
+ beep and refuse
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Based on a similar patch from David Härdeman.
+
+(cherry picked from commit 036eeac5a1799fa2c0ae11a14d8c667b5d303189)
+(cherry picked from commit 643d71530dcadeb94569cc2e5aa057e0df8a7186)
+---
+ src/shared/ask-password-api.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
+index 4557155..25367d0 100644
+--- a/src/shared/ask-password-api.c
++++ b/src/shared/ask-password-api.c
+@@ -207,6 +207,11 @@ int ask_password_tty(
+                         if (ttyfd >= 0)
+                                 loop_write(ttyfd, "(no echo) ", 10, false);
+                 } else {
++                        if (p >= sizeof(passphrase)-1) {
++                                loop_write(ttyfd, "\a", 1, false);
++                                continue;
++                        }
++
+                         passphrase[p++] = c;
+                         if (!silent_mode && ttyfd >= 0)
diff --git a/debian/patches/async-add-asynchronous-close-call.patch b/debian/patches/async-add-asynchronous-close-call.patch
new file mode 100644 (file)
index 0000000..0b7cc76
--- /dev/null
@@ -0,0 +1,59 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 2 May 2014 17:56:05 +0200
+Subject: async: add asynchronous close() call
+
+(cherry picked from commit 8a474b0c04a5a3608dda53edc1ddaa932ba177bf)
+(cherry picked from commit 43f1b28bc457c92f85332dda752d5426cde466ae)
+---
+ src/core/async.c | 22 ++++++++++++++++++++++
+ src/core/async.h |  2 ++
+ 2 files changed, 24 insertions(+)
+
+diff --git a/src/core/async.c b/src/core/async.c
+index af527be..3876ded 100644
+--- a/src/core/async.c
++++ b/src/core/async.c
+@@ -24,6 +24,7 @@
+ #include "async.h"
+ #include "log.h"
++#include "util.h"
+ int asynchronous_job(void* (*func)(void *p), void *arg) {
+         pthread_attr_t a;
+@@ -70,3 +71,24 @@ int asynchronous_sync(void) {
+         return asynchronous_job(sync_thread, NULL);
+ }
++
++static void *close_thread(void *p) {
++        safe_close(PTR_TO_INT(p));
++        return NULL;
++}
++
++int asynchronous_close(int fd) {
++        int r;
++
++        /* This is supposed to behave similar to safe_close(), but
++         * actually invoke close() asynchronously, so that it will
++         * never block. Ideally the kernel would have an API for this,
++         * but it doesn't, so we work around it, and hide this as a
++         * far away as we can. */
++
++        r = asynchronous_job(close_thread, INT_TO_PTR(fd));
++        if (r < 0)
++                safe_close(fd);
++
++        return -1;
++}
+diff --git a/src/core/async.h b/src/core/async.h
+index 6601b4d..7f1ef79 100644
+--- a/src/core/async.h
++++ b/src/core/async.h
+@@ -22,4 +22,6 @@
+ ***/
+ int asynchronous_job(void* (*func)(void *p), void *arg);
++
+ int asynchronous_sync(void);
++int asynchronous_close(int fd);
diff --git a/debian/patches/automount-log-info-about-triggering-process.patch b/debian/patches/automount-log-info-about-triggering-process.patch
new file mode 100644 (file)
index 0000000..8ae1b3b
--- /dev/null
@@ -0,0 +1,25 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Thu, 28 Nov 2013 01:25:10 +0100
+Subject: automount: log info about triggering process
+
+Conflicts:
+       src/core/automount.c
+---
+ src/core/automount.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/automount.c b/src/core/automount.c
+index d1379e0..203104e 100644
+--- a/src/core/automount.c
++++ b/src/core/automount.c
+@@ -776,8 +776,8 @@ static void automount_fd_event(Unit *u, int fd, uint32_t events, Watch *w) {
+                         _cleanup_free_ char *p = NULL;
+                         get_process_comm(packet.v5_packet.pid, &p);
+-                        log_debug_unit(u->id,
+-                                       "Got direct mount request on %s, triggered by %lu (%s)",
++                        log_info_unit(u->id,
++                                       "Got automount request for %s, triggered by %lu (%s)",
+                                        a->where, (unsigned long) packet.v5_packet.pid, strna(p));
+                 } else
+                         log_debug_unit(u->id, "Got direct mount request on %s", a->where);
diff --git a/debian/patches/backlight-Avoid-restoring-brightness-to-an-unreadabl.patch b/debian/patches/backlight-Avoid-restoring-brightness-to-an-unreadabl.patch
new file mode 100644 (file)
index 0000000..135acb5
--- /dev/null
@@ -0,0 +1,77 @@
+From: Josh Triplett <josh@joshtriplett.org>
+Date: Tue, 11 Mar 2014 21:16:33 -0700
+Subject: backlight: Avoid restoring brightness to an unreadably dim level
+
+Some systems turn the backlight all the way off at the lowest levels.
+Clamp saved brightness to at least 1 or 5% of max_brightness.  This
+avoids preserving an unreadably dim screen, which would otherwise force
+the user to disable state restoration.
+
+(cherry picked from commit 7b909d7407965c03caaba30daae7aee113627a83)
+(cherry picked from commit 7bd1f7eab10b4b374b991da5cb378feb233ca0ca)
+---
+ src/backlight/backlight.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 4b04a3a..2740b80 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -192,6 +192,48 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
+         return true;
+ }
++/* Some systems turn the backlight all the way off at the lowest levels.
++ * clamp_brightness clamps the saved brightness to at least 1 or 5% of
++ * max_brightness.  This avoids preserving an unreadably dim screen, which
++ * would otherwise force the user to disable state restoration. */
++static void clamp_brightness(struct udev_device *device, char **value) {
++        int r;
++        const char *max_brightness_str;
++        unsigned brightness, max_brightness, new_brightness;
++
++        max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness");
++        if (!max_brightness_str) {
++                log_warning("Failed to read max_brightness attribute; not checking saved brightness");
++                return;
++        }
++
++        r = safe_atou(*value, &brightness);
++        if (r < 0) {
++                log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r));
++                return;
++        }
++
++        r = safe_atou(max_brightness_str, &max_brightness);
++        if (r < 0) {
++                log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r));
++                return;
++        }
++
++        new_brightness = MAX3(brightness, 1U, max_brightness/20);
++        if (new_brightness != brightness) {
++                char *old_value = *value;
++
++                r = asprintf(value, "%u", new_brightness);
++                if (r < 0) {
++                        log_oom();
++                        return;
++                }
++
++                log_debug("Saved brightness %s too low; increasing to %s.", old_value, *value);
++                free(old_value);
++        }
++}
++
+ int main(int argc, char *argv[]) {
+         _cleanup_udev_unref_ struct udev *udev = NULL;
+         _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+@@ -306,6 +348,8 @@ int main(int argc, char *argv[]) {
+                         return EXIT_FAILURE;
+                 }
++                clamp_brightness(device, &value);
++
+                 r = udev_device_set_sysattr_value(device, "brightness", value);
+                 if (r < 0) {
+                         log_error("Failed to write system attribute: %s", strerror(-r));
diff --git a/debian/patches/backlight-Do-not-clamp-brightness-for-LEDs.patch b/debian/patches/backlight-Do-not-clamp-brightness-for-LEDs.patch
new file mode 100644 (file)
index 0000000..e0e6d1d
--- /dev/null
@@ -0,0 +1,59 @@
+From: Denis Tikhomirov <dvtikhomirov@gmail.com>
+Date: Thu, 5 Jun 2014 23:59:40 +0400
+Subject: backlight: Do not clamp brightness for LEDs
+
+https://bugs.freedesktop.org/show_bug.cgi?id=77092
+
+On Thu, Jun 05, 2014 at 08:37:20AM +0200, Lennart Poettering wrote:
+> The patch is line-broken, please send an uncorrupted patch!
+I am very sorry, I forgot that my client limits line width. I will use
+mutt now on.
+> clamp_brightness() clamps the brightness value to the range of the
+> actual device. This is a recent addition that was added to deal with
+> driver updates where the resolution is changed. I don't think this part
+> should be dropped for LED devices. The clamp_brightness() call hence
+> should be called unconditionally, however, internally it should use a
+> different min_brightness value if something is an !backlight devices...
+Thank you for explanation, this sounds very reasonable to me. Please,
+see updated patch:
+
+(cherry picked from commit 4cd2b2cf8ca585d15ebc859701b346658262b5bb)
+(cherry picked from commit 385d2ab37b1a00b513edf5c3888b91d91ad3aae3)
+---
+ src/backlight/backlight.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 77ae48c..e944f57 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -221,11 +221,13 @@ static unsigned get_max_brightness(struct udev_device *device) {
+ /* Some systems turn the backlight all the way off at the lowest levels.
+  * clamp_brightness clamps the saved brightness to at least 1 or 5% of
+- * max_brightness.  This avoids preserving an unreadably dim screen, which
+- * would otherwise force the user to disable state restoration. */
++ * max_brightness in case of 'backlight' subsystem. This avoids preserving
++ * an unreadably dim screen, which would otherwise force the user to
++ * disable state restoration. */
+ static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) {
+         int r;
+         unsigned brightness, new_brightness, min_brightness;
++        const char *subsystem;
+         r = safe_atou(*value, &brightness);
+         if (r < 0) {
+@@ -233,7 +235,12 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
+                 return;
+         }
+-        min_brightness = MAX(1U, max_brightness/20);
++        subsystem = udev_device_get_subsystem(device);
++        if (streq_ptr(subsystem, "backlight"))
++                min_brightness = MAX(1U, max_brightness/20);
++        else
++                min_brightness = 0;
++
+         new_brightness = CLAMP(brightness, min_brightness, max_brightness);
+         if (new_brightness != brightness) {
+                 char *old_value = *value;
diff --git a/debian/patches/backlight-Fix-copy-paste-error-printing-an-unrelated.patch b/debian/patches/backlight-Fix-copy-paste-error-printing-an-unrelated.patch
new file mode 100644 (file)
index 0000000..4d941a8
--- /dev/null
@@ -0,0 +1,27 @@
+From: Josh Triplett <josh@joshtriplett.org>
+Date: Tue, 11 Mar 2014 21:09:04 -0700
+Subject: backlight: Fix copy/paste error printing an unrelated error code
+
+udev_device_get_sysattr_value returns NULL on failure, but doesn't
+provide an error code; thus, when printing an error from it, don't print
+an unrelated error code from a previous call.
+
+(cherry picked from commit cddc35f75ecff63b2ffd3f8e4c863d475e7b14ca)
+(cherry picked from commit b8b80c8aa1effecb9c224cd3be1e8acbf7a44745)
+---
+ src/backlight/backlight.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index e8cdad6..4b04a3a 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -322,7 +322,7 @@ int main(int argc, char *argv[]) {
+                 value = udev_device_get_sysattr_value(device, "brightness");
+                 if (!value) {
+-                        log_error("Failed to read system attribute: %s", strerror(-r));
++                        log_error("Failed to read system attribute");
+                         return EXIT_FAILURE;
+                 }
diff --git a/debian/patches/backlight-always-prefer-firmware-platform-backlights.patch b/debian/patches/backlight-always-prefer-firmware-platform-backlights.patch
new file mode 100644 (file)
index 0000000..bf08b8f
--- /dev/null
@@ -0,0 +1,300 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 14 Oct 2013 02:12:52 +0200
+Subject: backlight: always prefer "firmware"/"platform" backlights over "raw"
+ backlights if we have both for the same device
+
+(cherry picked from commit 0f4ba83c397e807939a4eb0b2cbd04ad4ab548cc)
+
+Conflicts:
+       rules/99-systemd.rules.in
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1108019
+---
+ rules/99-systemd.rules.in |   6 +-
+ src/backlight/backlight.c | 222 +++++++++++++++++++++++++++++++++++++++++++---
+ 2 files changed, 212 insertions(+), 16 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index 79a03cd..ff0e771 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -54,10 +54,10 @@ SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:
+ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sysctl --prefix=/proc/sys/net/ipv4/conf/$name --prefix=/proc/sys/net/ipv4/neigh/$name --prefix=/proc/sys/net/ipv6/conf/$name --prefix=/proc/sys/net/ipv6/neigh/$name"
+-# Pull in backlight save/restore for all firmware backlight devices,
+-# and keyboard backlights
++# Pull in backlight save/restore for all backlight devices and
++# keyboard backlights
+-SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
++SUBSYSTEM=="backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+ SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+ # Asynchronously mount file systems implemented by these modules as
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index c45b2d0..51a67a0 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -25,10 +25,178 @@
+ #include "libudev.h"
+ #include "udev-util.h"
++static struct udev_device *find_pci_or_platform_parent(struct udev_device *device) {
++        struct udev_device *parent;
++        const char *subsystem, *sysname;
++
++        assert(device);
++
++        parent = udev_device_get_parent(device);
++        if (!parent)
++                return NULL;
++
++        subsystem = udev_device_get_subsystem(parent);
++        if (!subsystem)
++                return NULL;
++
++        sysname = udev_device_get_sysname(parent);
++        if (!sysname)
++                return NULL;
++
++        if (streq(subsystem, "drm")) {
++                const char *c;
++
++                c = startswith(sysname, "card");
++                if (!c)
++                        return NULL;
++
++                c += strspn(c, "0123456789");
++                if (*c == '-') {
++                        /* A connector DRM device, let's ignore all but LVDS and eDP! */
++
++                        if (!startswith(c, "-LVDS-") &&
++                            !startswith(c, "-Embedded DisplayPort-"))
++                                return NULL;
++                }
++
++        } else if (streq(subsystem, "pci")) {
++                const char *value;
++
++                value = udev_device_get_sysattr_value(parent, "class");
++                if (value) {
++                        unsigned long class;
++
++                        if (safe_atolu(value, &class) < 0) {
++                                log_warning("Cannot parse PCI class %s of device %s:%s.", value, subsystem, sysname);
++                                return NULL;
++                        }
++
++                        /* Graphics card */
++                        if (class == 0x30000)
++                                return parent;
++                }
++
++        } else if (streq(subsystem, "platform"))
++                return parent;
++
++        return find_pci_or_platform_parent(parent);
++}
++
++static bool same_device(struct udev_device *a, struct udev_device *b) {
++        assert(a);
++        assert(b);
++
++        if (!streq_ptr(udev_device_get_subsystem(a), udev_device_get_subsystem(b)))
++                return false;
++
++        if (!streq_ptr(udev_device_get_sysname(a), udev_device_get_sysname(b)))
++                return false;
++
++        return true;
++}
++
++static bool validate_device(struct udev *udev, struct udev_device *device) {
++        _cleanup_udev_enumerate_unref_ struct udev_enumerate *enumerate = NULL;
++        struct udev_list_entry *item = NULL, *first = NULL;
++        struct udev_device *parent;
++        const char *v, *subsystem;
++        int r;
++
++        assert(udev);
++        assert(device);
++
++        /* Verify whether we should actually care for a specific
++         * backlight device. For backlight devices there might be
++         * multiple ways to access the same control: "firmware"
++         * (i.e. ACPI), "platform" (i.e. via the machine's EC) and
++         * "raw" (via the graphics card). In general we should prefer
++         * "firmware" (i.e. ACPI) or "platform" access over "raw"
++         * access, in order not to confuse the BIOS/EC, and
++         * compatibility with possible low-level hotkey handling of
++         * screen brightness. The kernel will already make sure to
++         * expose only one of "firmware" and "platform" for the same
++         * device to userspace. However, we still need to make sure
++         * that we use "raw" only if no "firmware" or "platform"
++         * device for the same device exists. */
++
++        subsystem = udev_device_get_subsystem(device);
++        if (!streq_ptr(subsystem, "backlight"))
++                return true;
++
++        v = udev_device_get_sysattr_value(device, "type");
++        if (!streq_ptr(v, "raw"))
++                return true;
++
++        parent = find_pci_or_platform_parent(device);
++        if (!parent)
++                return true;
++
++        subsystem = udev_device_get_subsystem(parent);
++        if (!subsystem)
++                return true;
++
++        enumerate = udev_enumerate_new(udev);
++        if (!enumerate)
++                return true;
++
++        r = udev_enumerate_add_match_subsystem(enumerate, "backlight");
++        if (r < 0)
++                return true;
++
++        r = udev_enumerate_scan_devices(enumerate);
++        if (r < 0)
++                return true;
++
++        first = udev_enumerate_get_list_entry(enumerate);
++        udev_list_entry_foreach(item, first) {
++                _cleanup_udev_device_unref_ struct udev_device *other;
++                struct udev_device *other_parent;
++                const char *other_subsystem;
++
++                other = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
++                if (!other)
++                        return true;
++
++                if (same_device(device, other))
++                        continue;
++
++                v = udev_device_get_sysattr_value(other, "type");
++                if (!streq_ptr(v, "platform") && !streq_ptr(v, "firmware"))
++                        continue;
++
++                /* OK, so there's another backlight device, and it's a
++                 * platform or firmware device, so, let's see if we
++                 * can verify it belongs to the same device as
++                 * ours. */
++                other_parent = find_pci_or_platform_parent(other);
++                if (!other_parent)
++                        continue;
++
++                if (same_device(parent, other_parent)) {
++                        /* Both have the same PCI parent, that means
++                         * we are out. */
++                        log_debug("Skipping backlight device %s, since backlight device %s is on same PCI device and, takes precedence.", udev_device_get_sysname(device), udev_device_get_sysname(other));
++                        return false;
++                }
++
++                other_subsystem = udev_device_get_subsystem(other_parent);
++                if (streq_ptr(other_subsystem, "platform") && streq_ptr(subsystem, "pci")) {
++                        /* The other is connected to the platform bus
++                         * and we are a PCI device, that also means we
++                         * are out. */
++                        log_debug("Skipping backlight device %s, since backlight device %s is a platform device and takes precedence.", udev_device_get_sysname(device), udev_device_get_sysname(other));
++                        return false;
++                }
++        }
++
++        return true;
++}
++
+ int main(int argc, char *argv[]) {
+         _cleanup_udev_unref_ struct udev *udev = NULL;
+         _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+-        _cleanup_free_ char *saved = NULL;
++        _cleanup_free_ char *saved = NULL, *ss = NULL;
++        const char *sysname;
+         int r;
+         if (argc != 3) {
+@@ -54,34 +222,57 @@ int main(int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
++        sysname = strchr(argv[2], ':');
++        if (!sysname) {
++                log_error("Requires pair of subsystem and sysname for specifying backlight device.");
++                return EXIT_FAILURE;
++        }
++
++        ss = strndup(argv[2], sysname - argv[2]);
++        if (!ss) {
++                log_oom();
++                return EXIT_FAILURE;
++        }
++
++        sysname++;
++
++        if (!streq(ss, "backlight") && !streq(ss, "leds")) {
++                log_error("Not a backlight or LED device: '%s:%s'", ss, sysname);
++                return EXIT_FAILURE;
++        }
++
+         errno = 0;
+-        device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]);
+-        if (!device)
+-                device = udev_device_new_from_subsystem_sysname(udev, "leds", argv[2]);
++        device = udev_device_new_from_subsystem_sysname(udev, ss, sysname);
+         if (!device) {
+                 if (errno != 0)
+-                        log_error("Failed to get backlight device '%s': %m", argv[2]);
++                        log_error("Failed to get backlight or LED device '%s:%s': %m", ss, sysname);
+                 else
+-                        r = log_oom();
+-
+-                return EXIT_FAILURE;
+-        }
++                        log_oom();
+-        if (!streq_ptr(udev_device_get_subsystem(device), "backlight") &&
+-            !streq_ptr(udev_device_get_subsystem(device), "leds")) {
+-                log_error("Not a backlight device: %s", argv[2]);
+                 return EXIT_FAILURE;
+         }
+-        saved = strappend("/var/lib/systemd/backlight/", udev_device_get_sysname(device));
++        saved = strjoin("/var/lib/systemd/backlight/", ss, ":", sysname, NULL);
+         if (!saved) {
+                 log_oom();
+                 return EXIT_FAILURE;
+         }
++        /* If there are multiple conflicting backlight devices, then
++         * their probing at boot-time might happen in any order. This
++         * means the validity checking of the device then is not
++         * reliable, since it might not see other devices conflicting
++         * with a specific backlight. To deal with this we will
++         * actively delete backlight state files at shutdown (where
++         * device probing should be complete), so that the validity
++         * check at boot time doesn't have to be reliable. */
++
+         if (streq(argv[1], "load")) {
+                 _cleanup_free_ char *value = NULL;
++                if (!validate_device(udev, device))
++                        return EXIT_SUCCESS;
++
+                 r = read_one_line_file(saved, &value);
+                 if (r < 0) {
+@@ -101,6 +292,11 @@ int main(int argc, char *argv[]) {
+         } else if (streq(argv[1], "save")) {
+                 const char *value;
++                if (!validate_device(udev, device)) {
++                        unlink(saved);
++                        return EXIT_SUCCESS;
++                }
++
+                 value = udev_device_get_sysattr_value(device, "brightness");
+                 if (!value) {
+                         log_error("Failed to read system attribute: %s", strerror(-r));
diff --git a/debian/patches/backlight-do-nothing-if-max_brightness-is-0.patch b/debian/patches/backlight-do-nothing-if-max_brightness-is-0.patch
new file mode 100644 (file)
index 0000000..7c7ce9c
--- /dev/null
@@ -0,0 +1,107 @@
+From: =?utf-8?q?Thomas_B=C3=A4chler?= <thomas@archlinux.org>
+Date: Thu, 27 Mar 2014 23:41:59 +0100
+Subject: backlight: do nothing if max_brightness is 0
+
+On virtually any newer Asus mainboard, the eeepc-wmi driver is loaded.
+It exposes a backlight device despite the lack of any physical backlight
+devices. This fake backlight device has max_brightness set to 0. Since
+the introduction of the clamp_brightness function, systemd-backlight
+tries to write '1' to brightness and fails.
+
+This patch changes systemd-backlight to exit gracefully when
+max_brightness is 0 before performing any action. This affects
+both the load and save actions.
+
+(cherry picked from commit 3cadce7d33e263ec7a6a83c00c11144930258b22)
+(cherry picked from commit 555853f8ad1b1db461c45843310bc324bca394de)
+---
+ src/backlight/backlight.c | 44 ++++++++++++++++++++++++++++++--------------
+ 1 file changed, 30 insertions(+), 14 deletions(-)
+
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 2740b80..84bf51d 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -192,30 +192,37 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
+         return true;
+ }
+-/* Some systems turn the backlight all the way off at the lowest levels.
+- * clamp_brightness clamps the saved brightness to at least 1 or 5% of
+- * max_brightness.  This avoids preserving an unreadably dim screen, which
+- * would otherwise force the user to disable state restoration. */
+-static void clamp_brightness(struct udev_device *device, char **value) {
++static unsigned get_max_brightness(struct udev_device *device) {
+         int r;
+         const char *max_brightness_str;
+-        unsigned brightness, max_brightness, new_brightness;
++        unsigned max_brightness;
+         max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness");
+         if (!max_brightness_str) {
+-                log_warning("Failed to read max_brightness attribute; not checking saved brightness");
+-                return;
++                log_warning("Failed to read max_brightness attribute");
++                return 0;
+         }
+-        r = safe_atou(*value, &brightness);
++        r = safe_atou(max_brightness_str, &max_brightness);
+         if (r < 0) {
+-                log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r));
+-                return;
++                log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r));
++                return 0;
+         }
+-        r = safe_atou(max_brightness_str, &max_brightness);
++        return max_brightness;
++}
++
++/* Some systems turn the backlight all the way off at the lowest levels.
++ * clamp_brightness clamps the saved brightness to at least 1 or 5% of
++ * max_brightness.  This avoids preserving an unreadably dim screen, which
++ * would otherwise force the user to disable state restoration. */
++static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) {
++        int r;
++        unsigned brightness, new_brightness;
++
++        r = safe_atou(*value, &brightness);
+         if (r < 0) {
+-                log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r));
++                log_warning("Failed to parse brightness \"%s\": %s", *value, strerror(-r));
+                 return;
+         }
+@@ -239,6 +246,7 @@ int main(int argc, char *argv[]) {
+         _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+         _cleanup_free_ char *saved = NULL, *ss = NULL, *escaped_ss = NULL, *escaped_sysname = NULL, *escaped_path_id = NULL;
+         const char *sysname, *path_id;
++        unsigned max_brightness;
+         int r;
+         if (argc != 3) {
+@@ -294,6 +302,14 @@ int main(int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
++        /* If max_brightness is 0, then there is no actual backlight
++         * device. This happens on desktops with Asus mainboards
++         * that load the eeepc-wmi module.
++         */
++        max_brightness = get_max_brightness(device);
++        if (max_brightness == 0)
++                return EXIT_SUCCESS;
++
+         escaped_ss = cescape(ss);
+         if (!escaped_ss) {
+                 log_oom();
+@@ -348,7 +364,7 @@ int main(int argc, char *argv[]) {
+                         return EXIT_FAILURE;
+                 }
+-                clamp_brightness(device, &value);
++                clamp_brightness(device, &value, max_brightness);
+                 r = udev_device_set_sysattr_value(device, "brightness", value);
+                 if (r < 0) {
diff --git a/debian/patches/backlight-handle-saved-brightness-exceeding-max-brig.patch b/debian/patches/backlight-handle-saved-brightness-exceeding-max-brig.patch
new file mode 100644 (file)
index 0000000..fa23609
--- /dev/null
@@ -0,0 +1,62 @@
+From: Jani Nikula <jani.nikula@intel.com>
+Date: Wed, 7 May 2014 12:01:01 +0300
+Subject: backlight: handle saved brightness exceeding max brightness
+
+If too high a brightness value has been saved (e.g. due to kernel
+mechanism changing from one kernel version to another, or booting the
+userspace on another system), the brightness update fails and the
+process exits.
+
+Clamp saved brightness between the policy minimum introduced in
+
+commit 7b909d7407965c03caaba30daae7aee113627a83
+Author: Josh Triplett <josh@joshtriplett.org>
+Date:   Tue Mar 11 21:16:33 2014 -0700
+
+    backlight: Avoid restoring brightness to an unreadably dim level
+
+and the absolute maximum.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=78200
+(cherry picked from commit 0c9d8f1d4b5018199cb5a9b57580dc1480a7f915)
+(cherry picked from commit d4666a88938d3d671f7796ce650fa29ad47579cf)
+---
+ src/backlight/backlight.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 34c01d9..77ae48c 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -225,7 +225,7 @@ static unsigned get_max_brightness(struct udev_device *device) {
+  * would otherwise force the user to disable state restoration. */
+ static void clamp_brightness(struct udev_device *device, char **value, unsigned max_brightness) {
+         int r;
+-        unsigned brightness, new_brightness;
++        unsigned brightness, new_brightness, min_brightness;
+         r = safe_atou(*value, &brightness);
+         if (r < 0) {
+@@ -233,7 +233,8 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
+                 return;
+         }
+-        new_brightness = MAX3(brightness, 1U, max_brightness/20);
++        min_brightness = MAX(1U, max_brightness/20);
++        new_brightness = CLAMP(brightness, min_brightness, max_brightness);
+         if (new_brightness != brightness) {
+                 char *old_value = *value;
+@@ -243,7 +244,11 @@ static void clamp_brightness(struct udev_device *device, char **value, unsigned
+                         return;
+                 }
+-                log_debug("Saved brightness %s too low; increasing to %s.", old_value, *value);
++                log_info("Saved brightness %s %s to %s.", old_value,
++                         new_brightness > brightness ?
++                         "too low; increasing" : "too high; decreasing",
++                         *value);
++
+                 free(old_value);
+         }
+ }
diff --git a/debian/patches/backlight-include-ID_PATH-in-file-names-for-backligh.patch b/debian/patches/backlight-include-ID_PATH-in-file-names-for-backligh.patch
new file mode 100644 (file)
index 0000000..ff6dd17
--- /dev/null
@@ -0,0 +1,80 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 14 Oct 2013 19:01:09 +0200
+Subject: backlight: include ID_PATH in file names for backlight settings
+
+Much like for rfkill devices we should provide some stability regarding
+enumeration order, hence include the stable bits of the device path in
+the file name we store settings under.
+
+(cherry picked from commit be3f52f4ed02a9256b1577719677b32a17b525ac)
+
+Conflicts:
+       rules/99-systemd.rules.in
+       src/rfkill/rfkill.c
+---
+ rules/99-systemd.rules.in |  4 ++--
+ src/backlight/backlight.c | 29 ++++++++++++++++++++++++++---
+ 2 files changed, 28 insertions(+), 5 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index ff0e771..dd6e7f1 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -57,8 +57,8 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy
+ # Pull in backlight save/restore for all backlight devices and
+ # keyboard backlights
+-SUBSYSTEM=="backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+-SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
++SUBSYSTEM=="backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
++SUBSYSTEM=="leds", KERNEL=="*kbd_backlight", TAG+="systemd", IMPORT{builtin}="path_id", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+ # Asynchronously mount file systems implemented by these modules as
+ # soon as they are loaded.
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 51a67a0..e8cdad6 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -195,8 +195,8 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
+ int main(int argc, char *argv[]) {
+         _cleanup_udev_unref_ struct udev *udev = NULL;
+         _cleanup_udev_device_unref_ struct udev_device *device = NULL;
+-        _cleanup_free_ char *saved = NULL, *ss = NULL;
+-        const char *sysname;
++        _cleanup_free_ char *saved = NULL, *ss = NULL, *escaped_ss = NULL, *escaped_sysname = NULL, *escaped_path_id = NULL;
++        const char *sysname, *path_id;
+         int r;
+         if (argc != 3) {
+@@ -252,7 +252,30 @@ int main(int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
+-        saved = strjoin("/var/lib/systemd/backlight/", ss, ":", sysname, NULL);
++        escaped_ss = cescape(ss);
++        if (!escaped_ss) {
++                log_oom();
++                return EXIT_FAILURE;
++        }
++
++        escaped_sysname = cescape(sysname);
++        if (!escaped_sysname) {
++                log_oom();
++                return EXIT_FAILURE;
++        }
++
++        path_id = udev_device_get_property_value(device, "ID_PATH");
++        if (path_id) {
++                escaped_path_id = cescape(path_id);
++                if (!escaped_path_id) {
++                        log_oom();
++                        return EXIT_FAILURE;
++                }
++
++                saved = strjoin("/var/lib/systemd/backlight/", escaped_path_id, ":", escaped_ss, ":", escaped_sysname, NULL);
++        } else
++                saved = strjoin("/var/lib/systemd/backlight/", escaped_ss, ":", escaped_sysname, NULL);
++
+         if (!saved) {
+                 log_oom();
+                 return EXIT_FAILURE;
diff --git a/debian/patches/backlight-unify-error-messages.patch b/debian/patches/backlight-unify-error-messages.patch
new file mode 100644 (file)
index 0000000..706a55b
--- /dev/null
@@ -0,0 +1,118 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 7 Apr 2014 20:57:22 -0400
+Subject: backlight: unify error messages
+
+(cherry picked from commit 938d2699d2e818bd996614e89ea3d668200ad2a8)
+(cherry picked from commit 45f427fe36a752104ba1cdad7f9b2ec7178f905a)
+---
+ src/backlight/backlight.c | 29 +++++++++++++++++++----------
+ 1 file changed, 19 insertions(+), 10 deletions(-)
+
+diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
+index 84bf51d..34c01d9 100644
+--- a/src/backlight/backlight.c
++++ b/src/backlight/backlight.c
+@@ -24,6 +24,7 @@
+ #include "fileio.h"
+ #include "libudev.h"
+ #include "udev-util.h"
++#include "def.h"
+ static struct udev_device *find_pci_or_platform_parent(struct udev_device *device) {
+         struct udev_device *parent;
+@@ -50,7 +51,7 @@ static struct udev_device *find_pci_or_platform_parent(struct udev_device *devic
+                 if (!c)
+                         return NULL;
+-                c += strspn(c, "0123456789");
++                c += strspn(c, DIGITS);
+                 if (*c == '-') {
+                         /* A connector DRM device, let's ignore all but LVDS and eDP! */
+@@ -67,7 +68,8 @@ static struct udev_device *find_pci_or_platform_parent(struct udev_device *devic
+                         unsigned long class;
+                         if (safe_atolu(value, &class) < 0) {
+-                                log_warning("Cannot parse PCI class %s of device %s:%s.", value, subsystem, sysname);
++                                log_warning("Cannot parse PCI class %s of device %s:%s.",
++                                            value, subsystem, sysname);
+                                 return NULL;
+                         }
+@@ -175,7 +177,9 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
+                 if (same_device(parent, other_parent)) {
+                         /* Both have the same PCI parent, that means
+                          * we are out. */
+-                        log_debug("Skipping backlight device %s, since backlight device %s is on same PCI device and, takes precedence.", udev_device_get_sysname(device), udev_device_get_sysname(other));
++                        log_debug("Skipping backlight device %s, since device %s is on same PCI device and takes precedence.",
++                                  udev_device_get_sysname(device),
++                                  udev_device_get_sysname(other));
+                         return false;
+                 }
+@@ -184,7 +188,9 @@ static bool validate_device(struct udev *udev, struct udev_device *device) {
+                         /* The other is connected to the platform bus
+                          * and we are a PCI device, that also means we
+                          * are out. */
+-                        log_debug("Skipping backlight device %s, since backlight device %s is a platform device and takes precedence.", udev_device_get_sysname(device), udev_device_get_sysname(other));
++                        log_debug("Skipping backlight device %s, since device %s is a platform device and takes precedence.",
++                                  udev_device_get_sysname(device),
++                                  udev_device_get_sysname(other));
+                         return false;
+                 }
+         }
+@@ -199,13 +205,14 @@ static unsigned get_max_brightness(struct udev_device *device) {
+         max_brightness_str = udev_device_get_sysattr_value(device, "max_brightness");
+         if (!max_brightness_str) {
+-                log_warning("Failed to read max_brightness attribute");
++                log_warning("Failed to read 'max_brightness' attribute");
+                 return 0;
+         }
+         r = safe_atou(max_brightness_str, &max_brightness);
+         if (r < 0) {
+-                log_warning("Failed to parse max_brightness \"%s\": %s", max_brightness_str, strerror(-r));
++                log_warning("Failed to parse 'max_brightness' \"%s\": %s",
++                            max_brightness_str, strerror(-r));
+                 return 0;
+         }
+@@ -262,7 +269,8 @@ int main(int argc, char *argv[]) {
+         r = mkdir_p("/var/lib/systemd/backlight", 0755);
+         if (r < 0) {
+-                log_error("Failed to create backlight directory: %s", strerror(-r));
++                log_error("Failed to create backlight directory /var/lib/systemd/backlight: %s",
++                          strerror(-r));
+                 return EXIT_FAILURE;
+         }
+@@ -274,7 +282,7 @@ int main(int argc, char *argv[]) {
+         sysname = strchr(argv[2], ':');
+         if (!sysname) {
+-                log_error("Requires pair of subsystem and sysname for specifying backlight device.");
++                log_error("Requires a subsystem and sysname pair specifying a backlight device.");
+                 return EXIT_FAILURE;
+         }
+@@ -368,7 +376,8 @@ int main(int argc, char *argv[]) {
+                 r = udev_device_set_sysattr_value(device, "brightness", value);
+                 if (r < 0) {
+-                        log_error("Failed to write system attribute: %s", strerror(-r));
++                        log_error("Failed to write system 'brightness' attribute: %s",
++                                  strerror(-r));
+                         return EXIT_FAILURE;
+                 }
+@@ -382,7 +391,7 @@ int main(int argc, char *argv[]) {
+                 value = udev_device_get_sysattr_value(device, "brightness");
+                 if (!value) {
+-                        log_error("Failed to read system attribute");
++                        log_error("Failed to read system 'brightness' attribute");
+                         return EXIT_FAILURE;
+                 }
diff --git a/debian/patches/bash-add-completion-for-systemd-nspawn.patch b/debian/patches/bash-add-completion-for-systemd-nspawn.patch
new file mode 100644 (file)
index 0000000..fb3863b
--- /dev/null
@@ -0,0 +1,119 @@
+From: Thomas Andersen <phomes@localhost.localdomain>
+Date: Sat, 1 Mar 2014 03:27:49 +0100
+Subject: bash: add completion for systemd-nspawn
+
+(cherry picked from commit 0d6883b6a870b66c8c70e43695d22de96aab68e7)
+---
+ Makefile.am                          |  1 +
+ shell-completion/bash/systemd-nspawn | 90 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 91 insertions(+)
+ create mode 100644 shell-completion/bash/systemd-nspawn
+
+diff --git a/Makefile.am b/Makefile.am
+index 703925a..03a1f91 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -343,6 +343,7 @@ dist_bashcompletion_DATA = \
+       shell-completion/bash/systemctl \
+       shell-completion/bash/systemd-analyze \
+       shell-completion/bash/systemd-delta \
++      shell-completion/bash/systemd-nspawn \
+       shell-completion/bash/systemd-run \
+       shell-completion/bash/udevadm \
+       shell-completion/bash/kernel-install
+diff --git a/shell-completion/bash/systemd-nspawn b/shell-completion/bash/systemd-nspawn
+new file mode 100644
+index 0000000..0e8a30c
+--- /dev/null
++++ b/shell-completion/bash/systemd-nspawn
+@@ -0,0 +1,90 @@
++# systemd-nspawn(1) completion                  -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++__get_users() {
++        local a b
++        loginctl list-users --no-legend --no-pager | { while read a b; do echo " $b"; done; };
++}
++
++__get_slices() {
++        local a b
++        systemctl list-units -t slice --no-legend --no-pager | { while read a b; do echo " $a"; done; };
++}
++
++_systemd_nspawn() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local i verb comps
++
++        local -A OPTS=(
++               [STANDALONE]='-h --help --version --private-network -b --boot --read-only -q --quiet --share-system --keep-unit --network-veth -j'
++                      [ARG]='-D --directory -u --user --uuid --capability --drop-capability --link-journal --bind --bind-ro -M --machine
++                             -S --slice'
++        )
++
++        _init_completion || return
++
++        if __contains_word "$prev" ${OPTS[ARG]}; then
++                case $prev in
++                        --directory|-D)
++                                comps=$(compgen -A directory -- "$cur" )
++                        ;;
++                        --user|-u)
++                                comps=$( __get_users )
++                        ;;
++                        --uuid)
++                                comps=''
++                        ;;
++                        --capability)
++                                comps='CAP_BLOCK_SUSPEND CAP_IPC_LOCK CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_MODULE CAP_SYS_PACCT CAP_SYS_RAWIO
++                                       CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM CAP_NET_ADMIN'
++                        ;;
++                        --drop-capability)
++                                comps='CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_FSETID
++                                       CAP_IPC_OWNER CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BIND_SERVICE
++                                       CAP_NET_BROADCAST CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_ADMIN CAP_SYS_BOOT
++                                       CAP_SYS_CHROOT CAP_SYS_NICE CAP_SYS_PTRACE CAP_SYS_RESOURCE CAP_SYS_TTY_CONFIG'
++                        ;;
++                        --link-journal)
++                                comps='no auto guest host'
++                        ;;
++                        --bind|--bind-ro)
++                                comps=''
++                        ;;
++                        --machine|-M)
++                                comps=''
++                        ;;
++                        --slice|-S)
++                                comps=$( __get_slices )
++                        ;;
++                esac
++                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++                return 0
++        fi
++
++        COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++}
++
++complete -F _systemd_nspawn systemd-nspawn
diff --git a/debian/patches/bash-completion-fix-__get_startable_units.patch b/debian/patches/bash-completion-fix-__get_startable_units.patch
new file mode 100644 (file)
index 0000000..48daca0
--- /dev/null
@@ -0,0 +1,23 @@
+From: Dan Kilman <dankilman@gmail.com>
+Date: Sun, 13 Apr 2014 18:06:13 +0300
+Subject: bash completion: fix __get_startable_units
+
+(cherry picked from commit a163b64c4b08e8a4ad39a9a295acf3d1634024a3)
+(cherry picked from commit cc9db03683d794e2894bb1a682724fb3493e0bf5)
+---
+ shell-completion/bash/systemctl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
+index 857552d..1e4d07a 100644
+--- a/shell-completion/bash/systemctl
++++ b/shell-completion/bash/systemctl
+@@ -56,7 +56,7 @@ __get_all_units      () { __systemctl $1 list-units --all \
+ __get_active_units   () { __systemctl $1 list-units       \
+         | { while read -r a b; do echo " $a"; done; }; }
+ __get_startable_units () { __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap \
+-        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed " ]] && echo " $a"; done; }; }
++        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
+ __get_failed_units   () { __systemctl $1 list-units       \
+         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
+ __get_enabled_units  () { __systemctl $1 list-unit-files  \
diff --git a/debian/patches/bash-completion-fix-completion-of-complete-verbs.patch b/debian/patches/bash-completion-fix-completion-of-complete-verbs.patch
new file mode 100644 (file)
index 0000000..b3d5fb3
--- /dev/null
@@ -0,0 +1,116 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 6 Feb 2014 00:31:22 -0500
+Subject: bash-completion: fix completion of complete verbs
+
+When doing 'command verb<TAB>', the arguments for verb would be
+proposed, but it is too early. We should complete verb first.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=74596
+(cherry picked from commit 3ce09b7da2eb8b888066468663b2b5c81a05a03c)
+
+Conflicts:
+       shell-completion/bash/busctl
+       shell-completion/bash/loginctl
+       shell-completion/bash/systemctl
+       shell-completion/bash/systemd-analyze
+---
+ shell-completion/bash/hostnamectl     | 2 +-
+ shell-completion/bash/localectl       | 2 +-
+ shell-completion/bash/loginctl        | 2 +-
+ shell-completion/bash/systemctl       | 2 +-
+ shell-completion/bash/systemd-analyze | 2 +-
+ shell-completion/bash/timedatectl     | 2 +-
+ shell-completion/bash/udevadm         | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl
+index 38ab134..9c75da9 100644
+--- a/shell-completion/bash/hostnamectl
++++ b/shell-completion/bash/hostnamectl
+@@ -41,7 +41,7 @@ _hostnamectl() {
+                       [NAME]='set-hostname'
+         )
+-        for ((i=0; i <= COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then
+                         verb=${COMP_WORDS[i]}
+                         break
+diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl
+index bec9e78..84e2a6b 100644
+--- a/shell-completion/bash/localectl
++++ b/shell-completion/bash/localectl
+@@ -52,7 +52,7 @@ _localectl() {
+                       [X11]='set-x11-keymap'
+         )
+-        for ((i=0; i <= COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then
+                         verb=${COMP_WORDS[i]}
+                         break
+diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl
+index 3104b30..26a8696 100644
+--- a/shell-completion/bash/loginctl
++++ b/shell-completion/bash/loginctl
+@@ -70,7 +70,7 @@ _loginctl () {
+                 [ATTACH]='attach'
+         )
+-        for ((i=0; $i <= $COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
+                  ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
+                         verb=${COMP_WORDS[i]}
+diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
+index 84149e3..a5f10b4 100644
+--- a/shell-completion/bash/systemctl
++++ b/shell-completion/bash/systemctl
+@@ -146,7 +146,7 @@ _systemctl () {
+                   [TARGETS]='set-default'
+         )
+-        for ((i=0; $i <= $COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
+                  ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
+                         verb=${COMP_WORDS[i]}
+diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze
+index b65466b..6afcd96 100644
+--- a/shell-completion/bash/systemd-analyze
++++ b/shell-completion/bash/systemd-analyze
+@@ -39,7 +39,7 @@ _systemd_analyze() {
+         _init_completion || return
+-        for ((i=0; $i <= $COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
+                  ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
+                         verb=${COMP_WORDS[i]}
+diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl
+index c6a6545..1a0acc6 100644
+--- a/shell-completion/bash/timedatectl
++++ b/shell-completion/bash/timedatectl
+@@ -52,7 +52,7 @@ _timedatectl() {
+                      [TIME]='set-time'
+         )
+-        for ((i=0; i <= COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then
+                         verb=${COMP_WORDS[i]}
+                         break
+diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm
+index 8ad8550..7e89189 100644
+--- a/shell-completion/bash/udevadm
++++ b/shell-completion/bash/udevadm
+@@ -36,7 +36,7 @@ _udevadm() {
+         local verbs=(info trigger settle control monitor hwdb test-builtin test)
+-        for ((i=0; i <= COMP_CWORD; i++)); do
++        for ((i=0; i < COMP_CWORD; i++)); do
+                 if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}" &&
+                  ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
+                         verb=${COMP_WORDS[i]}
diff --git a/debian/patches/bash-completion-journalctl-file.patch b/debian/patches/bash-completion-journalctl-file.patch
new file mode 100644 (file)
index 0000000..f2e7f45
--- /dev/null
@@ -0,0 +1,32 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 15 Nov 2013 19:00:01 -0500
+Subject: bash-completion: journalctl --file
+
+---
+ shell-completion/bash/journalctl | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl
+index 942a253..e4b2f4a 100644
+--- a/shell-completion/bash/journalctl
++++ b/shell-completion/bash/journalctl
+@@ -43,7 +43,7 @@ _journalctl() {
+                               -h --help -l --local --new-id128 -m --merge --no-pager
+                               --no-tail -q --quiet --setup-keys --this-boot --verify
+                               --version --list-catalog --update-catalog --list-boots'
+-                       [ARG]='-b --boot --this-boot -D --directory -F --field
++                       [ARG]='-b --boot --this-boot -D --directory --file -F --field
+                               -o --output -u --unit --user-unit'
+                 [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until
+                               --verify-key'
+@@ -58,6 +58,10 @@ _journalctl() {
+                                 comps=$(compgen -d -- "$cur")
+                                 compopt -o filenames
+                         ;;
++                        --file)
++                                comps=$(compgen -f -- "$cur")
++                                compopt -o filenames
++                        ;;
+                         --output|-o)
+                                 comps='short short-monotonic verbose export json cat'
+                         ;;
diff --git a/debian/patches/bootchart-set-white-background.patch b/debian/patches/bootchart-set-white-background.patch
new file mode 100644 (file)
index 0000000..df1e221
--- /dev/null
@@ -0,0 +1,35 @@
+From: Frederic Crozat <fcrozat@suse.com>
+Date: Mon, 16 Jun 2014 18:49:12 +0200
+Subject: bootchart: set white background
+
+ In programs like eog and gimp the transparant background did not
+look very good.
+
+Similar fix from the one done in systemd-analyze (418e3750)
+
+(cherry picked from commit a7997073ac07add6cb30dcd9491c0179b2d6ad52)
+(cherry picked from commit 0eca797c3c6b82527d1e38a9f194f9daca1abb47)
+---
+ src/bootchart/svg.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c
+index 5eee2d1..fe8b1b8 100644
+--- a/src/bootchart/svg.c
++++ b/src/bootchart/svg.c
+@@ -123,6 +123,7 @@ static void svg_header(void) {
+         svg("<defs>\n  <style type=\"text/css\">\n    <![CDATA[\n");
+         svg("      rect       { stroke-width: 1; }\n");
++        svg("      rect.bg    { fill: rgb(255,255,255); }\n");
+         svg("      rect.cpu   { fill: rgb(64,64,240); stroke-width: 0; fill-opacity: 0.7; }\n");
+         svg("      rect.wait  { fill: rgb(240,240,0); stroke-width: 0; fill-opacity: 0.7; }\n");
+         svg("      rect.bi    { fill: rgb(240,128,128); stroke-width: 0; fill-opacity: 0.7; }\n");
+@@ -1276,6 +1277,7 @@ void svg_do(const char *build) {
+         /* after this, we can draw the header with proper sizing */
+         svg_header();
++        svg("<rect class=\"bg\" width=\"100%%\" height=\"100%%\" />\n\n");
+         svg("<g transform=\"translate(10,400)\">\n");
+         svg_io_bi_bar();
diff --git a/debian/patches/bootctl-add-bash-completion.patch b/debian/patches/bootctl-add-bash-completion.patch
new file mode 100644 (file)
index 0000000..ad5f3db
--- /dev/null
@@ -0,0 +1,91 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Thu, 20 Feb 2014 23:12:02 +0100
+Subject: bootctl: add bash completion
+
+(cherry picked from commit 95fe27d9307628a4a593e63794000c09ecb91b95)
+---
+ Makefile.am                   |  3 +++
+ shell-completion/bash/bootctl | 60 +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 63 insertions(+)
+ create mode 100644 shell-completion/bash/bootctl
+
+diff --git a/Makefile.am b/Makefile.am
+index 9049fed..703925a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1748,6 +1748,9 @@ bootctl_LDADD = \
+ bin_PROGRAMS += \
+       bootctl
++dist_bashcompletion_DATA += \
++      shell-completion/bash/bootctl
++
+ dist_zshcompletion_DATA += \
+       shell-completion/zsh/_bootctl
+diff --git a/shell-completion/bash/bootctl b/shell-completion/bash/bootctl
+new file mode 100644
+index 0000000..c86ec7e
+--- /dev/null
++++ b/shell-completion/bash/bootctl
+@@ -0,0 +1,60 @@
++# bootctl(1) completion                               -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word () {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++_bootctl() {
++        local i verb comps
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local -A OPTS=(
++               [STANDALONE]='-h --help --version'
++        )
++
++        if [[ "$cur" = -* ]]; then
++                COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++                return 0
++        fi
++
++        local -A VERBS=(
++                [STANDALONE]='status'
++        )
++
++        for ((i=0; i < COMP_CWORD; i++)); do
++                if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then
++                        verb=${COMP_WORDS[i]}
++                        break
++                fi
++        done
++
++        if [[ -z $verb ]]; then
++                comps=${VERBS[*]}
++        elif __contains_word "$verb" ${VERBS[STANDALONE]}; then
++                comps=''
++        fi
++
++        COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++        return 0
++}
++
++complete -F _bootctl bootctl
diff --git a/debian/patches/build-sys-Don-t-distribute-generated-udev-rule.patch b/debian/patches/build-sys-Don-t-distribute-generated-udev-rule.patch
new file mode 100644 (file)
index 0000000..09141fe
--- /dev/null
@@ -0,0 +1,38 @@
+From: Armin K <krejzi@email.com>
+Date: Tue, 4 Mar 2014 16:23:41 +0100
+Subject: build-sys: Don't distribute generated udev rule
+
+It contains hardcoded path to systemd-sysctl executable which
+is /usr/lib/systemd/systemd-sysctl on latest stable release and
+as such it will complain at runtime if rootprefix != prefix
+
+[zj: readd the file to nodist_udevrules_DATA]
+
+(cherry picked from commit e2eb18d56b14eeb405706970f0460d8539cdcf23)
+(cherry picked from commit 66f231f4c71dfb11dc4552cb337571d3e3019c81)
+---
+ Makefile.am | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index df476ce..5cf03c0 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2224,7 +2224,6 @@ INSTALL_DIRS += \
+       $(sysconfdir)/udev/hwdb.d
+ dist_udevrules_DATA += \
+-      rules/99-systemd.rules \
+       rules/42-usb-hid-pm.rules \
+       rules/50-udev-default.rules \
+       rules/60-drm.rules \
+@@ -2241,6 +2240,9 @@ dist_udevrules_DATA += \
+       rules/80-net-name-slot.rules \
+       rules/95-udev-late.rules
++nodist_udevrules_DATA += \
++      rules/99-systemd.rules
++
+ dist_udevhwdb_DATA = \
+       hwdb/20-pci-vendor-model.hwdb \
+       hwdb/20-pci-classes.hwdb \
diff --git a/debian/patches/build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch b/debian/patches/build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch
new file mode 100644 (file)
index 0000000..08bd78a
--- /dev/null
@@ -0,0 +1,38 @@
+From: Samuli Suominen <ssuominen@gentoo.org>
+Date: Sat, 8 Mar 2014 09:49:29 +0200
+Subject: build-sys: Find the tools for users with no /sbin:/usr/sbin in PATH
+ since some systems still make the distiction between bin and sbin.
+
+(cherry picked from commit 2d0efdf1af5ff77441228854343c61d42a89840c)
+(cherry picked from commit fb197dbb1cfdd13c1ec7cc7efc27e10627f74ec1)
+---
+ configure.ac | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 6232cf8..9af56ab 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -67,16 +67,16 @@ AC_PROG_GCC_TRADITIONAL
+ AC_PATH_PROG([M4], [m4])
+ AC_PATH_PROG([XSLTPROC], [xsltproc])
+-AC_PATH_PROG([QUOTAON], [quotaon], [/usr/sbin/quotaon])
+-AC_PATH_PROG([QUOTACHECK], [quotacheck], [/usr/sbin/quotacheck])
++AC_PATH_PROG([QUOTAON], [quotaon], [/usr/sbin/quotaon], [$PATH:/usr/sbin:/sbin])
++AC_PATH_PROG([QUOTACHECK], [quotacheck], [/usr/sbin/quotacheck], [$PATH:/usr/sbin:/sbin])
+-AC_PATH_PROG([SETCAP], [setcap], [/usr/sbin/setcap])
++AC_PATH_PROG([SETCAP], [setcap], [/usr/sbin/setcap], [$PATH:/usr/sbin:/sbin])
+-AC_PATH_PROG([KILL], [kill], [/usr/bin/kill])
++AC_PATH_PROG([KILL], [kill], [/usr/bin/kill], [$PATH:/usr/sbin:/sbin])
+-AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod])
++AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod], [$PATH:/usr/sbin:/sbin])
+-AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec])
++AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec], [$PATH:/usr/sbin:/sbin])
+ # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
+ m4_ifdef([GTK_DOC_CHECK], [
diff --git a/debian/patches/build-sys-at-configure-check-for-verifying-that-ln-s.patch b/debian/patches/build-sys-at-configure-check-for-verifying-that-ln-s.patch
new file mode 100644 (file)
index 0000000..c0d8e9d
--- /dev/null
@@ -0,0 +1,27 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 16 May 2014 16:51:42 +0200
+Subject: build-sys: at configure check for verifying that ln supports
+ --relative
+
+(cherry picked from commit 446883528524429283626208928b51f49f28f810)
+(cherry picked from commit 3d3e1a52a3636ea38dcf6c7ac3eed0b444dfb054)
+
+Conflicts:
+       configure.ac
+---
+ configure.ac | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 9af56ab..9605b38 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -78,6 +78,8 @@ AC_PATH_PROG([KMOD], [kmod], [/usr/bin/kmod], [$PATH:/usr/sbin:/sbin])
+ AC_PATH_PROG([KEXEC], [kexec], [/usr/sbin/kexec], [$PATH:/usr/sbin:/sbin])
++AS_IF([! ln --relative --help > /dev/null 2>&1], [AC_MSG_ERROR([*** ln doesn't support --relative ***])])
++
+ # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
+ m4_ifdef([GTK_DOC_CHECK], [
+ GTK_DOC_CHECK([1.18],[--flavour no-tmpl])],
diff --git a/debian/patches/bus-fix-potentially-uninitialized-memory-access.patch b/debian/patches/bus-fix-potentially-uninitialized-memory-access.patch
new file mode 100644 (file)
index 0000000..b943270
--- /dev/null
@@ -0,0 +1,30 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:37:11 +0200
+Subject: bus: fix potentially uninitialized memory access
+
+---
+ src/libsystemd-bus/bus-internal.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c
+index 0e66f3d..cac948e 100644
+--- a/src/libsystemd-bus/bus-internal.c
++++ b/src/libsystemd-bus/bus-internal.c
+@@ -63,7 +63,7 @@ bool object_path_is_valid(const char *p) {
+ bool interface_name_is_valid(const char *p) {
+         const char *q;
+-        bool dot, found_dot;
++        bool dot, found_dot = false;
+         if (isempty(p))
+                 return false;
+@@ -103,7 +103,7 @@ bool interface_name_is_valid(const char *p) {
+ bool service_name_is_valid(const char *p) {
+         const char *q;
+-        bool dot, found_dot, unique;
++        bool dot, found_dot = false, unique;
+         if (isempty(p))
+                 return false;
diff --git a/debian/patches/button-don-t-exit-if-we-cannot-handle-a-button-press.patch b/debian/patches/button-don-t-exit-if-we-cannot-handle-a-button-press.patch
new file mode 100644 (file)
index 0000000..356bb45
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 10 Nov 2013 23:05:08 +0100
+Subject: button: don't exit if we cannot handle a button press
+
+---
+ src/login/logind-button.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/logind-button.c b/src/login/logind-button.c
+index ea45c28..4f456d2 100644
+--- a/src/login/logind-button.c
++++ b/src/login/logind-button.c
+@@ -172,7 +172,7 @@ static int button_handle(
+                  * execute another one until the lid is opened/closed again */
+                 b->lid_close_queued = false;
+-        return r;
++        return 0;
+ }
+ int button_process(Button *b) {
diff --git a/debian/patches/calendar-support-yearly-and-annually-names-the-same-.patch b/debian/patches/calendar-support-yearly-and-annually-names-the-same-.patch
new file mode 100644 (file)
index 0000000..ca69c66
--- /dev/null
@@ -0,0 +1,36 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 19 Nov 2013 01:13:42 +0100
+Subject: calendar: support 'yearly' and 'annually' names the same way as cron
+
+---
+ src/shared/calendarspec.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c
+index 7979e23..7075159 100644
+--- a/src/shared/calendarspec.c
++++ b/src/shared/calendarspec.c
+@@ -686,6 +686,23 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
+                 if (r < 0)
+                         goto fail;
++        } else if (strcaseeq(p, "anually") || strcaseeq(p, "yearly")) {
++                r = const_chain(1, &c->month);
++                if (r < 0)
++                        goto fail;
++                r = const_chain(1, &c->day);
++                if (r < 0)
++                        goto fail;
++                r = const_chain(0, &c->hour);
++                if (r < 0)
++                        goto fail;
++                r = const_chain(0, &c->minute);
++                if (r < 0)
++                        goto fail;
++                r = const_chain(0, &c->second);
++                if (r < 0)
++                        goto fail;
++
+         } else if (strcaseeq(p, "weekly")) {
+                 c->weekdays_bits = 1;
diff --git a/debian/patches/catalog-remove-links-to-non-existent-wiki-pages.patch b/debian/patches/catalog-remove-links-to-non-existent-wiki-pages.patch
new file mode 100644 (file)
index 0000000..f939166
--- /dev/null
@@ -0,0 +1,88 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 24 Oct 2013 00:45:10 -0400
+Subject: catalog: remove links to non-existent wiki pages
+
+AFAIK, we don't have even one page with message explanations.
+If/when we add them, we can add links.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1017161
+---
+ catalog/systemd.catalog | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+diff --git a/catalog/systemd.catalog b/catalog/systemd.catalog
+index 892b2ad..3c2fe64 100644
+--- a/catalog/systemd.catalog
++++ b/catalog/systemd.catalog
+@@ -204,7 +204,6 @@ Unit @UNIT@ has begun shutting down.
+ Subject: Unit @UNIT@ has finished shutting down
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ Unit @UNIT@ has finished shutting down.
+@@ -212,7 +211,6 @@ Unit @UNIT@ has finished shutting down.
+ Subject: Unit @UNIT@ has failed
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ Unit @UNIT@ has failed.
+@@ -222,7 +220,6 @@ The result is @RESULT@.
+ Subject: Unit @UNIT@ has begun with reloading its configuration
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ Unit @UNIT@ has begun with reloading its configuration
+@@ -230,7 +227,6 @@ Unit @UNIT@ has begun with reloading its configuration
+ Subject: Unit @UNIT@ has finished reloading its configuration
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ Unit @UNIT@ has finished reloading its configuration
+@@ -240,7 +236,6 @@ The result is @RESULT@.
+ Subject: Process @EXECUTABLE@ could not be executed
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ The process @EXECUTABLE@ could not be executed and failed.
+@@ -250,7 +245,6 @@ The error number returned while executing this process is @ERRNO@.
+ Subject: One or more messages could not be forwarded to syslog
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ One or more messages could not be forwarded to the syslog service
+ running side-by-side with journald. This usually indicates that the
+@@ -261,7 +255,6 @@ messages queued.
+ Subject: Mount point is not empty
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ The directory @WHERE@ is specified as the mount point (second field in
+ /etc/fstab or Where= field in systemd unit file) and is not empty.
+@@ -274,7 +267,6 @@ location.
+ Subject: A virtual machine or container has been started
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ The virtual machine @NAME@ with its leader PID @LEADER@ has been
+ started is now ready to use.
+@@ -283,7 +275,6 @@ started is now ready to use.
+ Subject: A virtual machine or container has been terminated
+ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+-Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
+ The virtual machine @NAME@ with its leader PID @LEADER@ has been
+ shut down.
diff --git a/debian/patches/cdrom_id-use-the-old-MMC-fallback.patch b/debian/patches/cdrom_id-use-the-old-MMC-fallback.patch
new file mode 100644 (file)
index 0000000..3ceb0de
--- /dev/null
@@ -0,0 +1,51 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 27 Feb 2014 11:06:37 +0100
+Subject: cdrom_id: use the old MMC fallback
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1038015
+The problem seems to be that the your virtual DVD is emulating a really
+old DVD device, and doing it kind of strangely.
+
+> dracut:# /lib/udev/cdrom_id --debug /dev/sr0
+> probing: '/dev/sr0'
+> INQUIRY: [IMM     ][Virtual CD/DVD   ][0316]
+> GET CONFIGURATION failed with SK=5h/ASC=24h/ACQ=00h
+
+So your virtual drive rejects the GET CONFIGURATION command as illegal.
+
+Other pre-MMC2 drives that don't accept this command usually return the
+error
+SK=5h,ASC=20h (invalid/unsupported command code), in which case cdrom_id
+tries an older method, and then ID_CDROM_MEDIA_TRACK_COUNT_DATA gets set
+and all the /dev/disk/by-label (etc) links get set up.
+
+The virtual drive returns the error SK=5h,ASC=24h (invalid field in
+Command Descriptor Block), which cdrom_id doesn't handle, so it gives up
+and the links never get made.
+
+The ideal solution would be to make the IMM to emulate a device that's
+less than 15 years old, but I'm not going to hold my breath waiting for
+that.
+
+So probably cdrom_id should also use the old MMC fallback when the error
+is SK=5h,ASC=24h, and then all of this would work as expected.
+
+Suggested-by:Luca Miccini <lmiccini@redhat.com>
+(cherry picked from commit a14f14976094650e17d39f3a7d15a1c68c93c333)
+---
+ src/udev/cdrom_id/cdrom_id.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c
+index 1fc0dfa..dac35a6 100644
+--- a/src/udev/cdrom_id/cdrom_id.c
++++ b/src/udev/cdrom_id/cdrom_id.c
+@@ -555,7 +555,7 @@ static int cd_profiles(struct udev *udev, int fd)
+         if ((err != 0)) {
+                 info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
+                 /* handle pre-MMC2 drives which do not support GET CONFIGURATION */
+-                if (SK(err) == 0x5 && ASC(err) == 0x20) {
++                if (SK(err) == 0x5 && (ASC(err) == 0x20 || ASC(err) == 0x24)) {
+                         log_debug("drive is pre-MMC2 and does not support 46h get configuration command");
+                         log_debug("trying to work around the problem");
+                         ret = cd_profiles_old_mmc(udev, fd);
diff --git a/debian/patches/cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch b/debian/patches/cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch
new file mode 100644 (file)
index 0000000..6a0afc5
--- /dev/null
@@ -0,0 +1,78 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 18 Mar 2014 04:06:36 +0100
+Subject: cgroup: it's not OK to invoke alloca() in loops
+
+(cherry picked from commit a641dcd9bf05418d6a6c165e1c0cff615b4a0f47)
+(cherry picked from commit 9f9a67bfb5ed0ac3c6afc8609004ab37bfdc1412)
+---
+ src/core/mount-setup.c | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
+index 4359f59..679f289 100644
+--- a/src/core/mount-setup.c
++++ b/src/core/mount-setup.c
+@@ -210,10 +210,10 @@ int mount_setup_early(void) {
+ }
+ int mount_cgroup_controllers(char ***join_controllers) {
+-        int r;
+-        char buf[LINE_MAX];
+         _cleanup_set_free_free_ Set *controllers = NULL;
+         _cleanup_fclose_ FILE *f;
++        char buf[LINE_MAX];
++        int r;
+         /* Mount all available cgroup controllers that are built into the kernel. */
+@@ -256,6 +256,7 @@ int mount_cgroup_controllers(char ***join_controllers) {
+         }
+         for (;;) {
++                _cleanup_free_ char *options = NULL, *controller = NULL, *where = NULL;
+                 MountPoint p = {
+                         .what = "cgroup",
+                         .type = "cgroup",
+@@ -263,7 +264,6 @@ int mount_cgroup_controllers(char ***join_controllers) {
+                         .mode = MNT_IN_CONTAINER,
+                 };
+                 char ***k = NULL;
+-                _cleanup_free_ char *options = NULL, *controller;
+                 controller = set_steal_first(controllers);
+                 if (!controller)
+@@ -280,7 +280,7 @@ int mount_cgroup_controllers(char ***join_controllers) {
+                         for (i = *k, j = *k; *i; i++) {
+                                 if (!streq(*i, controller)) {
+-                                        char _cleanup_free_ *t;
++                                        _cleanup_free_ char *t;
+                                         t = set_remove(controllers, *i);
+                                         if (!t) {
+@@ -302,7 +302,11 @@ int mount_cgroup_controllers(char ***join_controllers) {
+                         controller = NULL;
+                 }
+-                p.where = strappenda("/sys/fs/cgroup/", options);
++                where = strappend("/sys/fs/cgroup/", options);
++                if (!where)
++                        return log_oom();
++
++                p.where = where;
+                 p.options = options;
+                 r = mount_one(&p, true);
+@@ -313,7 +317,11 @@ int mount_cgroup_controllers(char ***join_controllers) {
+                         char **i;
+                         for (i = *k; *i; i++) {
+-                                char *t = strappenda("/sys/fs/cgroup/", *i);
++                                _cleanup_free_ char *t = NULL;
++
++                                t = strappend("/sys/fs/cgroup/", *i);
++                                if (!t)
++                                        return log_oom();
+                                 r = symlink(options, t);
+                                 if (r < 0 && errno != EEXIST) {
diff --git a/debian/patches/cgroup-run-PID-1-in-the-root-cgroup.patch b/debian/patches/cgroup-run-PID-1-in-the-root-cgroup.patch
new file mode 100644 (file)
index 0000000..3e49692
--- /dev/null
@@ -0,0 +1,60 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 5 Nov 2013 22:14:52 +0100
+Subject: cgroup: run PID 1 in the root cgroup
+
+This way cleaning up the cgroup tree on shutdown is a lot easier since
+we are in the root dir. Also PID 1 was previously artificially placed in
+system.slice, even though our rule actually was not to have processes in
+slices. The root slice otoh is magic anyway, so having PID 1 in there
+sounds less surprising.
+
+Of course, this means that PID is scheduled against the three top-level
+slices.
+---
+ src/core/cgroup.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/core/cgroup.c b/src/core/cgroup.c
+index 8bf4d89..42c0b3f 100644
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -589,8 +589,8 @@ pid_t unit_search_main_pid(Unit *u) {
+ int manager_setup_cgroup(Manager *m) {
+         _cleanup_free_ char *path = NULL;
++        char *e;
+         int r;
+-        char *e, *a;
+         assert(m);
+@@ -610,9 +610,13 @@ int manager_setup_cgroup(Manager *m) {
+                 return r;
+         }
+-        /* Already in /system.slice? If so, let's cut this off again */
++        /* LEGACY: Already in /system.slice? If so, let's cut this
++         * off. This is to support live upgrades from older systemd
++         * versions where PID 1 was moved there. */
+         if (m->running_as == SYSTEMD_SYSTEM) {
+                 e = endswith(m->cgroup_root, "/" SPECIAL_SYSTEM_SLICE);
++                if (!e)
++                        e = endswith(m->cgroup_root, "/system");
+                 if (e)
+                         *e = 0;
+         }
+@@ -643,12 +647,8 @@ int manager_setup_cgroup(Manager *m) {
+                         log_debug("Release agent already installed.");
+         }
+-        /* 4. Realize the system slice and put us in there */
+-        if (m->running_as == SYSTEMD_SYSTEM) {
+-                a = strappenda(m->cgroup_root, "/" SPECIAL_SYSTEM_SLICE);
+-                r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, a, 0);
+-        } else
+-                r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, 0);
++        /* 4. Make sure we are in the root cgroup */
++        r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, 0);
+         if (r < 0) {
+                 log_error("Failed to create root cgroup hierarchy: %s", strerror(-r));
+                 return r;
diff --git a/debian/patches/conf-files-fix-when-for-root-logic.patch b/debian/patches/conf-files-fix-when-for-root-logic.patch
new file mode 100644 (file)
index 0000000..d4097be
--- /dev/null
@@ -0,0 +1,49 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 17 Jun 2014 01:56:44 +0200
+Subject: conf-files: fix when for --root= logic
+
+This is based on parts of similar patches from Michael Marineau and
+Lukas Nykrin, but simply uses strappenda3().
+
+(cherry picked from commit cebed5005b5ede17fc52ab50c054fca73bc938b8)
+(cherry picked from commit 173749803c35c127b84d537974b6783cdba674fc)
+---
+ src/shared/conf-files.c | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
+index 3d5b1df..4ec8bed 100644
+--- a/src/shared/conf-files.c
++++ b/src/shared/conf-files.c
+@@ -37,10 +37,20 @@
+ #include "hashmap.h"
+ #include "conf-files.h"
+-static int files_add(Hashmap *h, const char *dirpath, const char *suffix) {
++static int files_add(Hashmap *h, const char *dirpath, const char *suffix, const char *root) {
+         _cleanup_closedir_ DIR *dir = NULL;
+-        dir = opendir(dirpath);
++        assert(dirpath);
++        assert(suffix);
++
++        if (isempty(root))
++                dir = opendir(dirpath);
++        else {
++                const char *p;
++
++                p = strappenda3(root, "/", dirpath);
++                dir = opendir(p);
++        }
+         if (!dir) {
+                 if (errno == ENOENT)
+                         return 0;
+@@ -108,7 +118,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
+                 return -ENOMEM;
+         STRV_FOREACH(p, dirs) {
+-                r = files_add(fh, *p, suffix);
++                r = files_add(fh, *p, suffix, root);
+                 if (r == -ENOMEM) {
+                         hashmap_free_free(fh);
+                         return r;
diff --git a/debian/patches/conf-files-include-root-in-returned-file-paths.patch b/debian/patches/conf-files-include-root-in-returned-file-paths.patch
new file mode 100644 (file)
index 0000000..706c9d6
--- /dev/null
@@ -0,0 +1,88 @@
+From: Michael Marineau <michael.marineau@coreos.com>
+Date: Thu, 19 Jun 2014 19:07:04 -0700
+Subject: conf-files: include root in returned file paths
+
+This restores the original root handling logic that was present prior to
+112cfb18 when path expansion moved to path_strv_canonicalize_absolute.
+That behavior partially went away in 12ed81d9.
+
+Alternatively all users of conf_files_list* could be updated to
+concatenate the paths themselves as unit_file_query_preset did but since
+no user needs the un-concatenated form that is pointless duplication.
+
+(cherry picked from commit cba2ef02722114da2b730d57f1e3bb43013d8921)
+
+Conflicts:
+       src/shared/install.c
+
+(cherry picked from commit 084c41bc148e0a7b0eeee614d9e0acc9aaae6b0d)
+---
+ src/shared/conf-files.c | 16 ++++++----------
+ src/shared/install.c    |  6 +++---
+ 2 files changed, 9 insertions(+), 13 deletions(-)
+
+diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
+index 4ec8bed..fc5f1fe 100644
+--- a/src/shared/conf-files.c
++++ b/src/shared/conf-files.c
+@@ -37,20 +37,16 @@
+ #include "hashmap.h"
+ #include "conf-files.h"
+-static int files_add(Hashmap *h, const char *dirpath, const char *suffix, const char *root) {
++static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) {
+         _cleanup_closedir_ DIR *dir = NULL;
++        char *dirpath;
+-        assert(dirpath);
++        assert(path);
+         assert(suffix);
+-        if (isempty(root))
+-                dir = opendir(dirpath);
+-        else {
+-                const char *p;
++        dirpath = strappenda(root ? root : "", path);
+-                p = strappenda3(root, "/", dirpath);
+-                dir = opendir(p);
+-        }
++        dir = opendir(dirpath);
+         if (!dir) {
+                 if (errno == ENOENT)
+                         return 0;
+@@ -118,7 +114,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
+                 return -ENOMEM;
+         STRV_FOREACH(p, dirs) {
+-                r = files_add(fh, *p, suffix, root);
++                r = files_add(fh, root, *p, suffix);
+                 if (r == -ENOMEM) {
+                         hashmap_free_free(fh);
+                         return r;
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 86a05a4..f40be79 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -1763,7 +1763,7 @@ UnitFileState unit_file_get_state(
+ int unit_file_query_preset(UnitFileScope scope, const char *name) {
+         _cleanup_strv_free_ char **files = NULL;
+-        char **i;
++        char **p;
+         int r;
+         assert(scope >= 0);
+@@ -1791,10 +1791,10 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) {
+         if (r < 0)
+                 return r;
+-        STRV_FOREACH(i, files) {
++        STRV_FOREACH(p, files) {
+                 _cleanup_fclose_ FILE *f;
+-                f = fopen(*i, "re");
++                f = fopen(*p, "re");
+                 if (!f) {
+                         if (errno == ENOENT)
+                                 continue;
diff --git a/debian/patches/conf-parser-never-consider-it-an-error-if-we-cannot-.patch b/debian/patches/conf-parser-never-consider-it-an-error-if-we-cannot-.patch
new file mode 100644 (file)
index 0000000..57d2252
--- /dev/null
@@ -0,0 +1,28 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 16:47:46 +0900
+Subject: conf-parser: never consider it an error if we cannot load a drop-in
+ file because it is missing
+
+After all, we want to be able to boot with /etc empty one day...
+
+(cherry picked from commit 9f43a07f10639c5b41b45448e551e43914eefe32)
+(cherry picked from commit 31dc5786e03bf8f00371d36ed702197ed842afe6)
+---
+ src/shared/conf-parser.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
+index 4ac71ed..e206b5b 100644
+--- a/src/shared/conf-parser.c
++++ b/src/shared/conf-parser.c
+@@ -320,8 +320,8 @@ int config_parse(const char *unit,
+         if (!f) {
+                 f = ours = fopen(filename, "re");
+                 if (!f) {
+-                        log_error("Failed to open configuration file '%s': %m", filename);
+-                        return -errno;
++                        log_full(errno == ENOENT ? LOG_DEBUG : LOG_ERR, "Failed to open configuration file '%s': %m", filename);
++                        return errno == ENOENT ? 0 : -errno;
+                 }
+         }
diff --git a/debian/patches/core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch b/debian/patches/core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch
new file mode 100644 (file)
index 0000000..adc4b68
--- /dev/null
@@ -0,0 +1,359 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 7 Feb 2014 11:58:25 +0100
+Subject: core: allow PIDs to be watched by two units at the same time
+
+In some cases it is interesting to map a PID to two units at the same
+time. For example, when a user logs in via a getty, which is reexeced to
+/sbin/login that binary will be explicitly referenced as main pid of the
+getty service, as well as implicitly referenced as part of the session
+scope.
+
+Conflicts:
+       src/core/manager.c
+       src/core/manager.h
+---
+ src/core/manager.c | 201 ++++++++++++++++++++++++++++++-----------------------
+ src/core/manager.h |   9 ++-
+ src/core/unit.c    |  28 ++++++--
+ 3 files changed, 142 insertions(+), 96 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index e7b5234..58c17ab 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -525,7 +525,10 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
+         if (!(m->jobs = hashmap_new(trivial_hash_func, trivial_compare_func)))
+                 goto fail;
+-        if (!(m->watch_pids = hashmap_new(trivial_hash_func, trivial_compare_func)))
++        if (!(m->watch_pids1 = hashmap_new(trivial_hash_func, trivial_compare_func)))
++                goto fail;
++
++        if (!(m->watch_pids2 = hashmap_new(trivial_hash_func, trivial_compare_func)))
+                 goto fail;
+         m->cgroup_unit = hashmap_new(string_hash_func, string_compare_func);
+@@ -740,7 +743,8 @@ void manager_free(Manager *m) {
+         hashmap_free(m->units);
+         hashmap_free(m->jobs);
+-        hashmap_free(m->watch_pids);
++        hashmap_free(m->watch_pids1);
++        hashmap_free(m->watch_pids2);
+         hashmap_free(m->watch_bus);
+         if (m->epoll_fd >= 0)
+@@ -1247,6 +1251,26 @@ unsigned manager_dispatch_dbus_queue(Manager *m) {
+         return n;
+ }
++static void manager_invoke_notify_message(Manager *m, Unit *u, pid_t pid, char *buf, size_t n) {
++        _cleanup_strv_free_ char **tags = NULL;
++
++        assert(m);
++        assert(u);
++        assert(buf);
++        assert(n > 0);
++
++        tags = strv_split(buf, "\n\r");
++        if (!tags) {
++                log_oom();
++                return;
++        }
++
++        log_debug_unit(u->id, "Got notification message for unit %s", u->id);
++
++        if (UNIT_VTABLE(u)->notify_message)
++                UNIT_VTABLE(u)->notify_message(u, pid, tags);
++}
++
+ static int manager_process_notify_fd(Manager *m) {
+         ssize_t n;
+@@ -1259,6 +1283,8 @@ static int manager_process_notify_fd(Manager *m) {
+                         .iov_len = sizeof(buf)-1,
+                 };
++                bool found = false;
++
+                 union {
+                         struct cmsghdr cmsghdr;
+                         uint8_t buf[CMSG_SPACE(sizeof(struct ucred))];
+@@ -1272,7 +1298,6 @@ static int manager_process_notify_fd(Manager *m) {
+                 };
+                 struct ucred *ucred;
+                 Unit *u;
+-                _cleanup_strv_free_ char **tags = NULL;
+                 n = recvmsg(m->notify_watch.fd, &msghdr, MSG_DONTWAIT);
+                 if (n <= 0) {
+@@ -1295,105 +1320,105 @@ static int manager_process_notify_fd(Manager *m) {
+                 ucred = (struct ucred*) CMSG_DATA(&control.cmsghdr);
+-                u = hashmap_get(m->watch_pids, LONG_TO_PTR(ucred->pid));
+-                if (!u) {
+-                        u = manager_get_unit_by_pid(m, ucred->pid);
+-                        if (!u) {
+-                                log_warning("Cannot find unit for notify message of PID %lu.", (unsigned long) ucred->pid);
+-                                continue;
+-                        }
+-                }
+-
+                 assert((size_t) n < sizeof(buf));
+                 buf[n] = 0;
+-                tags = strv_split(buf, "\n\r");
+-                if (!tags)
+-                        return log_oom();
+-
+-                log_debug_unit(u->id, "Got notification message for unit %s", u->id);
+-
+-                if (UNIT_VTABLE(u)->notify_message)
+-                        UNIT_VTABLE(u)->notify_message(u, ucred->pid, tags);
+-        }
+-
+-        return 0;
+-}
+-
+-static int manager_dispatch_sigchld(Manager *m) {
+-        assert(m);
+-
+-        for (;;) {
+-                siginfo_t si = {};
+-                Unit *u;
+-                int r;
+-
+-                /* First we call waitd() for a PID and do not reap the
+-                 * zombie. That way we can still access /proc/$PID for
+-                 * it while it is a zombie. */
+-                if (waitid(P_ALL, 0, &si, WEXITED|WNOHANG|WNOWAIT) < 0) {
+-
+-                        if (errno == ECHILD)
+-                                break;
+-                        if (errno == EINTR)
+-                                continue;
+-
+-                        return -errno;
++                u = manager_get_unit_by_pid(m, ucred->pid);
++                if (u) {
++                        manager_invoke_notify_message(m, u, ucred->pid, buf, n);
++                        found = true;
+                 }
+-                if (si.si_pid <= 0)
+-                        break;
+-
+-                if (si.si_code == CLD_EXITED || si.si_code == CLD_KILLED || si.si_code == CLD_DUMPED) {
+-                        _cleanup_free_ char *name = NULL;
+-
+-                        get_process_comm(si.si_pid, &name);
+-                        log_debug("Got SIGCHLD for process %lu (%s)", (unsigned long) si.si_pid, strna(name));
++                u = hashmap_get(m->watch_pids1, LONG_TO_PTR(ucred->pid));
++                if (u) {
++                        manager_invoke_notify_message(m, u, ucred->pid, buf, n);
++                        found = true;
+                 }
+-                /* Let's flush any message the dying child might still
+-                 * have queued for us. This ensures that the process
+-                 * still exists in /proc so that we can figure out
+-                 * which cgroup and hence unit it belongs to. */
+-                r = manager_process_notify_fd(m);
+-                if (r < 0)
+-                        return r;
+-
+-                /* And now figure out the unit this belongs to */
+-                u = hashmap_get(m->watch_pids, LONG_TO_PTR(si.si_pid));
+-                if (!u)
+-                        u = manager_get_unit_by_pid(m, si.si_pid);
+-
+-                /* And now, we actually reap the zombie. */
+-                if (waitid(P_PID, si.si_pid, &si, WEXITED) < 0) {
+-                        if (errno == EINTR)
+-                                continue;
+-
+-                        return -errno;
++                u = hashmap_get(m->watch_pids2, LONG_TO_PTR(ucred->pid));
++                if (u) {
++                        manager_invoke_notify_message(m, u, ucred->pid, buf, n);
++                        found = true;
+                 }
+-                if (si.si_code != CLD_EXITED && si.si_code != CLD_KILLED && si.si_code != CLD_DUMPED)
+-                        continue;
++                if (!found)
++                        log_warning("Cannot find unit for notify message of PID %lu.",(long unsigned) ucred->pid);
++        }
+-                log_debug("Child %lu died (code=%s, status=%i/%s)",
+-                          (long unsigned) si.si_pid,
+-                          sigchld_code_to_string(si.si_code),
+-                          si.si_status,
+-                          strna(si.si_code == CLD_EXITED
+-                                ? exit_status_to_string(si.si_status, EXIT_STATUS_FULL)
+-                                : signal_to_string(si.si_status)));
++        return 0;
++}
+-                if (!u)
+-                        continue;
++static void invoke_sigchld_event(Manager *m, Unit *u, siginfo_t *si) {
++        assert(m);
++        assert(u);
++        assert(si);
+-                log_debug_unit(u->id,
+-                               "Child %lu belongs to %s", (long unsigned) si.si_pid, u->id);
++        log_debug_unit(u->id, "Child %lu belongs to %s",(long unsigned) si->si_pid, u->id);
+-                unit_unwatch_pid(u, si.si_pid);
+-                UNIT_VTABLE(u)->sigchld_event(u, si.si_pid, si.si_code, si.si_status);
+-        }
++        unit_unwatch_pid(u, si->si_pid);
++        UNIT_VTABLE(u)->sigchld_event(u, si->si_pid, si->si_code, si->si_status);
++}
+-        return 0;
++static int manager_dispatch_sigchld(Manager *m) {
++    assert(m);
++
++    for (;;) {
++            siginfo_t si = {};
++
++            /* First we call waitd() for a PID and do not reap the
++             * zombie. That way we can still access /proc/$PID for
++             * it while it is a zombie. */
++            if (waitid(P_ALL, 0, &si, WEXITED|WNOHANG|WNOWAIT) < 0) {
++
++                    if (errno == ECHILD)
++                            break;
++
++                    if (errno == EINTR)
++                            continue;
++
++                    return -errno;
++            }
++
++            if (si.si_pid <= 0)
++                    break;
++
++            if (si.si_code == CLD_EXITED || si.si_code == CLD_KILLED || si.si_code == CLD_DUMPED) {
++                    _cleanup_free_ char *name = NULL;
++                    Unit *u;
++
++                    get_process_comm(si.si_pid, &name);
++
++                    log_debug("Child %lu (%s) died (code=%s, status=%i/%s)",
++                              (long unsigned) si.si_pid, strna(name),
++                              sigchld_code_to_string(si.si_code),
++                              si.si_status,
++                              strna(si.si_code == CLD_EXITED
++                                    ? exit_status_to_string(si.si_status, EXIT_STATUS_FULL)
++                                    : signal_to_string(si.si_status)));
++
++                    /* And now figure out the unit this belongs
++                     * to, it might be multiple... */
++                    u = manager_get_unit_by_pid(m, si.si_pid);
++                    if (u)
++                            invoke_sigchld_event(m, u, &si);
++                    u = hashmap_get(m->watch_pids1, LONG_TO_PTR(si.si_pid));
++                    if (u)
++                            invoke_sigchld_event(m, u, &si);
++                    u = hashmap_get(m->watch_pids2, LONG_TO_PTR(si.si_pid));
++                    if (u)
++                            invoke_sigchld_event(m, u, &si);
++            }
++
++            /* And now, we actually reap the zombie. */
++            if (waitid(P_PID, si.si_pid, &si, WEXITED) < 0) {
++                    if (errno == EINTR)
++                            continue;
++
++                    return -errno;
++            }
++    }
++
++    return 0;
+ }
+ static int manager_start_target(Manager *m, const char *name, JobMode mode) {
+diff --git a/src/core/manager.h b/src/core/manager.h
+index ee42c5e..0133ea5 100644
+--- a/src/core/manager.h
++++ b/src/core/manager.h
+@@ -125,7 +125,14 @@ struct Manager {
+         /* Units that should be realized */
+         LIST_HEAD(Unit, cgroup_queue);
+-        Hashmap *watch_pids;  /* pid => Unit object n:1 */
++        /* We use two hash tables here, since the same PID might be
++         * watched by two different units: once the unit that forked
++         * it off, and possibly a different unit to which it was
++         * joined as cgroup member. Since we know that it is either
++         * one or two units for each PID we just use to hashmaps
++         * here. */
++        Hashmap *watch_pids1;  /* pid => Unit object n:1 */
++        Hashmap *watch_pids2;  /* pid => Unit object n:1 */
+         char *notify_socket;
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 57a406d..dc88862 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1663,16 +1663,27 @@ int unit_watch_pid(Unit *u, pid_t pid) {
+         assert(u);
+         assert(pid >= 1);
++        /* Watch a specific PID. We only support one or two units
++         * watching each PID for now, not more. */
++
++        r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
++        if (r < 0)
++                return r;
++
+         r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
+         if (r < 0)
+                 return r;
+-        /* Watch a specific PID. We only support one unit watching
+-         * each PID for now. */
++        r = hashmap_put(u->manager->watch_pids1, LONG_TO_PTR(pid), u);
++        if (r == -EEXIST) {
++                r = hashmap_ensure_allocated(&u->manager->watch_pids2, trivial_hash_func, trivial_compare_func);
++                if (r < 0)
++                        return r;
+-        r = set_put(u->pids, LONG_TO_PTR(pid));
++                r = hashmap_put(u->manager->watch_pids2, LONG_TO_PTR(pid), u);
++        }
+-        q = hashmap_put(u->manager->watch_pids, LONG_TO_PTR(pid), u);
++        q = set_put(u->pids, LONG_TO_PTR(pid));
+         if (q < 0)
+                 return q;
+@@ -1683,7 +1694,8 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
+         assert(u);
+         assert(pid >= 1);
+-        hashmap_remove_value(u->manager->watch_pids, LONG_TO_PTR(pid), u);
++        hashmap_remove_value(u->manager->watch_pids1, LONG_TO_PTR(pid), u);
++        hashmap_remove_value(u->manager->watch_pids2, LONG_TO_PTR(pid), u);
+         set_remove(u->pids, LONG_TO_PTR(pid));
+ }
+@@ -1756,8 +1768,10 @@ void unit_unwatch_all_pids(Unit *u) {
+         assert(u);
+-        SET_FOREACH(e, u->pids, i)
+-                hashmap_remove_value(u->manager->watch_pids, e, u);
++        SET_FOREACH(e, u->pids, i) {
++                hashmap_remove_value(u->manager->watch_pids1, e, u);
++                hashmap_remove_value(u->manager->watch_pids2, e, u);
++        }
+         set_free(u->pids);
+         u->pids = NULL;
diff --git a/debian/patches/core-check-for-return-value-from-get_process_state.patch b/debian/patches/core-check-for-return-value-from-get_process_state.patch
new file mode 100644 (file)
index 0000000..742287c
--- /dev/null
@@ -0,0 +1,34 @@
+From: Yuxuan Shui <yshuiv7@gmail.com>
+Date: Sat, 15 Feb 2014 13:20:55 +0800
+Subject: core: check for return value from get_process_state
+
+Fix for commit e10c9985bb.
+---
+ src/core/service.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index d9bc021..c8dbbef 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -1429,11 +1429,17 @@ static int service_load_pid_file(Service *s, bool may_warn) {
+                 return -ESRCH;
+         }
+-        if (get_process_state(pid) == 'Z') {
++        r = get_process_state(pid);
++        if (r < 0) {
++                if (may_warn)
++                        log_info_unit(UNIT(s)->id, "Failed to read /proc/%d/stat: %s",
++                                      pid, strerror(-r));
++                return r;
++        } else if (r == 'Z') {
+                 if (may_warn)
+                         log_info_unit(UNIT(s)->id,
+-                                      "PID "PID_FMT" read from file %s is a zombie.",
+-                                      pid, s->pid_file);
++                                      "PID %lu read from file %s is a zombie.",
++                                      (unsigned long) pid, s->pid_file);
+                 return -ESRCH;
+         }
diff --git a/debian/patches/core-check-the-right-variable-for-failed-open.patch b/debian/patches/core-check-the-right-variable-for-failed-open.patch
new file mode 100644 (file)
index 0000000..cc0e97d
--- /dev/null
@@ -0,0 +1,23 @@
+From: =?utf-8?q?=C5=81ukasz_Stelmach?= <l.stelmach@samsung.com>
+Date: Thu, 8 May 2014 12:57:26 +0200
+Subject: core: check the right variable for failed open()
+
+(cherry picked from commit cd7affaeea16d3904354b810a292e594dfef25dd)
+(cherry picked from commit d7c1de4f3635830d28d6c61f3d1cae2a9474ffd8)
+---
+ src/core/cgroup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/cgroup.c b/src/core/cgroup.c
+index 32e2599..c215a86 100644
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -661,7 +661,7 @@ int manager_setup_cgroup(Manager *m) {
+                 close_nointr_nofail(m->pin_cgroupfs_fd);
+         m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
+-        if (r < 0) {
++        if (m->pin_cgroupfs_fd < 0) {
+                 log_error("Failed to open pin file: %m");
+                 return -errno;
+         }
diff --git a/debian/patches/core-clean-up-signal-reset-logic-when-reexec.patch b/debian/patches/core-clean-up-signal-reset-logic-when-reexec.patch
new file mode 100644 (file)
index 0000000..3305881
--- /dev/null
@@ -0,0 +1,49 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 20 Jun 2014 16:58:21 +0200
+Subject: core: clean-up signal reset logic when reexec
+
+There's no need to save the old sigmask, if we are going to die. Let's
+simplify this. Also, reset all the signal handlers, so that we don't
+leave SIG_IGN set for some of them across reexec.
+
+(cherry picked from commit 9bfcda9528636914aef3e0ab91191bb81654c83d)
+(cherry picked from commit 92254f72bbea94b8e640b829e2a0aef2a1aa4a36)
+---
+ src/core/main.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index 2f45485..8c994a8 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1748,7 +1748,7 @@ finish:
+         if (reexecute) {
+                 const char **args;
+                 unsigned i, args_size;
+-                sigset_t ss, o_ss;
++                sigset_t ss;
+                 /* Close and disarm the watchdog, so that the new
+                  * instance can reinitialize it, but doesn't get
+@@ -1834,8 +1834,10 @@ finish:
+                 /* reenable any blocked signals, especially important
+                  * if we switch from initial ramdisk to init=... */
+-                sigemptyset(&ss);
+-                sigprocmask(SIG_SETMASK, &ss, &o_ss);
++                reset_all_signal_handlers();
++
++                assert_se(sigemptyset(&ss) == 0);
++                assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0);
+                 if (switch_root_init) {
+                         args[0] = switch_root_init;
+@@ -1855,8 +1857,6 @@ finish:
+                         log_error("Failed to execute /bin/sh, giving up: %m");
+                 } else
+                         log_warning("Failed to execute /sbin/init, giving up: %m");
+-
+-                sigprocmask(SIG_SETMASK, &o_ss, NULL);
+         }
+         if (serialization)
diff --git a/debian/patches/core-close-socket-fds-asynchronously.patch b/debian/patches/core-close-socket-fds-asynchronously.patch
new file mode 100644 (file)
index 0000000..5269bfe
--- /dev/null
@@ -0,0 +1,41 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 13 May 2014 23:22:13 +0200
+Subject: core: close socket fds asynchronously
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-April/018928.html
+(cherry picked from commit 574634bcacb01efe15ca2742effd461a5b7afb5f)
+(cherry picked from commit ea74f003b0cbc37e76a2ad72460bfb317b880147)
+---
+ src/core/service.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index f0df5fe..9fd58fa 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -25,6 +25,7 @@
+ #include <unistd.h>
+ #include <sys/reboot.h>
++#include "async.h"
+ #include "manager.h"
+ #include "unit.h"
+ #include "service.h"
+@@ -222,7 +223,7 @@ static void service_close_socket_fd(Service *s) {
+         if (s->socket_fd < 0)
+                 return;
+-        s->socket_fd = safe_close(s->socket_fd);
++        s->socket_fd = asynchronous_close(s->socket_fd);
+ }
+ static void service_connection_unref(Service *s) {
+@@ -2793,7 +2794,7 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
+                         log_debug_unit(u->id, "Failed to parse socket-fd value %s", value);
+                 else {
+-                        safe_close(s->socket_fd);
++                        asynchronous_close(s->socket_fd);
+                         s->socket_fd = fdset_remove(fds, fd);
+                 }
+         } else if (streq(key, "main-exec-status-pid")) {
diff --git a/debian/patches/core-correctly-unregister-PIDs-from-PID-hashtables.patch b/debian/patches/core-correctly-unregister-PIDs-from-PID-hashtables.patch
new file mode 100644 (file)
index 0000000..74460a2
--- /dev/null
@@ -0,0 +1,96 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 6 Mar 2014 02:19:42 +0100
+Subject: core: correctly unregister PIDs from PID hashtables
+
+Conflicts:
+       src/core/unit.c
+---
+ src/core/unit.c | 41 ++++++++++++++++++-----------------------
+ 1 file changed, 18 insertions(+), 23 deletions(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index dc88862..9a7720d 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1666,11 +1666,11 @@ int unit_watch_pid(Unit *u, pid_t pid) {
+         /* Watch a specific PID. We only support one or two units
+          * watching each PID for now, not more. */
+-        r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
++        r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
+         if (r < 0)
+                 return r;
+-        r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
++        r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
+         if (r < 0)
+                 return r;
+@@ -1699,7 +1699,17 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
+         set_remove(u->pids, LONG_TO_PTR(pid));
+ }
+-static int watch_pids_in_path(Unit *u, const char *path) {
++void unit_unwatch_all_pids(Unit *u) {
++        assert(u);
++
++        while (!set_isempty(u->pids))
++                unit_unwatch_pid(u, PTR_TO_LONG(set_first(u->pids)));
++
++        set_free(u->pids);
++        u->pids = NULL;
++}
++
++static int unit_watch_pids_in_path(Unit *u, const char *path) {
+         _cleanup_closedir_ DIR *d = NULL;
+         _cleanup_fclose_ FILE *f = NULL;
+         int ret = 0, r;
+@@ -1737,7 +1747,7 @@ static int watch_pids_in_path(Unit *u, const char *path) {
+                         if (!p)
+                                 return -ENOMEM;
+-                        r = watch_pids_in_path(u, p);
++                        r = unit_watch_pids_in_path(u, p);
+                         if (r < 0 && ret >= 0)
+                                 ret = r;
+                 }
+@@ -1754,27 +1764,12 @@ static int watch_pids_in_path(Unit *u, const char *path) {
+ int unit_watch_all_pids(Unit *u) {
+         assert(u);
+-        if (!u->cgroup_path)
+-                return -ENOENT;
+-
+         /* Adds all PIDs from our cgroup to the set of PIDs we watch */
+-        return watch_pids_in_path(u, u->cgroup_path);
+-}
+-
+-void unit_unwatch_all_pids(Unit *u) {
+-        Iterator i;
+-        void *e;
+-
+-        assert(u);
+-
+-        SET_FOREACH(e, u->pids, i) {
+-                hashmap_remove_value(u->manager->watch_pids1, e, u);
+-                hashmap_remove_value(u->manager->watch_pids2, e, u);
+-        }
++        if (!u->cgroup_path)
++                return -ENOENT;
+-        set_free(u->pids);
+-        u->pids = NULL;
++        return unit_watch_pids_in_path(u, u->cgroup_path);
+ }
+ void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
+@@ -1792,7 +1787,7 @@ void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
+                         continue;
+                 if (kill(pid, 0) < 0 && errno == ESRCH)
+-                        set_remove(u->pids, e);
++                        unit_unwatch_pid(u, pid);
+         }
+ }
diff --git a/debian/patches/core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch b/debian/patches/core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch
new file mode 100644 (file)
index 0000000..cc64df9
--- /dev/null
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 5 Dec 2013 16:06:04 -0500
+Subject: core/device: ignore SYSTEMD_WANTS= in user mode
+
+---
+ src/core/device.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/device.c b/src/core/device.c
+index 610fe88..e02c207 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -275,8 +275,9 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+                         }
+                 }
+-                wants = udev_device_get_property_value(dev, "SYSTEMD_WANTS");
+-                if (wants) {
++                if (u->manager->running_as == SYSTEMD_SYSTEM &&
++                    (wants = udev_device_get_property_value(dev, "SYSTEMD_WANTS"))) {
++
+                         char *state, *w;
+                         size_t l;
diff --git a/debian/patches/core-do-not-add-what-to-RequiresMountsFor-for-networ.patch b/debian/patches/core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
new file mode 100644 (file)
index 0000000..65a2631
--- /dev/null
@@ -0,0 +1,176 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 5 Oct 2013 13:09:43 -0400
+Subject: core: do not add "what" to RequiresMountsFor for network mounts
+
+For cifs mount like //server/share, we would get
+RequiresMountsFor=/server/share, which probably isn't
+harmful, but quite confusing.
+
+Unfortunately a bunch of static functions had to be moved
+up, but patch is really one line.
+---
+ src/core/mount.c | 137 ++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 70 insertions(+), 67 deletions(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index db055f0..70cd372 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -59,6 +59,72 @@ static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
+         [MOUNT_FAILED] = UNIT_FAILED
+ };
++static char* mount_test_option(const char *haystack, const char *needle) {
++        struct mntent me = { .mnt_opts = (char*) haystack };
++
++        assert(needle);
++
++        /* Like glibc's hasmntopt(), but works on a string, not a
++         * struct mntent */
++
++        if (!haystack)
++                return NULL;
++
++        return hasmntopt(&me, needle);
++}
++
++static bool mount_is_network(MountParameters *p) {
++        assert(p);
++
++        if (mount_test_option(p->options, "_netdev"))
++                return true;
++
++        if (p->fstype && fstype_is_network(p->fstype))
++                return true;
++
++        return false;
++}
++
++static bool mount_is_bind(MountParameters *p) {
++        assert(p);
++
++        if (mount_test_option(p->options, "bind"))
++                return true;
++
++        if (p->fstype && streq(p->fstype, "bind"))
++                return true;
++
++        if (mount_test_option(p->options, "rbind"))
++                return true;
++
++        if (p->fstype && streq(p->fstype, "rbind"))
++                return true;
++
++        return false;
++}
++
++static bool mount_is_auto(MountParameters *p) {
++        assert(p);
++
++        return !mount_test_option(p->options, "noauto");
++}
++
++static bool needs_quota(MountParameters *p) {
++        assert(p);
++
++        if (mount_is_network(p))
++                return false;
++
++        if (mount_is_bind(p))
++                return false;
++
++        return mount_test_option(p->options, "usrquota") ||
++                mount_test_option(p->options, "grpquota") ||
++                mount_test_option(p->options, "quota") ||
++                mount_test_option(p->options, "usrjquota") ||
++                mount_test_option(p->options, "grpjquota");
++}
++
+ static void mount_init(Unit *u) {
+         Mount *m = MOUNT(u);
+@@ -182,7 +248,10 @@ static int mount_add_mount_links(Mount *m) {
+          * for the source path (if this is a bind mount) to be
+          * available. */
+         pm = get_mount_parameters_fragment(m);
+-        if (pm && pm->what && path_is_absolute(pm->what)) {
++        if (pm && pm->what &&
++            path_is_absolute(pm->what) &&
++            !mount_is_network(pm)) {
++
+                 r = unit_require_mounts_for(UNIT(m), pm->what);
+                 if (r < 0)
+                         return r;
+@@ -214,72 +283,6 @@ static int mount_add_mount_links(Mount *m) {
+         return 0;
+ }
+-static char* mount_test_option(const char *haystack, const char *needle) {
+-        struct mntent me = { .mnt_opts = (char*) haystack };
+-
+-        assert(needle);
+-
+-        /* Like glibc's hasmntopt(), but works on a string, not a
+-         * struct mntent */
+-
+-        if (!haystack)
+-                return NULL;
+-
+-        return hasmntopt(&me, needle);
+-}
+-
+-static bool mount_is_network(MountParameters *p) {
+-        assert(p);
+-
+-        if (mount_test_option(p->options, "_netdev"))
+-                return true;
+-
+-        if (p->fstype && fstype_is_network(p->fstype))
+-                return true;
+-
+-        return false;
+-}
+-
+-static bool mount_is_bind(MountParameters *p) {
+-        assert(p);
+-
+-        if (mount_test_option(p->options, "bind"))
+-                return true;
+-
+-        if (p->fstype && streq(p->fstype, "bind"))
+-                return true;
+-
+-        if (mount_test_option(p->options, "rbind"))
+-                return true;
+-
+-        if (p->fstype && streq(p->fstype, "rbind"))
+-                return true;
+-
+-        return false;
+-}
+-
+-static bool mount_is_auto(MountParameters *p) {
+-        assert(p);
+-
+-        return !mount_test_option(p->options, "noauto");
+-}
+-
+-static bool needs_quota(MountParameters *p) {
+-        assert(p);
+-
+-        if (mount_is_network(p))
+-                return false;
+-
+-        if (mount_is_bind(p))
+-                return false;
+-
+-        return mount_test_option(p->options, "usrquota") ||
+-                mount_test_option(p->options, "grpquota") ||
+-                mount_test_option(p->options, "quota") ||
+-                mount_test_option(p->options, "usrjquota") ||
+-                mount_test_option(p->options, "grpjquota");
+-}
+-
+ static int mount_add_device_links(Mount *m) {
+         MountParameters *p;
+         bool device_wants_mount = false;
diff --git a/debian/patches/core-do-not-print-invalid-utf-8-in-error-messages.patch b/debian/patches/core-do-not-print-invalid-utf-8-in-error-messages.patch
new file mode 100644 (file)
index 0000000..98a1960
--- /dev/null
@@ -0,0 +1,129 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 17 Jan 2014 21:28:41 -0500
+Subject: core: do not print invalid utf-8 in error messages
+
+(cherry picked from commit 550a40eceb7d1917152fc9317bf2696708d52bc2)
+
+Conflicts:
+       TODO
+---
+ src/shared/fileio.c  | 11 +++++++----
+ src/shared/utf8.c    | 26 ++++++++++++++++++++++++++
+ src/shared/utf8.h    |  3 +++
+ src/test/test-utf8.c | 17 +++++++++++++++++
+ 4 files changed, 53 insertions(+), 4 deletions(-)
+
+diff --git a/src/shared/fileio.c b/src/shared/fileio.c
+index d28e38a..121cd57 100644
+--- a/src/shared/fileio.c
++++ b/src/shared/fileio.c
+@@ -467,15 +467,18 @@ static int parse_env_file_push(const char *filename, unsigned line,
+         va_list aq, *ap = userdata;
+         if (!utf8_is_valid(key)) {
+-                log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.",
+-                          filename, line, key);
++                _cleanup_free_ char *p = utf8_escape_invalid(key);
++
++                log_error("%s:%u: invalid UTF-8 in key '%s', ignoring.",
++                          filename, line, p);
+                 return -EINVAL;
+         }
+         if (value && !utf8_is_valid(value)) {
+-                /* FIXME: filter UTF-8 */
++                _cleanup_free_ char *p = utf8_escape_invalid(value);
++
+                 log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.",
+-                          filename, line, key, value);
++                          filename, line, key, p);
+                 return -EINVAL;
+         }
+diff --git a/src/shared/utf8.c b/src/shared/utf8.c
+index 31120af..2b70d45 100644
+--- a/src/shared/utf8.c
++++ b/src/shared/utf8.c
+@@ -172,6 +172,32 @@ const char *utf8_is_valid(const char *str) {
+         return str;
+ }
++char *utf8_escape_invalid(const char *str) {
++        char *p, *s;
++
++        assert(str);
++
++        p = s = malloc(strlen(str) * 4 + 1);
++        if (!p)
++                return NULL;
++
++        while (*str) {
++                int len;
++
++                len = utf8_encoded_valid_unichar(str);
++                if (len > 0) {
++                        s = mempcpy(s, str, len);
++                        str += len;
++                } else {
++                        s = mempcpy(s, UTF8_REPLACEMENT_CHARACTER, strlen(UTF8_REPLACEMENT_CHARACTER));
++                        str += 1;
++                }
++        }
++        *s = '\0';
++
++        return p;
++}
++
+ char *ascii_is_valid(const char *str) {
+         const char *p;
+diff --git a/src/shared/utf8.h b/src/shared/utf8.h
+index 96a03ea..f93dfb8 100644
+--- a/src/shared/utf8.h
++++ b/src/shared/utf8.h
+@@ -25,8 +25,11 @@
+ #include "macro.h"
++#define UTF8_REPLACEMENT_CHARACTER "\xef\xbf\xbd"
++
+ const char *utf8_is_valid(const char *s) _pure_;
+ char *ascii_is_valid(const char *s) _pure_;
++char *utf8_escape_invalid(const char *s);
+ bool utf8_is_printable(const char* str, size_t length) _pure_;
+diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c
+index f0182ee..53c1d47 100644
+--- a/src/test/test-utf8.c
++++ b/src/test/test-utf8.c
+@@ -66,12 +66,29 @@ static void test_utf8_encoded_valid_unichar(void) {
+ }
++static void test_utf8_escaping(void) {
++        _cleanup_free_ char *p1, *p2, *p3;
++
++        p1 = utf8_escape_invalid("goo goo goo");
++        puts(p1);
++        assert_se(utf8_is_valid(p1));
++
++        p2 = utf8_escape_invalid("\341\204\341\204");
++        puts(p2);
++        assert_se(utf8_is_valid(p2));
++
++        p3 = utf8_escape_invalid("\341\204");
++        puts(p3);
++        assert_se(utf8_is_valid(p3));
++}
++
+ int main(int argc, char *argv[]) {
+         test_utf8_is_valid();
+         test_utf8_is_printable();
+         test_ascii_is_valid();
+         test_ascii_filter();
+         test_utf8_encoded_valid_unichar();
++        test_utf8_escaping();
+         return 0;
+ }
diff --git a/debian/patches/core-do-not-read-system-boot-timestamps-in-systemd-u.patch b/debian/patches/core-do-not-read-system-boot-timestamps-in-systemd-u.patch
new file mode 100644 (file)
index 0000000..a53c021
--- /dev/null
@@ -0,0 +1,31 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 26 Mar 2014 03:47:03 +0100
+Subject: core: do not read system boot timestamps in systemd --user mode
+
+Before:
+  $ systemd-analyze --user
+  Startup finished in 2.810s (firmware) + 48ms (loader) + 122ms (userspace) = 122ms
+
+After:
+  $ systemd-analyze --user
+  Startup finished in 122ms (userspace) = 122ms
+
+(cherry picked from commit 530a9662aa3d291555e5b3f6eb43199e1b04f63c)
+(cherry picked from commit ba3942b4892023483422c7efdbfd29c58d2ac24b)
+---
+ src/core/manager.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 3a38fab..28f4d72 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -495,7 +495,7 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
+                 return -ENOMEM;
+ #ifdef ENABLE_EFI
+-        if (detect_container(NULL) <= 0)
++        if (running_as == SYSTEMD_SYSTEM && detect_container(NULL) <= 0)
+                 boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp);
+ #endif
diff --git a/debian/patches/core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch b/debian/patches/core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch
new file mode 100644 (file)
index 0000000..da5a96e
--- /dev/null
@@ -0,0 +1,49 @@
+From: Matt Mullins <mokomull@gmail.com>
+Date: Mon, 24 Feb 2014 15:03:52 -0800
+Subject: core: do not segfault if /proc/swaps cannot be opened
+
+The refactoring in f84b1b1ff9b1261 ('core: do not segfault if swap
+activity happens when /proc/swaps is not open') caused
+swap_dispatch_reload and swap_enumerate to continue even if fopen()
+failed with ENOENT.
+
+This should instead be modified to return from swap_dispatch_reload and
+swap_enumerate, rather than continuing to load the list of swaps when
+m->proc_swaps is NULL.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1069393
+---
+ src/core/swap.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/swap.c b/src/core/swap.c
+index 727bb95..3c009da 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -1074,7 +1074,7 @@ static int open_proc_swaps(Manager *m) {
+                 m->proc_swaps = fopen("/proc/swaps", "re");
+                 if (!m->proc_swaps)
+-                        return (errno == ENOENT) ? 0 : -errno;
++                        return -errno;
+                 m->swap_watch.type = WATCH_SWAP;
+                 m->swap_watch.fd = fileno(m->proc_swaps);
+@@ -1097,7 +1097,7 @@ int swap_dispatch_reload(Manager *m) {
+         r = open_proc_swaps(m);
+         if (r < 0)
+-                return r;
++                return (r == -ENOENT) ? 0 : r;
+         return swap_fd_event(m, EPOLLPRI);
+ }
+@@ -1250,7 +1250,7 @@ static int swap_enumerate(Manager *m) {
+         r = open_proc_swaps(m);
+         if (r < 0)
+-                return r;
++                return (r == -ENOENT) ? 0 : r;
+         r = swap_load_proc_swaps(m, false);
+         if (r < 0)
diff --git a/debian/patches/core-do-not-segfault-if-swap-activity-happens-when-p.patch b/debian/patches/core-do-not-segfault-if-swap-activity-happens-when-p.patch
new file mode 100644 (file)
index 0000000..1ea694a
--- /dev/null
@@ -0,0 +1,86 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 12 Jan 2014 11:38:56 -0500
+Subject: core: do not segfault if swap activity happens when /proc/swaps is
+ not open
+
+In https://bugzilla.redhat.com/show_bug.cgi?id=969795 systemd crashes
+in swap_dispatch_reload called from manager_loop becuase m->proc_swaps
+is NULL. It can legitimately be NULL if something went wrong when
+initially enumerating swap devices when starting the manager. This
+is probably a sign of significant trouble, but let's do our best
+to recover.
+---
+ src/core/swap.c | 45 +++++++++++++++++++++++++++++----------------
+ 1 file changed, 29 insertions(+), 16 deletions(-)
+
+diff --git a/src/core/swap.c b/src/core/swap.c
+index 147f710..f295b65 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -1068,14 +1068,40 @@ static int swap_load_proc_swaps(Manager *m, bool set_flags) {
+         return r;
+ }
++static int open_proc_swaps(Manager *m) {
++        if (!m->proc_swaps) {
++                struct epoll_event ev = {
++                        .events = EPOLLPRI,
++                        .data.ptr = &m->swap_watch,
++                };
++
++                m->proc_swaps = fopen("/proc/swaps", "re");
++                if (!m->proc_swaps)
++                        return (errno == ENOENT) ? 0 : -errno;
++
++                m->swap_watch.type = WATCH_SWAP;
++                m->swap_watch.fd = fileno(m->proc_swaps);
++
++                if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0)
++                        return -errno;
++        }
++
++        return 0;
++}
++
+ int swap_dispatch_reload(Manager *m) {
+         /* This function should go as soon as the kernel properly notifies us */
++        int r;
+         if (_likely_(!m->request_reload))
+                 return 0;
+         m->request_reload = false;
++        r = open_proc_swaps(m);
++        if (r < 0)
++                return r;
++
+         return swap_fd_event(m, EPOLLPRI);
+ }
+@@ -1225,22 +1251,9 @@ static int swap_enumerate(Manager *m) {
+         int r;
+         assert(m);
+-        if (!m->proc_swaps) {
+-                struct epoll_event ev = {
+-                        .events = EPOLLPRI,
+-                        .data.ptr = &m->swap_watch,
+-                };
+-
+-                m->proc_swaps = fopen("/proc/swaps", "re");
+-                if (!m->proc_swaps)
+-                        return (errno == ENOENT) ? 0 : -errno;
+-
+-                m->swap_watch.type = WATCH_SWAP;
+-                m->swap_watch.fd = fileno(m->proc_swaps);
+-
+-                if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0)
+-                        return -errno;
+-        }
++        r = open_proc_swaps(m);
++        if (r < 0)
++                return r;
+         r = swap_load_proc_swaps(m, false);
+         if (r < 0)
diff --git a/debian/patches/core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch b/debian/patches/core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch
new file mode 100644 (file)
index 0000000..98624fe
--- /dev/null
@@ -0,0 +1,26 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 24 Mar 2014 21:04:02 +0100
+Subject: core: don't try to relabel mounts before we loaded the policy
+
+(cherry picked from commit c4bfd1691f4d3e26d6d7f34dbca941e119956e8a)
+(cherry picked from commit 75f801a9efc45dab52286bab678c0baa1c9a386b)
+---
+ src/core/mount-setup.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
+index 679f289..cff83d3 100644
+--- a/src/core/mount-setup.c
++++ b/src/core/mount-setup.c
+@@ -166,7 +166,10 @@ static int mount_one(const MountPoint *p, bool relabel) {
+         /* The access mode here doesn't really matter too much, since
+          * the mounted file system will take precedence anyway. */
+-        mkdir_p_label(p->where, 0755);
++        if (relabel)
++                mkdir_p_label(p->where, 0755);
++        else
++                mkdir_p(p->where, 0755);
+         log_debug("Mounting %s to %s of type %s with options %s.",
+                   p->what,
diff --git a/debian/patches/core-fix-crashes-if-locale.conf-contains-invalid-utf.patch b/debian/patches/core-fix-crashes-if-locale.conf-contains-invalid-utf.patch
new file mode 100644 (file)
index 0000000..b076d59
--- /dev/null
@@ -0,0 +1,138 @@
+From: Goffredo Baroncelli <kreijack@libero.it>
+Date: Thu, 6 Feb 2014 19:09:59 +0100
+Subject: core: fix crashes if locale.conf contains invalid utf-8 string
+
+In the parse_env_file_push() and load_env_file_push() functions, there
+are two assert() call to check if the key or value parameters are utf8 valid.
+
+If the strings aren't utf8 valid, assert does abort.
+
+These function are used early by systemd to parse some files. For
+example '/etc/locale.conf'. In my case this file contained a not utf8
+sequence, which is bad, but systemd crashed during the boot, which
+is even worse!
+
+The enclosed patch removes the assert and return -EINVAL if the
+sequence is invalid. This is possible because the caller of these
+function [1] checks the errors.
+So the check of an invalid utf8 sequence is still performed, but
+systemd doesn't crash anymore and logs the error.
+
+[1] parse_env_file_internal(), invoked by load_env_file() and
+parse_env_file()
+
+(cherry picked from commit f27f0e2177ac0a4b96585aed7db3a080e27a2f00)
+---
+ src/shared/fileio.c | 77 ++++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 43 insertions(+), 34 deletions(-)
+
+diff --git a/src/shared/fileio.c b/src/shared/fileio.c
+index 733b320..d28e38a 100644
+--- a/src/shared/fileio.c
++++ b/src/shared/fileio.c
+@@ -462,35 +462,39 @@ fail:
+ static int parse_env_file_push(const char *filename, unsigned line,
+                                const char *key, char *value, void *userdata) {
+-        assert(utf8_is_valid(key));
+-        if (value && !utf8_is_valid(value))
++        const char *k;
++        va_list aq, *ap = userdata;
++
++        if (!utf8_is_valid(key)) {
++                log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.",
++                          filename, line, key);
++                return -EINVAL;
++        }
++
++        if (value && !utf8_is_valid(value)) {
+                 /* FIXME: filter UTF-8 */
+-                log_error("%s:%u: invalid UTF-8 for key %s: '%s', ignoring.",
++                log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.",
+                           filename, line, key, value);
+-        else {
+-                const char *k;
+-                va_list* ap = (va_list*) userdata;
+-                va_list aq;
++                return -EINVAL;
++        }
+-                va_copy(aq, *ap);
++        va_copy(aq, *ap);
+-                while ((k = va_arg(aq, const char *))) {
+-                        char **v;
++        while ((k = va_arg(aq, const char *))) {
++                char **v;
+-                        v = va_arg(aq, char **);
++                v = va_arg(aq, char **);
+-                        if (streq(key, k)) {
+-                                va_end(aq);
+-                                free(*v);
+-                                *v = value;
+-                                return 1;
+-                        }
++                if (streq(key, k)) {
++                        va_end(aq);
++                        free(*v);
++                        *v = value;
++                        return 1;
+                 }
+-
+-                va_end(aq);
+         }
++        va_end(aq);
+         free(value);
+         return 0;
+ }
+@@ -514,26 +518,31 @@ int parse_env_file(
+ static int load_env_file_push(const char *filename, unsigned line,
+                               const char *key, char *value, void *userdata) {
+-        assert(utf8_is_valid(key));
++        char ***m = userdata;
++        char *p;
++        int r;
+-        if (value && !utf8_is_valid(value))
++        if (!utf8_is_valid(key)) {
++                log_error("%s:%u: invalid UTF-8 for key '%s', ignoring.",
++                          filename, line, key);
++                return -EINVAL;
++        }
++
++        if (value && !utf8_is_valid(value)) {
+                 /* FIXME: filter UTF-8 */
+-                log_error("%s:%u: invalid UTF-8 for key %s: '%s', ignoring.",
++                log_error("%s:%u: invalid UTF-8 value for key %s: '%s', ignoring.",
+                           filename, line, key, value);
+-        else {
+-                char ***m = userdata;
+-                char *p;
+-                int r;
++                return -EINVAL;
++        }
+-                p = strjoin(key, "=", strempty(value), NULL);
+-                if (!p)
+-                        return -ENOMEM;
++        p = strjoin(key, "=", strempty(value), NULL);
++        if (!p)
++                return -ENOMEM;
+-                r = strv_push(m, p);
+-                if (r < 0) {
+-                        free(p);
+-                        return r;
+-                }
++        r = strv_push(m, p);
++        if (r < 0) {
++                free(p);
++                return r;
+         }
+         free(value);
diff --git a/debian/patches/core-fix-detection-of-dead-processes.patch b/debian/patches/core-fix-detection-of-dead-processes.patch
new file mode 100644 (file)
index 0000000..8e762be
--- /dev/null
@@ -0,0 +1,86 @@
+From: Yuxuan Shui <yshuiv7@gmail.com>
+Date: Sat, 15 Feb 2014 02:38:50 +0800
+Subject: core: fix detection of dead processes
+
+Commit 5ba6985b moves the UNIT_VTABLE(u)->sigchld_event before systemd
+actually reaps the zombie. Which leads to service_load_pid_file accepting
+zombie as a valid pid.
+
+This fixes timeouts like:
+[ 2746.602243] systemd[1]: chronyd.service stop-sigterm timed out. Killing.
+[ 2836.852545] systemd[1]: chronyd.service still around after SIGKILL. Ignoring.
+[ 2927.102187] systemd[1]: chronyd.service stop-final-sigterm timed out. Killing.
+[ 3017.352560] systemd[1]: chronyd.service still around after final SIGKILL. Entering failed mode.
+---
+ src/core/service.c |  8 ++++++++
+ src/shared/util.c  | 25 +++++++++++++++++++++++++
+ src/shared/util.h  |  1 +
+ 3 files changed, 34 insertions(+)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index 41e5cb5..d9bc021 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -1429,6 +1429,14 @@ static int service_load_pid_file(Service *s, bool may_warn) {
+                 return -ESRCH;
+         }
++        if (get_process_state(pid) == 'Z') {
++                if (may_warn)
++                        log_info_unit(UNIT(s)->id,
++                                      "PID "PID_FMT" read from file %s is a zombie.",
++                                      pid, s->pid_file);
++                return -ESRCH;
++        }
++
+         if (s->main_pid_known) {
+                 if (pid == s->main_pid)
+                         return 0;
+diff --git a/src/shared/util.c b/src/shared/util.c
+index e754747..1329854 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -558,6 +558,31 @@ char *truncate_nl(char *s) {
+         return s;
+ }
++int get_process_state(pid_t pid) {
++        const char *p;
++        char state;
++        int r;
++        _cleanup_free_ char *line = NULL;
++
++        assert(pid >= 0);
++
++        p = procfs_file_alloca(pid, "stat");
++        r = read_one_line_file(p, &line);
++        if (r < 0)
++                return r;
++
++        p = strrchr(line, ')');
++        if (!p)
++                return -EIO;
++
++        p++;
++
++        if (sscanf(p, " %c", &state) != 1)
++                return -EIO;
++
++        return (unsigned char) state;
++}
++
+ int get_process_comm(pid_t pid, char **name) {
+         const char *p;
+diff --git a/src/shared/util.h b/src/shared/util.h
+index bdbdca3..ca38336 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -216,6 +216,7 @@ char *file_in_same_dir(const char *path, const char *filename);
+ int rmdir_parents(const char *path, const char *stop);
++char get_process_state(pid_t pid);
+ int get_process_comm(pid_t pid, char **name);
+ int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line);
+ int get_process_exe(pid_t pid, char **name);
diff --git a/debian/patches/core-fix-invalid-free-in-killall.patch b/debian/patches/core-fix-invalid-free-in-killall.patch
new file mode 100644 (file)
index 0000000..db0a22f
--- /dev/null
@@ -0,0 +1,31 @@
+From: Andreas Henriksson <andreas@fatal.se>
+Date: Fri, 13 Jun 2014 18:48:19 +0200
+Subject: core: fix invalid free() in killall()
+
+static int killall(....) in ./src/core/killall.c tries to get "s"
+initialized by calling get_process_comm(...) which calls
+read_one_line_file(...) which if it fails will mean it is left
+uninitialized.
+It is then used in argument to strna(s) call where it is
+dereferenced(!), in addition to nothing else initializing it before
+the scope it is in finishes.
+
+(cherry picked from commit 3e09eb5c83e56bc0184bd9d9c44f76047464f77c)
+(cherry picked from commit 89655d12976c14a2fc6b6c2b91164b9246898560)
+---
+ src/core/killall.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/killall.c b/src/core/killall.c
+index e395050..967dac0 100644
+--- a/src/core/killall.c
++++ b/src/core/killall.c
+@@ -167,7 +167,7 @@ static int killall(int sig, Set *pids) {
+                         continue;
+                 if (sig == SIGKILL) {
+-                        _cleanup_free_ char *s;
++                        _cleanup_free_ char *s = NULL;
+                         get_process_comm(pid, &s);
+                         log_notice("Sending SIGKILL to PID %lu (%s).", (unsigned long) pid, strna(s));
diff --git a/debian/patches/core-fix-property-changes-in-transient-units.patch b/debian/patches/core-fix-property-changes-in-transient-units.patch
new file mode 100644 (file)
index 0000000..63ef9a7
--- /dev/null
@@ -0,0 +1,90 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 17 Feb 2014 01:58:33 +0100
+Subject: core: fix property changes in transient units
+
+(cherry picked from commit 6d2357247b198314d972932415d65a42f83a9b6e)
+---
+ src/core/dbus-unit.c |  3 ---
+ src/core/unit.c      | 13 ++++++-------
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c
+index 2ea59b2..a185f5c 100644
+--- a/src/core/dbus-unit.c
++++ b/src/core/dbus-unit.c
+@@ -962,9 +962,6 @@ int bus_unit_set_properties(
+         assert(u);
+         assert(iter);
+-        if (u->transient)
+-                mode &= UNIT_RUNTIME;
+-
+         /* We iterate through the array twice. First run we just check
+          * if all passed data is valid, second run actually applies
+          * it. This is to implement transaction-like behaviour without
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 49833d1..8e2a7c4 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2785,7 +2785,6 @@ static int drop_in_file(Unit *u, UnitSetPropertiesMode mode, const char *name, c
+         assert(name);
+         assert(_p);
+         assert(_q);
+-        assert(mode & (UNIT_PERSISTENT|UNIT_RUNTIME));
+         b = xescape(name, "/.");
+         if (!b)
+@@ -2804,7 +2803,7 @@ static int drop_in_file(Unit *u, UnitSetPropertiesMode mode, const char *name, c
+                         return -ENOENT;
+                 p = strjoin(c, "/", u->id, ".d", NULL);
+-        } else if (mode & UNIT_PERSISTENT)
++        } else if (mode == UNIT_PERSISTENT && !u->transient)
+                 p = strjoin("/etc/systemd/system/", u->id, ".d", NULL);
+         else
+                 p = strjoin("/run/systemd/system/", u->id, ".d", NULL);
+@@ -2830,7 +2829,7 @@ int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name, co
+         assert(name);
+         assert(data);
+-        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
++        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
+                 return 0;
+         r = drop_in_file(u, mode, name, &p, &q);
+@@ -2850,7 +2849,7 @@ int unit_write_drop_in_format(Unit *u, UnitSetPropertiesMode mode, const char *n
+         assert(name);
+         assert(format);
+-        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
++        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
+                 return 0;
+         va_start(ap, format);
+@@ -2873,7 +2872,7 @@ int unit_write_drop_in_private(Unit *u, UnitSetPropertiesMode mode, const char *
+         if (!UNIT_VTABLE(u)->private_section)
+                 return -EINVAL;
+-        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
++        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
+                 return 0;
+         ndata = strjoin("[", UNIT_VTABLE(u)->private_section, "]\n", data, NULL);
+@@ -2892,7 +2891,7 @@ int unit_write_drop_in_private_format(Unit *u, UnitSetPropertiesMode mode, const
+         assert(name);
+         assert(format);
+-        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
++        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
+                 return 0;
+         va_start(ap, format);
+@@ -2911,7 +2910,7 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) {
+         assert(u);
+-        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
++        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
+                 return 0;
+         r = drop_in_file(u, mode, name, &p, &q);
diff --git a/debian/patches/core-gc-half-created-stub-units.patch b/debian/patches/core-gc-half-created-stub-units.patch
new file mode 100644 (file)
index 0000000..7a92125
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 24 Feb 2014 03:20:54 +0100
+Subject: core: gc half-created stub units
+
+(cherry picked from commit c35fa384d00dc5dc7d9f339113b015a3f8a5cf79)
+---
+ src/core/unit.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 8e2a7c4..de34ddc 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -249,9 +249,6 @@ int unit_set_description(Unit *u, const char *description) {
+ bool unit_check_gc(Unit *u) {
+         assert(u);
+-        if (u->load_state == UNIT_STUB)
+-                return true;
+-
+         if (UNIT_VTABLE(u)->no_gc)
+                 return true;
diff --git a/debian/patches/core-introduce-new-stop-protocol-for-unit-scopes.patch b/debian/patches/core-introduce-new-stop-protocol-for-unit-scopes.patch
new file mode 100644 (file)
index 0000000..c9270aa
--- /dev/null
@@ -0,0 +1,264 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Thu, 27 Feb 2014 17:56:16 +0100
+Subject: core: introduce new stop protocol for unit scopes
+
+By specifiy a Controller property when creating the scope a client can
+specify a bus name that will be notified with a RequestStop bus signal
+when the scope has been asked to shut down, instead of sending SIGTERM
+to the scope processes themselves.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1032695
+
+Based-on: 2d4a39e759c4ab846ad8a546abeddd40bc8d736e
+---
+ src/core/dbus-scope.c    | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
+ src/core/dbus-scope.h    |  2 ++
+ src/core/scope.c         | 20 +++++++++++++++---
+ src/core/scope.h         |  2 ++
+ src/run/run.c            |  8 +++++++
+ src/shared/dbus-common.c | 42 ++++++++++++++++++++++++++++++++++++
+ src/shared/dbus-common.h |  2 ++
+ 7 files changed, 128 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
+index 783a969..b576f76 100644
+--- a/src/core/dbus-scope.c
++++ b/src/core/dbus-scope.c
+@@ -31,10 +31,12 @@
+ #define BUS_SCOPE_INTERFACE                                             \
+         " <interface name=\"org.freedesktop.systemd1.Scope\">\n"        \
+         BUS_UNIT_CGROUP_INTERFACE                                       \
++        "  <property name=\"Controller\" type=\"s\" access=\"read\"/>\n"\
+         "  <property name=\"TimeoutStopUSec\" type=\"t\" access=\"read\"/>\n" \
+         BUS_KILL_CONTEXT_INTERFACE                                      \
+         BUS_CGROUP_CONTEXT_INTERFACE                                    \
+         "  <property name=\"Result\" type=\"s\" access=\"read\"/>\n"    \
++        "  <signal name=\"RequestStop\"/>\n"                            \
+         " </interface>\n"
+ #define INTROSPECTION                                                   \
+@@ -56,6 +58,7 @@ const char bus_scope_interface[] _introspect_("Scope") = BUS_SCOPE_INTERFACE;
+ static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_scope_append_scope_result, scope_result, ScopeResult);
+ static const BusProperty bus_scope_properties[] = {
++        { "Controller",             bus_property_append_string,    "s", offsetof(Scope, controller)        },
+         { "TimeoutStopUSec",        bus_property_append_usec,      "t", offsetof(Scope, timeout_stop_usec) },
+         { "Result",                 bus_scope_append_scope_result, "s", offsetof(Scope, result)            },
+         {}
+@@ -127,6 +130,31 @@ static int bus_scope_set_transient_property(
+                 return 1;
++        } else if (streq(name, "Controller")) {
++                const char *controller;
++
++                if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING)
++                        return -EINVAL;
++
++                dbus_message_iter_get_basic(i, &controller);
++
++                if (!isempty(controller) && !bus_service_name_is_valid(controller))
++                        return -EINVAL;
++
++                if (mode != UNIT_CHECK) {
++                        char *c = NULL;
++
++                        if (!isempty(controller)) {
++                                c = strdup(controller);
++                                if (!c)
++                                        return -ENOMEM;
++                        }
++
++                        free(s->controller);
++                        s->controller = c;
++                }
++
++                return 1;
+         } else if (streq(name, "TimeoutStopUSec")) {
+                 if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_UINT64)
+@@ -187,3 +215,30 @@ int bus_scope_commit_properties(Unit *u) {
+         unit_realize_cgroup(u);
+         return 0;
+ }
++
++int bus_scope_send_request_stop(Scope *s) {
++        _cleanup_dbus_message_unref_ DBusMessage *m = NULL;
++        _cleanup_free_ char *p = NULL;
++        int r;
++
++        assert(s);
++
++        if (!s->controller)
++                return 0;
++
++        p = unit_dbus_path(UNIT(s));
++        if (!p)
++                return -ENOMEM;
++
++        m = dbus_message_new_signal(p,
++                                    "org.freedesktop.systemd1.Scope",
++                                    "RequestStop");
++        if (!m)
++                return 0;
++
++        r = dbus_message_set_destination(m, s->controller);
++        if (!r)
++                return 0;
++
++        return dbus_connection_send(UNIT(s)->manager->api_bus, m, NULL);
++}
+diff --git a/src/core/dbus-scope.h b/src/core/dbus-scope.h
+index e6836f1..34720f2 100644
+--- a/src/core/dbus-scope.h
++++ b/src/core/dbus-scope.h
+@@ -30,4 +30,6 @@ DBusHandlerResult bus_scope_message_handler(Unit *u, DBusConnection *c, DBusMess
+ int bus_scope_set_property(Unit *u, const char *name, DBusMessageIter *i, UnitSetPropertiesMode mode, DBusError *error);
+ int bus_scope_commit_properties(Unit *u);
++int bus_scope_send_request_stop(Scope *s);
++
+ extern const char bus_scope_interface[];
+diff --git a/src/core/scope.c b/src/core/scope.c
+index 41da3b9..e75fc2b 100644
+--- a/src/core/scope.c
++++ b/src/core/scope.c
+@@ -64,6 +64,9 @@ static void scope_done(Unit *u) {
+         cgroup_context_done(&s->cgroup_context);
++        free(s->controller);
++        s->controller = NULL;
++
+         set_free(s->pids);
+         s->pids = NULL;
+@@ -198,6 +201,7 @@ static void scope_enter_dead(Scope *s, ScopeResult f) {
+ }
+ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
++        bool skip_signal = false;
+         int r;
+         assert(s);
+@@ -205,13 +209,23 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
+         if (f != SCOPE_SUCCESS)
+                 s->result = f;
+-        r = unit_kill_context(
++        /* If we have a controller set let's ask the controller nicely
++         * to terminate the scope, instead of us going directly into
++         * SIGTERM beserk mode */
++        if (state == SCOPE_STOP_SIGTERM)
++                skip_signal = bus_scope_send_request_stop(s) > 0;
++
++        if (!skip_signal) {
++                r = unit_kill_context(
+                         UNIT(s),
+                         &s->kill_context,
+                         state != SCOPE_STOP_SIGTERM,
+                         -1, -1, false);
+-        if (r < 0)
+-                goto fail;
++
++                if (r < 0)
++                        goto fail;
++        } else
++                r = 1;
+         if (r > 0) {
+                 if (s->timeout_stop_usec > 0) {
+diff --git a/src/core/scope.h b/src/core/scope.h
+index 2a3dcb7..b4bafa7 100644
+--- a/src/core/scope.h
++++ b/src/core/scope.h
+@@ -55,6 +55,8 @@ struct Scope {
+         usec_t timeout_stop_usec;
++        char *controller;
++
+         Set *pids;
+         Watch timer_watch;
+diff --git a/src/run/run.c b/src/run/run.c
+index a6abead..93e3f88 100644
+--- a/src/run/run.c
++++ b/src/run/run.c
+@@ -315,6 +315,14 @@ static int start_transient_scope(
+         if (r < 0)
+                 return r;
++        {
++                const char *unique_id;
++                sd_bus_get_unique_name(bus, &unique_id);
++                r = sd_bus_message_append(m, "(sv)", "Controller", "s", unique_id);
++                if (r < 0)
++                        return r;
++        }
++
+         r = sd_bus_message_append(m, "(sv)", "PIDs", "au", 1, (uint32_t) getpid());
+         if (r < 0)
+                 return r;
+diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c
+index 3ba2d87..8a68708 100644
+--- a/src/shared/dbus-common.c
++++ b/src/shared/dbus-common.c
+@@ -1428,3 +1428,45 @@ const char *bus_message_get_sender_with_fallback(DBusMessage *m) {
+         return ":no-sender";
+ }
++
++bool bus_service_name_is_valid(const char *p) {
++        const char *q;
++        bool dot, found_dot = false, unique;
++
++        if (isempty(p))
++                return false;
++
++        unique = p[0] == ':';
++
++        for (dot = true, q = unique ? p+1 : p; *q; q++)
++                if (*q == '.') {
++                        if (dot)
++                                return false;
++
++                        found_dot = dot = true;
++                } else {
++                        bool good;
++
++                        good =
++                                (*q >= 'a' && *q <= 'z') ||
++                                (*q >= 'A' && *q <= 'Z') ||
++                                ((!dot || unique) && *q >= '0' && *q <= '9') ||
++                                *q == '_' || *q == '-';
++
++                        if (!good)
++                                return false;
++
++                        dot = false;
++                }
++
++        if (q - p > 255)
++                return false;
++
++        if (dot)
++                return false;
++
++        if (!found_dot)
++                return false;
++
++        return true;
++}
+diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h
+index 9752f08..8d01d14 100644
+--- a/src/shared/dbus-common.h
++++ b/src/shared/dbus-common.h
+@@ -242,5 +242,7 @@ const char *bus_message_get_sender_with_fallback(DBusMessage *m);
+ void bus_message_unrefp(DBusMessage **reply);
++bool bus_service_name_is_valid(const char *p);
++
+ #define _cleanup_dbus_message_unref_ __attribute__((cleanup(bus_message_unrefp)))
+ #define _cleanup_dbus_error_free_ __attribute__((cleanup(dbus_error_free)))
diff --git a/debian/patches/core-let-selinux_setup-load-policy-more-than-once.patch b/debian/patches/core-let-selinux_setup-load-policy-more-than-once.patch
new file mode 100644 (file)
index 0000000..02cb206
--- /dev/null
@@ -0,0 +1,81 @@
+From: Will Woods <wwoods@redhat.com>
+Date: Fri, 25 Apr 2014 18:26:34 -0400
+Subject: core: let selinux_setup() load policy more than once
+
+When you switch-root into a new root that has SELinux policy, you're
+supposed to to run selinux_init_load_policy() to set up SELinux and load
+policy. Normally this gets handled by selinux_setup().
+
+But if SELinux was already initialized, selinux_setup() skips loading
+policy and returns 0. So if you load policy normally, and then you
+switch-root to a new root that has new policy, selinux_setup() never
+loads the new policy. What gives?
+
+As far as I can tell, this check is an artifact of how selinux_setup()
+worked when it was first written (see commit c4dcdb9 / systemd v12):
+
+  * when systemd starts, run selinux_setup()
+  * if selinux_setup() loads policy OK, restart systemd
+
+So the "if policy already loaded, skip load and return 0" check was
+there to prevent an infinite re-exec loop.
+
+Modern systemd only calls selinux_setup() on initial load and after
+switch-root, and selinux_setup() no longer restarts systemd, so we don't
+need that check to guard against the infinite loop anymore.
+
+So: this patch removes the "return 0", thus allowing selinux_setup() to
+actually perform SELinux setup after switch-root.
+
+We still want to check to see if SELinux is initialized, because if
+selinux_init_load_policy() fails *but* SELinux is initialized that means
+we still have (old) policy active. So we don't need to halt if
+enforce=1.
+
+(cherry picked from commit 68d3acaccbd26ecfbc5881fea75968fa4abcc565)
+(cherry picked from commit f5ad306cb9ea1dea38a934b6b07901de1257a3fa)
+---
+ src/core/selinux-setup.c | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c
+index 6d8bc89..b419a27 100644
+--- a/src/core/selinux-setup.c
++++ b/src/core/selinux-setup.c
+@@ -51,6 +51,7 @@ int selinux_setup(bool *loaded_policy) {
+         security_context_t con;
+         int r;
+         union selinux_callback cb;
++        bool initialized = false;
+         assert(loaded_policy);
+@@ -68,13 +69,8 @@ int selinux_setup(bool *loaded_policy) {
+         /* Already initialized by somebody else? */
+         r = getcon_raw(&con);
+         if (r == 0) {
+-                bool initialized;
+-
+                 initialized = !streq(con, "kernel");
+                 freecon(con);
+-
+-                if (initialized)
+-                        return 0;
+         }
+         /* Make sure we have no fds open while loading the policy and
+@@ -116,8 +112,12 @@ int selinux_setup(bool *loaded_policy) {
+                 log_open();
+                 if (enforce > 0) {
+-                        log_error("Failed to load SELinux policy. Freezing.");
+-                        return -EIO;
++                        if (!initialized) {
++                                log_error("Failed to load SELinux policy. Freezing.");
++                                return -EIO;
++                        }
++
++                        log_warning("Failed to load new SELinux policy. Continuing with old policy.");
+                 } else
+                         log_debug("Unable to load SELinux policy. Ignoring.");
+         }
diff --git a/debian/patches/core-make-StopWhenUnneeded-work-in-conjunction-with-.patch b/debian/patches/core-make-StopWhenUnneeded-work-in-conjunction-with-.patch
new file mode 100644 (file)
index 0000000..26929c6
--- /dev/null
@@ -0,0 +1,41 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 13 Feb 2014 02:12:27 +0100
+Subject: core: make StopWhenUnneeded work in conjunction with units that fail
+ during their start job
+
+https://bugzilla.redhat.com/show_bug.cgi?id=997031
+(cherry picked from commit b33918c210a9b7a651e4e91cf7429967f1df6c25)
+---
+ src/core/unit.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 6c2c4a0..49833d1 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1453,7 +1453,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
+          * sucessfully, since there's no change of state in that case. Which is
+          * why it is handled in service_set_state() */
+         if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) {
+-                ExecContext *ec = unit_get_exec_context(u);
++                ExecContext *ec;
++
++                ec = unit_get_exec_context(u);
+                 if (ec && exec_context_may_touch_console(ec)) {
+                         if (UNIT_IS_INACTIVE_OR_FAILED(ns)) {
+                                 m->n_on_console --;
+@@ -1549,12 +1551,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
+                 }
+                 /* stop unneeded units regardless if going down was expected or not */
+-                if (UNIT_IS_ACTIVE_OR_ACTIVATING(os) && UNIT_IS_INACTIVE_OR_DEACTIVATING(ns))
++                if (UNIT_IS_INACTIVE_OR_DEACTIVATING(ns))
+                         check_unneeded_dependencies(u);
+                 if (ns != os && ns == UNIT_FAILED) {
+-                        log_notice_unit(u->id,
+-                                        "Unit %s entered failed state.", u->id);
++                        log_notice_unit(u->id, "Unit %s entered failed state.", u->id);
+                         unit_start_on_failure(u);
+                 }
+         }
diff --git a/debian/patches/core-make-sure-to-serialize-jobs-for-all-units.patch b/debian/patches/core-make-sure-to-serialize-jobs-for-all-units.patch
new file mode 100644 (file)
index 0000000..1ec122f
--- /dev/null
@@ -0,0 +1,79 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 16 May 2014 01:15:03 +0200
+Subject: core: make sure to serialize jobs for all units
+
+Previously we wouldn't serialize jobs for units that themselves have
+nothing to serialize.
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-May/019051.html
+(cherry picked from commit 9bdb98c59451ed090f8d35d470a54710f389ce71)
+(cherry picked from commit 75ee3c9da1441e0f67d502e56e9167f0ef23201b)
+
+Conflicts:
+       src/core/unit.c
+---
+ src/core/manager.c |  3 ---
+ src/core/unit.c    | 22 ++++++++++------------
+ 2 files changed, 10 insertions(+), 15 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 1e7dc38..e75550b 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -2166,9 +2166,6 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) {
+                 if (u->id != t)
+                         continue;
+-                if (!unit_can_serialize(u))
+-                        continue;
+-
+                 /* Start marker */
+                 fputs(u->id, f);
+                 fputc('\n', f);
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 29782aa..5226963 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2293,12 +2293,11 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
+         assert(f);
+         assert(fds);
+-        if (!unit_can_serialize(u))
+-                return 0;
+-
+-        r = UNIT_VTABLE(u)->serialize(u, f, fds);
+-        if (r < 0)
+-                return r;
++        if (unit_can_serialize(u)) {
++                r = UNIT_VTABLE(u)->serialize(u, f, fds);
++                if (r < 0)
++                        return r;
++        }
+         dual_timestamp_serialize(f, "inactive-exit-timestamp", &u->inactive_exit_timestamp);
+         dual_timestamp_serialize(f, "active-enter-timestamp", &u->active_enter_timestamp);
+@@ -2365,9 +2364,6 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
+         assert(f);
+         assert(fds);
+-        if (!unit_can_serialize(u))
+-                return 0;
+-
+         for (;;) {
+                 char line[LINE_MAX], *l, *v;
+                 size_t k;
+@@ -2480,9 +2476,11 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
+                         continue;
+                 }
+-                r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds);
+-                if (r < 0)
+-                        return r;
++                if (unit_can_serialize(u)) {
++                        r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds);
++                        if (r < 0)
++                                return r;
++                }
+         }
+ }
diff --git a/debian/patches/core-manager-print-info-about-interesting-signals.patch b/debian/patches/core-manager-print-info-about-interesting-signals.patch
new file mode 100644 (file)
index 0000000..6394925
--- /dev/null
@@ -0,0 +1,46 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 27 Dec 2013 22:12:38 -0500
+Subject: core/manager: print info about interesting signals
+
+Information about signals which are not routinely received by systemd
+are printed at info level. This should make it easier to see what is
+happening in the system.
+
+(cherry picked from commit a9244623f785f504f799407b0228dea9655e24cb)
+---
+ src/core/manager.c | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index a34a3c6..69ad4b5 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -1435,16 +1435,22 @@ static int manager_process_signal_fd(Manager *m) {
+                 }
+                 if (sfsi.ssi_pid > 0) {
+-                        char *p = NULL;
++                        _cleanup_free_ char *p = NULL;
+                         get_process_comm(sfsi.ssi_pid, &p);
+-                        log_debug("Received SIG%s from PID %lu (%s).",
+-                                  signal_to_string(sfsi.ssi_signo),
+-                                  (unsigned long) sfsi.ssi_pid, strna(p));
+-                        free(p);
++                        log_full(sfsi.ssi_signo == SIGCHLD ||
++                                 (sfsi.ssi_signo == SIGTERM && m->running_as == SYSTEMD_USER)
++                                 ? LOG_DEBUG : LOG_INFO,
++                                 "Received SIG%s from PID %lu (%s).",
++                                 signal_to_string(sfsi.ssi_signo),
++                                 (unsigned long) sfsi.ssi_pid, strna(p));
+                 } else
+-                        log_debug("Received SIG%s.", signal_to_string(sfsi.ssi_signo));
++                        log_full(sfsi.ssi_signo == SIGCHLD ||
++                                 (sfsi.ssi_signo == SIGTERM && m->running_as == SYSTEMD_USER)
++                                 ? LOG_DEBUG : LOG_INFO,
++                                 "Received SIG%s.",
++                                 signal_to_string(sfsi.ssi_signo));
+                 switch (sfsi.ssi_signo) {
diff --git a/debian/patches/core-manager-remove-infinite-loop.patch b/debian/patches/core-manager-remove-infinite-loop.patch
new file mode 100644 (file)
index 0000000..c1d78a6
--- /dev/null
@@ -0,0 +1,25 @@
+From: Shawn Landden <shawn@churchofgit.com>
+Date: Tue, 10 Dec 2013 09:28:26 -0800
+Subject: core/manager: remove infinite loop
+
+(cherry picked from commit 145b1f799ff6712f333cef92c44218254a1320c5)
+---
+ src/core/manager.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 944c196..a34a3c6 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -2285,10 +2285,8 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
+         }
+ finish:
+-        if (ferror(f)) {
++        if (ferror(f))
+                 r = -EIO;
+-                goto finish;
+-        }
+         assert(m->n_reloading > 0);
+         m->n_reloading --;
diff --git a/debian/patches/core-more-exact-test-on-the-procfs-special-string-de.patch b/debian/patches/core-more-exact-test-on-the-procfs-special-string-de.patch
new file mode 100644 (file)
index 0000000..aaa7b0a
--- /dev/null
@@ -0,0 +1,25 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Sun, 16 Feb 2014 13:58:18 +0100
+Subject: core: more exact test on the procfs special string "(deleted)"
+
+In other parts of systemd, the code checks for " (deleted)",
+but in one instance, it did not (yet). Make it do the same.
+
+(cherry picked from commit a87f0f726ca6dc9fde11eea6591a244e77d2d182)
+---
+ src/core/umount.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/umount.c b/src/core/umount.c
+index 99dbe27..fbd7e1c 100644
+--- a/src/core/umount.c
++++ b/src/core/umount.c
+@@ -170,7 +170,7 @@ static int swap_list_get(MountPoint **head) {
+                         continue;
+                 }
+-                if (endswith(dev, "(deleted)")) {
++                if (endswith(dev, " (deleted)")) {
+                         free(dev);
+                         continue;
+                 }
diff --git a/debian/patches/core-print-debug-instead-of-error-message.patch b/debian/patches/core-print-debug-instead-of-error-message.patch
new file mode 100644 (file)
index 0000000..c3c4144
--- /dev/null
@@ -0,0 +1,27 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 14 May 2014 15:13:43 +0200
+Subject: core: print debug instead of error message
+
+In case that session scope is in some other state than SCOPE_RUNNING or
+SCOPE_ABANDONED we will not print error message. It might be the case
+that scope is in other state because systemd realized that scope is
+empty before dispatching dbus call from pam hook. Or system is going
+down and stop job is runnig for the scope and changed scope state to
+SCOPE_STOP_SIGTERM or SCOPE_STOP_SIGKILL.
+---
+ src/core/dbus-scope.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
+index 58dd9ff..71d6921 100644
+--- a/src/core/dbus-scope.c
++++ b/src/core/dbus-scope.c
+@@ -76,7 +76,7 @@ DBusHandlerResult bus_scope_message_handler(Unit *u, DBusConnection *c, DBusMess
+                 r = scope_abandon(s);
+                 if (r < 0)
+-                        log_error("Failed to mark scope %s as abandoned : %s", UNIT(s)->id, strerror(-r));
++                        log_debug("Failed to mark scope %s as abandoned : Scope is not running", UNIT(s)->id);
+                 reply = dbus_message_new_method_return(message);
+                 if (!reply)
diff --git a/debian/patches/core-reindent-selinux-ima-smack-setup.c.patch b/debian/patches/core-reindent-selinux-ima-smack-setup.c.patch
new file mode 100644 (file)
index 0000000..115544a
--- /dev/null
@@ -0,0 +1,182 @@
+From: Will Woods <wwoods@redhat.com>
+Date: Fri, 25 Apr 2014 18:26:33 -0400
+Subject: core: reindent {selinux, ima, smack}-setup.c
+
+7-space indentation is just too weird to leave alone.
+Make it 8 spaces, as per CODING_STYLE. No other changes.
+
+(cherry picked from commit 4ab72d6fb499c2b4d8baced9fa94a8bbfa5a4b3d)
+
+Conflicts:
+       src/core/ima-setup.c
+
+[zj: just selinux-setup.c, as needed for futher commits.]
+
+(cherry picked from commit 31b1d7a4f7358cdbc632e4cd2b61bef8fa34d281)
+---
+ src/core/selinux-setup.c | 152 +++++++++++++++++++++++------------------------
+ 1 file changed, 76 insertions(+), 76 deletions(-)
+
+diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c
+index 9a5d6b2..6d8bc89 100644
+--- a/src/core/selinux-setup.c
++++ b/src/core/selinux-setup.c
+@@ -46,82 +46,82 @@ static int null_log(int type, const char *fmt, ...) {
+ int selinux_setup(bool *loaded_policy) {
+ #ifdef HAVE_SELINUX
+-       int enforce = 0;
+-       usec_t before_load, after_load;
+-       security_context_t con;
+-       int r;
+-       union selinux_callback cb;
+-
+-       assert(loaded_policy);
+-
+-       /* Turn off all of SELinux' own logging, we want to do that */
+-       cb.func_log = null_log;
+-       selinux_set_callback(SELINUX_CB_LOG, cb);
+-
+-       /* Don't load policy in the initrd if we don't appear to have
+-        * it.  For the real root, we check below if we've already
+-        * loaded policy, and return gracefully.
+-        */
+-       if (in_initrd() && access(selinux_path(), F_OK) < 0)
+-               return 0;
+-
+-       /* Already initialized by somebody else? */
+-       r = getcon_raw(&con);
+-       if (r == 0) {
+-               bool initialized;
+-
+-               initialized = !streq(con, "kernel");
+-               freecon(con);
+-
+-               if (initialized)
+-                       return 0;
+-       }
+-
+-       /* Make sure we have no fds open while loading the policy and
+-        * transitioning */
+-       log_close();
+-
+-       /* Now load the policy */
+-       before_load = now(CLOCK_MONOTONIC);
+-       r = selinux_init_load_policy(&enforce);
+-       if (r == 0) {
+-               char timespan[FORMAT_TIMESPAN_MAX];
+-               char *label;
+-
+-               retest_selinux();
+-
+-               /* Transition to the new context */
+-               r = label_get_create_label_from_exe(SYSTEMD_BINARY_PATH, &label);
+-               if (r < 0 || label == NULL) {
+-                       log_open();
+-                       log_error("Failed to compute init label, ignoring.");
+-               } else {
+-                       r = setcon(label);
+-
+-                       log_open();
+-                       if (r < 0)
+-                               log_error("Failed to transition into init label '%s', ignoring.", label);
+-
+-                       label_free(label);
+-               }
+-
+-               after_load = now(CLOCK_MONOTONIC);
+-
+-               log_info("Successfully loaded SELinux policy in %s.",
+-                        format_timespan(timespan, sizeof(timespan), after_load - before_load, 0));
+-
+-               *loaded_policy = true;
+-
+-       } else {
+-               log_open();
+-
+-               if (enforce > 0) {
+-                       log_error("Failed to load SELinux policy. Freezing.");
+-                       return -EIO;
+-               } else
+-                       log_debug("Unable to load SELinux policy. Ignoring.");
+-       }
++        int enforce = 0;
++        usec_t before_load, after_load;
++        security_context_t con;
++        int r;
++        union selinux_callback cb;
++
++        assert(loaded_policy);
++
++        /* Turn off all of SELinux' own logging, we want to do that */
++        cb.func_log = null_log;
++        selinux_set_callback(SELINUX_CB_LOG, cb);
++
++        /* Don't load policy in the initrd if we don't appear to have
++         * it.  For the real root, we check below if we've already
++         * loaded policy, and return gracefully.
++         */
++        if (in_initrd() && access(selinux_path(), F_OK) < 0)
++                return 0;
++
++        /* Already initialized by somebody else? */
++        r = getcon_raw(&con);
++        if (r == 0) {
++                bool initialized;
++
++                initialized = !streq(con, "kernel");
++                freecon(con);
++
++                if (initialized)
++                        return 0;
++        }
++
++        /* Make sure we have no fds open while loading the policy and
++         * transitioning */
++        log_close();
++
++        /* Now load the policy */
++        before_load = now(CLOCK_MONOTONIC);
++        r = selinux_init_load_policy(&enforce);
++        if (r == 0) {
++                char timespan[FORMAT_TIMESPAN_MAX];
++                char *label;
++
++                retest_selinux();
++
++                /* Transition to the new context */
++                r = label_get_create_label_from_exe(SYSTEMD_BINARY_PATH, &label);
++                if (r < 0 || label == NULL) {
++                        log_open();
++                        log_error("Failed to compute init label, ignoring.");
++                } else {
++                        r = setcon(label);
++
++                        log_open();
++                        if (r < 0)
++                                log_error("Failed to transition into init label '%s', ignoring.", label);
++
++                        label_free(label);
++                }
++
++                after_load = now(CLOCK_MONOTONIC);
++
++                log_info("Successfully loaded SELinux policy in %s.",
++                         format_timespan(timespan, sizeof(timespan), after_load - before_load, 0));
++
++                *loaded_policy = true;
++
++        } else {
++                log_open();
++
++                if (enforce > 0) {
++                        log_error("Failed to load SELinux policy. Freezing.");
++                        return -EIO;
++                } else
++                        log_debug("Unable to load SELinux policy. Ignoring.");
++        }
+ #endif
+-       return 0;
++        return 0;
+ }
diff --git a/debian/patches/core-service-check-if-mainpid-matches-only-if-it-is-.patch b/debian/patches/core-service-check-if-mainpid-matches-only-if-it-is-.patch
new file mode 100644 (file)
index 0000000..6723330
--- /dev/null
@@ -0,0 +1,26 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 30 Dec 2013 11:21:56 -0500
+Subject: core/service: check if mainpid matches only if it is set
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1047304
+(cherry picked from commit da13d4d20f8ca12e86863abbae5ed47bca936828)
+
+Conflicts:
+       src/core/service.c
+---
+ src/core/service.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index 62ae8f0..f0acda1 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -3400,7 +3400,7 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
+                 return;
+         }
+-        if (s->notify_access == NOTIFY_MAIN && pid != s->main_pid) {
++        if (s->notify_access == NOTIFY_MAIN && s->main_pid != 0 && pid != s->main_pid) {
+                 log_warning_unit(u->id,
+                                  "%s: Got notification message from PID %lu, but reception only permitted for PID %lu",
+                                  u->id, (unsigned long) pid, (unsigned long) s->main_pid);
diff --git a/debian/patches/core-socket-fix-SO_REUSEPORT.patch b/debian/patches/core-socket-fix-SO_REUSEPORT.patch
new file mode 100644 (file)
index 0000000..8ba05cb
--- /dev/null
@@ -0,0 +1,34 @@
+From: Shawn Landden <shawn@churchofgit.com>
+Date: Sat, 16 Nov 2013 13:18:13 -0800
+Subject: core/socket: fix SO_REUSEPORT
+
+---
+ src/core/load-fragment-gperf.gperf.m4 | 1 +
+ src/core/socket.c                     | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
+index 31fb7bc..d65bcc1 100644
+--- a/src/core/load-fragment-gperf.gperf.m4
++++ b/src/core/load-fragment-gperf.gperf.m4
+@@ -211,6 +211,7 @@ Socket.Broadcast,                config_parse_bool,                  0,
+ Socket.PassCredentials,          config_parse_bool,                  0,                             offsetof(Socket, pass_cred)
+ Socket.PassSecurity,             config_parse_bool,                  0,                             offsetof(Socket, pass_sec)
+ Socket.TCPCongestion,            config_parse_string,                0,                             offsetof(Socket, tcp_congestion)
++Socket.ReusePort,                config_parse_bool,                  0,                             offsetof(Socket, reuseport)
+ Socket.MessageQueueMaxMessages,  config_parse_long,                  0,                             offsetof(Socket, mq_maxmsg)
+ Socket.MessageQueueMessageSize,  config_parse_long,                  0,                             offsetof(Socket, mq_msgsize)
+ Socket.Service,                  config_parse_socket_service,        0,                             0
+diff --git a/src/core/socket.c b/src/core/socket.c
+index d368f7e..e673f38 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -770,7 +770,7 @@ static void socket_apply_socket_options(Socket *s, int fd) {
+         if (s->reuseport) {
+                 int b = s->reuseport;
+-                if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)))
++                if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)) < 0)
+                         log_warning_unit(UNIT(s)->id, "SO_REUSEPORT failed: %m");
+         }
diff --git a/debian/patches/core-sysvcompat-network-should-be-equivalent-to-netw.patch b/debian/patches/core-sysvcompat-network-should-be-equivalent-to-netw.patch
new file mode 100644 (file)
index 0000000..fafdefb
--- /dev/null
@@ -0,0 +1,53 @@
+From: Tom Gundersen <teg@jklm.no>
+Date: Mon, 12 May 2014 21:26:54 +0200
+Subject: core: sysvcompat - $network should be equivalent to network-online,
+ rather than network target
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Most likely the  facility needed is actual connectivity, rather than whether or not the
+network managment daemon is running.
+
+We also need to explicitly pull in the network-online.target, as it is not active by
+default.
+
+This means {systemd-networkd,NetworkManager}-wait-online.service, can be enabled by default
+as part of network-online.target, and only delay boot when some service actively pulls it in.
+
+See: <https://bugzilla.gnome.org/show_bug.cgi?id=728965>
+
+Cc: Pavel Šimerda <psimerda@redhat.com>
+Cc: Michal Sekletar <msekleta@redhat.com>
+(cherry picked from commit 0404c609f399b2092a3de52eef9d75b0dc12e94c)
+(cherry picked from commit 81d4159e6eadb34c25a5643ad95730da2f6f2d69)
+---
+ src/core/service.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index c8dbbef..3bda9a3 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -359,7 +359,7 @@ static int sysv_translate_facility(const char *name, const char *filename, char
+         static const char * const table[] = {
+                 /* LSB defined facilities */
+                 "local_fs",             NULL,
+-                "network",              SPECIAL_NETWORK_TARGET,
++                "network",              SPECIAL_NETWORK_ONLINE_TARGET,
+                 "named",                SPECIAL_NSS_LOOKUP_TARGET,
+                 "portmap",              SPECIAL_RPCBIND_TARGET,
+                 "remote_fs",            SPECIAL_REMOTE_FS_TARGET,
+@@ -828,7 +828,11 @@ static int service_load_sysv_path(Service *s, const char *path) {
+                                         if (r == 0)
+                                                 continue;
+-                                        r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true);
++                                        if (streq(m, SPECIAL_NETWORK_ONLINE_TARGET) && !startswith_no_case(t, "X-Start-Before:"))
++                                                /* the network-online target is special, as it needs to be actively pulled in */
++                                                r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_WANTS, m, NULL, true);
++                                        else
++                                                r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true);
+                                         if (r < 0)
+                                                 log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s",
diff --git a/debian/patches/core-unify-the-way-we-denote-serialization-attribute.patch b/debian/patches/core-unify-the-way-we-denote-serialization-attribute.patch
new file mode 100644 (file)
index 0000000..697b28c
--- /dev/null
@@ -0,0 +1,36 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 9 Oct 2013 00:13:55 +0200
+Subject: core: unify the way we denote serialization attributes
+
+---
+ src/core/service.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index 98b1599..96ed2d3 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -2652,7 +2652,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
+                 unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir);
+         if (s->forbid_restart)
+-                unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart));
++                unit_serialize_item(u, f, "forbid-restart", yes_no(s->forbid_restart));
+         return 0;
+ }
+@@ -2790,12 +2790,12 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
+                         return log_oom();
+                 s->exec_context.var_tmp_dir = t;
+-        } else if (streq(key, "forbid_restart")) {
++        } else if (streq(key, "forbid-restart")) {
+                 int b;
+                 b = parse_boolean(value);
+                 if (b < 0)
+-                        log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value);
++                        log_debug_unit(u->id, "Failed to parse forbid-restart value %s", value);
+                 else
+                         s->forbid_restart = b;
+         } else
diff --git a/debian/patches/core-watch-SIGCHLD-more-closely-to-track-processes-o.patch b/debian/patches/core-watch-SIGCHLD-more-closely-to-track-processes-o.patch
new file mode 100644 (file)
index 0000000..a73ef1f
--- /dev/null
@@ -0,0 +1,715 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Thu, 27 Feb 2014 18:16:19 +0100
+Subject: core: watch SIGCHLD more closely to track processes of units with no
+ reliable cgroup empty notifier
+
+When a process dies that we can associate with a specific unit, start
+watching all other processes of that unit, so that we can associate
+those processes with the unit too.
+
+Also, for service units start doing this as soon as we get the first
+SIGCHLD for either control or main process, so that we can follow the
+processes of the service from one to the other, as long as process that
+remain are processes of the ones we watched that died and got reassigned
+to us as parent.
+
+Similar, for scope units start doing this as soon as the scope
+controller abandons the unit, and thus management entirely reverts to
+systemd. To abandon a unit introduce a new Abandon() scope unit method
+call.
+
+Based-on: a911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3
+---
+ src/core/dbus-scope.c |  36 +++++++++----
+ src/core/manager.c    |   2 +-
+ src/core/scope.c      |  87 ++++++++++++++++++++++---------
+ src/core/scope.h      |   5 +-
+ src/core/service.c    | 140 ++++++++++++++++++++++++++++++--------------------
+ src/core/unit.c       | 112 +++++++++++++++++++++++++++++++++++++++-
+ src/core/unit.h       |   9 ++++
+ 7 files changed, 298 insertions(+), 93 deletions(-)
+
+diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
+index b576f76..58dd9ff 100644
+--- a/src/core/dbus-scope.c
++++ b/src/core/dbus-scope.c
+@@ -30,6 +30,7 @@
+ #define BUS_SCOPE_INTERFACE                                             \
+         " <interface name=\"org.freedesktop.systemd1.Scope\">\n"        \
++        "  <method name=\"Abandon\"/>\n"                                \
+         BUS_UNIT_CGROUP_INTERFACE                                       \
+         "  <property name=\"Controller\" type=\"s\" access=\"read\"/>\n"\
+         "  <property name=\"TimeoutStopUSec\" type=\"t\" access=\"read\"/>\n" \
+@@ -66,19 +67,40 @@ static const BusProperty bus_scope_properties[] = {
+ DBusHandlerResult bus_scope_message_handler(Unit *u, DBusConnection *c, DBusMessage *message) {
+         Scope *s = SCOPE(u);
++        _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
+-        const BusBoundProperties bps[] = {
++        SELINUX_UNIT_ACCESS_CHECK(u, c, message, "status");
++
++        if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Scope", "Abandon")) {
++                int r;
++
++                r = scope_abandon(s);
++                if (r < 0)
++                        log_error("Failed to mark scope %s as abandoned : %s", UNIT(s)->id, strerror(-r));
++
++                reply = dbus_message_new_method_return(message);
++                if (!reply)
++                        goto oom;
++        } else {
++                const BusBoundProperties bps[] = {
+                 { "org.freedesktop.systemd1.Unit",  bus_unit_properties,           u },
+                 { "org.freedesktop.systemd1.Scope", bus_unit_cgroup_properties,    u },
+                 { "org.freedesktop.systemd1.Scope", bus_scope_properties,          s },
+                 { "org.freedesktop.systemd1.Scope", bus_cgroup_context_properties, &s->cgroup_context },
+                 { "org.freedesktop.systemd1.Scope", bus_kill_context_properties,   &s->kill_context   },
+                 {}
+-        };
++                };
+-        SELINUX_UNIT_ACCESS_CHECK(u, c, message, "status");
++               return  bus_default_message_handler(c, message, INTROSPECTION, INTERFACES_LIST, bps);
++        }
++
++        if (reply)
++                if (!bus_maybe_send_reply(c, message, reply))
++                        goto oom;
+-        return bus_default_message_handler(c, message, INTROSPECTION, INTERFACES_LIST, bps);
++        return DBUS_HANDLER_RESULT_HANDLED;
++oom:
++        return DBUS_HANDLER_RESULT_NEED_MEMORY;
+ }
+ static int bus_scope_set_transient_property(
+@@ -102,10 +124,6 @@ static int bus_scope_set_transient_property(
+                     dbus_message_iter_get_element_type(i) != DBUS_TYPE_UINT32)
+                         return -EINVAL;
+-                r = set_ensure_allocated(&s->pids, trivial_hash_func, trivial_compare_func);
+-                if (r < 0)
+-                        return r;
+-
+                 dbus_message_iter_recurse(i, &sub);
+                 while (dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_UINT32) {
+                         uint32_t pid;
+@@ -116,7 +134,7 @@ static int bus_scope_set_transient_property(
+                                 return -EINVAL;
+                         if (mode != UNIT_CHECK) {
+-                                r = set_put(s->pids, LONG_TO_PTR(pid));
++                                r = unit_watch_pid(UNIT(s), pid);
+                                 if (r < 0 && r != -EEXIST)
+                                         return r;
+                         }
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 69ad4b5..e7b5234 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -1389,7 +1389,7 @@ static int manager_dispatch_sigchld(Manager *m) {
+                 log_debug_unit(u->id,
+                                "Child %lu belongs to %s", (long unsigned) si.si_pid, u->id);
+-                hashmap_remove(m->watch_pids, LONG_TO_PTR(si.si_pid));
++                unit_unwatch_pid(u, si.si_pid);
+                 UNIT_VTABLE(u)->sigchld_event(u, si.si_pid, si.si_code, si.si_status);
+         }
+diff --git a/src/core/scope.c b/src/core/scope.c
+index e75fc2b..22bdfb2 100644
+--- a/src/core/scope.c
++++ b/src/core/scope.c
+@@ -35,6 +35,7 @@
+ static const UnitActiveState state_translation_table[_SCOPE_STATE_MAX] = {
+         [SCOPE_DEAD] = UNIT_INACTIVE,
+         [SCOPE_RUNNING] = UNIT_ACTIVE,
++        [SCOPE_ABANDONED] = UNIT_ACTIVE,
+         [SCOPE_STOP_SIGTERM] = UNIT_DEACTIVATING,
+         [SCOPE_STOP_SIGKILL] = UNIT_DEACTIVATING,
+         [SCOPE_FAILED] = UNIT_FAILED
+@@ -67,9 +68,6 @@ static void scope_done(Unit *u) {
+         free(s->controller);
+         s->controller = NULL;
+-        set_free(s->pids);
+-        s->pids = NULL;
+-
+         unit_unwatch_timer(u, &s->timer_watch);
+ }
+@@ -84,6 +82,9 @@ static void scope_set_state(Scope *s, ScopeState state) {
+             state != SCOPE_STOP_SIGKILL)
+                 unit_unwatch_timer(UNIT(s), &s->timer_watch);
++        if (state == SCOPE_DEAD || state == SCOPE_FAILED)
++                unit_unwatch_all_pids(UNIT(s));
++
+         if (state != old_state)
+                 log_debug("%s changed %s -> %s",
+                           UNIT(s)->id,
+@@ -115,7 +116,7 @@ static int scope_verify(Scope *s) {
+         if (UNIT(s)->load_state != UNIT_LOADED)
+                 return 0;
+-        if (set_size(s->pids) <= 0 && UNIT(s)->manager->n_reloading <= 0) {
++        if (set_size(UNIT(s)->pids) <= 0 && UNIT(s)->manager->n_reloading <= 0) {
+                 log_error_unit(UNIT(s)->id, "Scope %s has no PIDs. Refusing.", UNIT(s)->id);
+                 return -EINVAL;
+         }
+@@ -169,6 +170,9 @@ static int scope_coldplug(Unit *u) {
+                                 return r;
+                 }
++                if (s->deserialized_state != SCOPE_DEAD && s->deserialized_state != SCOPE_FAILED)
++                        unit_watch_all_pids(UNIT(s));
++
+                 scope_set_state(s, s->deserialized_state);
+         }
+@@ -209,6 +213,8 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
+         if (f != SCOPE_SUCCESS)
+                 s->result = f;
++        unit_watch_all_pids(UNIT(s));
++
+         /* If we have a controller set let's ask the controller nicely
+          * to terminate the scope, instead of us going directly into
+          * SIGTERM beserk mode */
+@@ -271,13 +277,10 @@ static int scope_start(Unit *u) {
+                 return r;
+         }
+-        r = cg_attach_many_everywhere(u->manager->cgroup_supported, u->cgroup_path, s->pids);
++        r = cg_attach_many_everywhere(u->manager->cgroup_supported, u->cgroup_path, UNIT(s)->pids);
+         if (r < 0)
+                 return r;
+-        set_free(s->pids);
+-        s->pids = NULL;
+-
+         s->result = SCOPE_SUCCESS;
+         scope_set_state(s, SCOPE_RUNNING);
+@@ -288,13 +291,13 @@ static int scope_stop(Unit *u) {
+         Scope *s = SCOPE(u);
+         assert(s);
+-        assert(s->state == SCOPE_RUNNING);
+         if (s->state == SCOPE_STOP_SIGTERM ||
+             s->state == SCOPE_STOP_SIGKILL)
+                 return 0;
+-        assert(s->state == SCOPE_RUNNING);
++        assert(s->state == SCOPE_RUNNING ||
++               s->state == SCOPE_ABANDONED);
+         scope_enter_signal(s, SCOPE_STOP_SIGTERM, SCOPE_SUCCESS);
+         return 0;
+@@ -358,7 +361,7 @@ static bool scope_check_gc(Unit *u) {
+         /* Never clean up scopes that still have a process around,
+          * even if the scope is formally dead. */
+-        if (UNIT(s)->cgroup_path) {
++        if (u->cgroup_path) {
+                 r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, UNIT(s)->cgroup_path, true);
+                 if (r <= 0)
+                         return true;
+@@ -367,6 +370,33 @@ static bool scope_check_gc(Unit *u) {
+         return false;
+ }
++static void scope_notify_cgroup_empty_event(Unit *u) {
++        Scope *s = SCOPE(u);
++
++        assert(u);
++
++        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
++
++        if (s->state == SCOPE_RUNNING || s->state == SCOPE_ABANDONED ||
++            s->state == SCOPE_STOP_SIGTERM || SCOPE_STOP_SIGKILL)
++                scope_enter_dead(s, SCOPE_SUCCESS);
++}
++
++static void scope_sigchld_event(Unit *u, pid_t pid, int code, int status) {
++        /* If we get a SIGCHLD event for one of the processes we were
++           interested in, then we look for others to watch, under the
++           assumption that we'll sooner or later get a SIGCHLD for
++           them, as the original process we watched was probably the
++           parent of them, and they are hence now our children. */
++
++        unit_tidy_watch_pids(u, 0, 0);
++        unit_watch_all_pids(u);
++
++        /* If the PID set is empty now, then let's finish this off */
++        if (set_isempty(u->pids))
++                scope_notify_cgroup_empty_event(u);
++}
++
+ static void scope_timer_event(Unit *u, uint64_t elapsed, Watch*w) {
+         Scope *s = SCOPE(u);
+@@ -397,24 +427,30 @@ static void scope_timer_event(Unit *u, uint64_t elapsed, Watch*w) {
+         }
+ }
+-static void scope_notify_cgroup_empty_event(Unit *u) {
+-        Scope *s = SCOPE(u);
+-        assert(u);
++int scope_abandon(Scope *s) {
++        assert(s);
+-        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
++        if (s->state != SCOPE_RUNNING && s->state != SCOPE_ABANDONED)
++                return -ESTALE;
+-        switch (s->state) {
++        free(s->controller);
++        s->controller = NULL;
+-        case SCOPE_RUNNING:
+-        case SCOPE_STOP_SIGTERM:
+-        case SCOPE_STOP_SIGKILL:
+-                scope_enter_dead(s, SCOPE_SUCCESS);
++        /* The client is no longer watching the remaining processes,
++         * so let's step in here, under the assumption that the
++         * remaining processes will be sooner or later reassigned to
++         * us as parent. */
+-                break;
++        unit_tidy_watch_pids(UNIT(s), 0, 0);
++        unit_watch_all_pids(UNIT(s));
+-        default:
+-                ;
+-        }
++        /* If the PID set is empty now, then let's finish this off */
++        if (set_isempty(UNIT(s)->pids))
++                scope_notify_cgroup_empty_event(UNIT(s));
++        else
++                scope_set_state(s, SCOPE_ABANDONED);
++
++        return 0;
+ }
+ _pure_ static UnitActiveState scope_active_state(Unit *u) {
+@@ -432,6 +468,7 @@ _pure_ static const char *scope_sub_state_to_string(Unit *u) {
+ static const char* const scope_state_table[_SCOPE_STATE_MAX] = {
+         [SCOPE_DEAD] = "dead",
+         [SCOPE_RUNNING] = "running",
++        [SCOPE_ABANDONED] = "abandoned",
+         [SCOPE_STOP_SIGTERM] = "stop-sigterm",
+         [SCOPE_STOP_SIGKILL] = "stop-sigkill",
+         [SCOPE_FAILED] = "failed",
+@@ -481,6 +518,8 @@ const UnitVTable scope_vtable = {
+         .check_gc = scope_check_gc,
++        .sigchld_event = scope_sigchld_event,
++
+         .timer_event = scope_timer_event,
+         .reset_failed = scope_reset_failed,
+diff --git a/src/core/scope.h b/src/core/scope.h
+index b4bafa7..1e9f201 100644
+--- a/src/core/scope.h
++++ b/src/core/scope.h
+@@ -29,6 +29,7 @@ typedef struct Scope Scope;
+ typedef enum ScopeState {
+         SCOPE_DEAD,
+         SCOPE_RUNNING,
++        SCOPE_ABANDONED,
+         SCOPE_STOP_SIGTERM,
+         SCOPE_STOP_SIGKILL,
+         SCOPE_FAILED,
+@@ -57,13 +58,13 @@ struct Scope {
+         char *controller;
+-        Set *pids;
+-
+         Watch timer_watch;
+ };
+ extern const UnitVTable scope_vtable;
++int scope_abandon(Scope *s);
++
+ const char* scope_state_to_string(ScopeState i) _const_;
+ ScopeState scope_state_from_string(const char *s) _pure_;
+diff --git a/src/core/service.c b/src/core/service.c
+index f0acda1..41e5cb5 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -1546,6 +1546,11 @@ static void service_set_state(Service *s, ServiceState state) {
+                 s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID;
+         }
++        if (state == SERVICE_DEAD ||
++            state == SERVICE_FAILED ||
++            state == SERVICE_AUTO_RESTART)
++                unit_unwatch_all_pids(UNIT(s));
++
+         if (state != SERVICE_START_PRE &&
+             state != SERVICE_START &&
+             state != SERVICE_START_POST &&
+@@ -1661,8 +1666,14 @@ static int service_coldplug(Unit *u) {
+                                         return r;
+                         }
++                if (s->deserialized_state != SERVICE_DEAD &&
++                    s->deserialized_state != SERVICE_FAILED &&
++                    s->deserialized_state != SERVICE_AUTO_RESTART)
++                        unit_watch_all_pids(UNIT(s));
++
+                 if (s->deserialized_state == SERVICE_START_POST ||
+-                    s->deserialized_state == SERVICE_RUNNING)
++                    s->deserialized_state == SERVICE_RUNNING ||
++                    s->deserialized_state == SERVICE_RELOAD)
+                         service_handle_watchdog(s);
+                 service_set_state(s, s->deserialized_state);
+@@ -1970,6 +1981,7 @@ static void service_enter_stop_post(Service *s, ServiceResult f) {
+                 s->result = f;
+         service_unwatch_control_pid(s);
++        unit_watch_all_pids(UNIT(s));
+         s->control_command = s->exec_command[SERVICE_EXEC_STOP_POST];
+         if (s->control_command) {
+@@ -2010,6 +2022,8 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
+         if (f != SERVICE_SUCCESS)
+                 s->result = f;
++        unit_watch_all_pids(UNIT(s));
++
+         r = unit_kill_context(
+                         UNIT(s),
+                         &s->kill_context,
+@@ -2055,6 +2069,7 @@ static void service_enter_stop(Service *s, ServiceResult f) {
+                 s->result = f;
+         service_unwatch_control_pid(s);
++        unit_watch_all_pids(UNIT(s));
+         s->control_command = s->exec_command[SERVICE_EXEC_STOP];
+         if (s->control_command) {
+@@ -2961,6 +2976,62 @@ fail:
+         service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_RESOURCES);
+ }
++static void service_notify_cgroup_empty_event(Unit *u) {
++        Service *s = SERVICE(u);
++
++        assert(u);
++
++        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
++
++        switch (s->state) {
++
++                /* Waiting for SIGCHLD is usually more interesting,
++                 * because it includes return codes/signals. Which is
++                 * why we ignore the cgroup events for most cases,
++                 * except when we don't know pid which to expect the
++                 * SIGCHLD for. */
++
++        case SERVICE_START:
++        case SERVICE_START_POST:
++                /* If we were hoping for the daemon to write its PID file,
++                 * we can give up now. */
++                if (s->pid_file_pathspec) {
++                        log_warning_unit(u->id,
++                                         "%s never wrote its PID file. Failing.", UNIT(s)->id);
++                        service_unwatch_pid_file(s);
++                        if (s->state == SERVICE_START)
++                                service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_FAILURE_RESOURCES);
++                        else
++                                service_enter_stop(s, SERVICE_FAILURE_RESOURCES);
++                }
++                break;
++
++        case SERVICE_RUNNING:
++                /* service_enter_running() will figure out what to do */
++                service_enter_running(s, SERVICE_SUCCESS);
++                break;
++
++        case SERVICE_STOP_SIGTERM:
++        case SERVICE_STOP_SIGKILL:
++
++                if (main_pid_good(s) <= 0 && !control_pid_good(s))
++                        service_enter_stop_post(s, SERVICE_SUCCESS);
++
++                break;
++
++        case SERVICE_STOP_POST:
++        case SERVICE_FINAL_SIGTERM:
++        case SERVICE_FINAL_SIGKILL:
++                if (main_pid_good(s) <= 0 && !control_pid_good(s))
++                        service_enter_dead(s, SERVICE_SUCCESS, true);
++
++                break;
++
++        default:
++                ;
++        }
++}
++
+ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
+         Service *s = SERVICE(u);
+         ServiceResult f;
+@@ -3229,6 +3300,18 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
+         /* Notify clients about changed exit status */
+         unit_add_to_dbus_queue(u);
++
++        /* We got one SIGCHLD for the service, let's watch all
++         * processes that are now running of the service, and watch
++         * that. Among the PIDs we then watch will be children
++         * reassigned to us, which hopefully allows us to identify
++         * when all children are gone */
++        unit_tidy_watch_pids(u, s->main_pid, s->control_pid);
++        unit_watch_all_pids(u);
++
++        /* If the PID set is empty now, then let's finish this off */
++        if (set_isempty(u->pids))
++                service_notify_cgroup_empty_event(u);
+ }
+ static void service_timer_event(Unit *u, uint64_t elapsed, Watch* w) {
+@@ -3332,61 +3415,6 @@ static void service_timer_event(Unit *u, uint64_t elapsed, Watch* w) {
+         }
+ }
+-static void service_notify_cgroup_empty_event(Unit *u) {
+-        Service *s = SERVICE(u);
+-
+-        assert(u);
+-
+-        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
+-
+-        switch (s->state) {
+-
+-                /* Waiting for SIGCHLD is usually more interesting,
+-                 * because it includes return codes/signals. Which is
+-                 * why we ignore the cgroup events for most cases,
+-                 * except when we don't know pid which to expect the
+-                 * SIGCHLD for. */
+-
+-        case SERVICE_START:
+-        case SERVICE_START_POST:
+-                /* If we were hoping for the daemon to write its PID file,
+-                 * we can give up now. */
+-                if (s->pid_file_pathspec) {
+-                        log_warning_unit(u->id,
+-                                         "%s never wrote its PID file. Failing.", UNIT(s)->id);
+-                        service_unwatch_pid_file(s);
+-                        if (s->state == SERVICE_START)
+-                                service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_FAILURE_RESOURCES);
+-                        else
+-                                service_enter_stop(s, SERVICE_FAILURE_RESOURCES);
+-                }
+-                break;
+-
+-        case SERVICE_RUNNING:
+-                /* service_enter_running() will figure out what to do */
+-                service_enter_running(s, SERVICE_SUCCESS);
+-                break;
+-
+-        case SERVICE_STOP_SIGTERM:
+-        case SERVICE_STOP_SIGKILL:
+-
+-                if (main_pid_good(s) <= 0 && !control_pid_good(s))
+-                        service_enter_stop_post(s, SERVICE_SUCCESS);
+-
+-                break;
+-
+-        case SERVICE_FINAL_SIGTERM:
+-        case SERVICE_FINAL_SIGKILL:
+-                if (main_pid_good(s) <= 0 && !control_pid_good(s))
+-                        service_enter_dead(s, SERVICE_SUCCESS, true);
+-
+-                break;
+-
+-        default:
+-                ;
+-        }
+-}
+-
+ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
+         Service *s = SERVICE(u);
+         const char *e;
+diff --git a/src/core/unit.c b/src/core/unit.c
+index de34ddc..57a406d 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -469,6 +469,8 @@ void unit_free(Unit *u) {
+         set_free_free(u->names);
++        unit_unwatch_all_pids(u);
++
+         condition_free_list(u->conditions);
+         unit_ref_unset(&u->slice);
+@@ -1656,13 +1658,25 @@ void unit_unwatch_fd(Unit *u, Watch *w) {
+ }
+ int unit_watch_pid(Unit *u, pid_t pid) {
++        int q, r;
++
+         assert(u);
+         assert(pid >= 1);
++        r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
++        if (r < 0)
++                return r;
++
+         /* Watch a specific PID. We only support one unit watching
+          * each PID for now. */
+-        return hashmap_put(u->manager->watch_pids, LONG_TO_PTR(pid), u);
++        r = set_put(u->pids, LONG_TO_PTR(pid));
++
++        q = hashmap_put(u->manager->watch_pids, LONG_TO_PTR(pid), u);
++        if (q < 0)
++                return q;
++
++        return r;
+ }
+ void unit_unwatch_pid(Unit *u, pid_t pid) {
+@@ -1670,6 +1684,102 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
+         assert(pid >= 1);
+         hashmap_remove_value(u->manager->watch_pids, LONG_TO_PTR(pid), u);
++        set_remove(u->pids, LONG_TO_PTR(pid));
++}
++
++static int watch_pids_in_path(Unit *u, const char *path) {
++        _cleanup_closedir_ DIR *d = NULL;
++        _cleanup_fclose_ FILE *f = NULL;
++        int ret = 0, r;
++
++        assert(u);
++        assert(path);
++
++        /* Adds all PIDs from a specific cgroup path to the set of PIDs we watch. */
++
++        r = cg_enumerate_processes(SYSTEMD_CGROUP_CONTROLLER, path, &f);
++        if (r >= 0) {
++                pid_t pid;
++
++                while ((r = cg_read_pid(f, &pid)) > 0) {
++                        r = unit_watch_pid(u, pid);
++                        if (r < 0 && ret >= 0)
++                                ret = r;
++                }
++                if (r < 0 && ret >= 0)
++                        ret = r;
++
++        } else if (ret >= 0)
++                ret = r;
++
++        r = cg_enumerate_subgroups(SYSTEMD_CGROUP_CONTROLLER, path, &d);
++        if (r >= 0) {
++                char *fn;
++
++                while ((r = cg_read_subgroup(d, &fn)) > 0) {
++                        _cleanup_free_ char *p = NULL;
++
++                        p = strjoin(path, "/", fn, NULL);
++                        free(fn);
++
++                        if (!p)
++                                return -ENOMEM;
++
++                        r = watch_pids_in_path(u, p);
++                        if (r < 0 && ret >= 0)
++                                ret = r;
++                }
++                if (r < 0 && ret >= 0)
++                        ret = r;
++
++        } else if (ret >= 0)
++                ret = r;
++
++        return ret;
++}
++
++
++int unit_watch_all_pids(Unit *u) {
++        assert(u);
++
++        if (!u->cgroup_path)
++                return -ENOENT;
++
++        /* Adds all PIDs from our cgroup to the set of PIDs we watch */
++
++        return watch_pids_in_path(u, u->cgroup_path);
++}
++
++void unit_unwatch_all_pids(Unit *u) {
++        Iterator i;
++        void *e;
++
++        assert(u);
++
++        SET_FOREACH(e, u->pids, i)
++                hashmap_remove_value(u->manager->watch_pids, e, u);
++
++        set_free(u->pids);
++        u->pids = NULL;
++}
++
++void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
++        Iterator i;
++        void *e;
++
++        assert(u);
++
++        /* Cleans dead PIDs from our list */
++
++        SET_FOREACH(e, u->pids, i) {
++                pid_t pid = PTR_TO_LONG(e);
++
++                if (pid == except1 || pid == except2)
++                        continue;
++
++                if (kill(pid, 0) < 0 && errno == ESRCH)
++                        set_remove(u->pids, e);
++        }
+ }
+ int unit_watch_timer(Unit *u, clockid_t clock_id, bool relative, usec_t usec, Watch *w) {
+diff --git a/src/core/unit.h b/src/core/unit.h
+index 6dd750f..6dff25e 100644
+--- a/src/core/unit.h
++++ b/src/core/unit.h
+@@ -198,6 +198,11 @@ struct Unit {
+         /* CGroup realize members queue */
+         LIST_FIELDS(Unit, cgroup_queue);
++        /* PIDs we keep an eye on. Note that a unit might have many
++         * more, but these are the ones we care enough about to
++         * process SIGCHLD for */
++        Set *pids;
++
+         /* Used during GC sweeps */
+         unsigned gc_marker;
+@@ -531,6 +536,10 @@ void unit_unwatch_fd(Unit *u, Watch *w);
+ int unit_watch_pid(Unit *u, pid_t pid);
+ void unit_unwatch_pid(Unit *u, pid_t pid);
++int unit_watch_all_pids(Unit *u);
++void unit_unwatch_all_pids(Unit *u);
++
++void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2);
+ int unit_watch_timer(Unit *u, clockid_t, bool relative, usec_t usec, Watch *w);
+ void unit_unwatch_timer(Unit *u, Watch *w);
diff --git a/debian/patches/coredumpctl-in-case-of-error-free-pattern-after-prin.patch b/debian/patches/coredumpctl-in-case-of-error-free-pattern-after-prin.patch
new file mode 100644 (file)
index 0000000..a5f30de
--- /dev/null
@@ -0,0 +1,26 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 14 Jan 2014 15:40:16 +0100
+Subject: coredumpctl: in case of error free pattern after print
+
+(cherry picked from commit cf50a55277ee432e1217ad894afcbd9a664ff96c)
+---
+ src/journal/coredumpctl.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c
+index 560a91b..a5997e2 100644
+--- a/src/journal/coredumpctl.c
++++ b/src/journal/coredumpctl.c
+@@ -126,10 +126,11 @@ static int add_match(Set *set, const char *match) {
+                 goto fail;
+         log_debug("Adding pattern: %s", pattern);
+-        r = set_consume(set, pattern);
++        r = set_put(set, pattern);
+         if (r < 0) {
+                 log_error("Failed to add pattern '%s': %s",
+                           pattern, strerror(-r));
++                free(pattern);
+                 goto fail;
+         }
diff --git a/debian/patches/correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch b/debian/patches/correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch
new file mode 100644 (file)
index 0000000..8488f0f
--- /dev/null
@@ -0,0 +1,22 @@
+From: Adam Williamson <awilliam@redhat.com>
+Date: Mon, 9 Dec 2013 22:02:25 -0800
+Subject: correct name of Tajik kbd layout in kbd-model-map
+
+(cherry picked from commit 18c92a4958361f333d63507c67a35bbcfd0aa925)
+---
+ src/locale/kbd-model-map | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map
+index 78c7887..322c0a9 100644
+--- a/src/locale/kbd-model-map
++++ b/src/locale/kbd-model-map
+@@ -39,7 +39,7 @@ ro                   ro      pc105           -               terminate:ctrl_alt_bksp
+ us-acentos            us      pc105           intl            terminate:ctrl_alt_bksp
+ pt-latin1             pt      pc105           -               terminate:ctrl_alt_bksp
+ ro-std-cedilla                ro      pc105           std_cedilla     terminate:ctrl_alt_bksp
+-tj                    tj      pc105           -               terminate:ctrl_alt_bksp
++tj_alt-UTF8           tj      pc105           -               terminate:ctrl_alt_bksp
+ de-latin1-nodeadkeys  de      pc105           nodeadkeys      terminate:ctrl_alt_bksp
+ no                    no      pc105           -               terminate:ctrl_alt_bksp
+ bg_bds-utf8           bg,us   pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
diff --git a/debian/patches/cryptsetup-Support-key-slot-option.patch b/debian/patches/cryptsetup-Support-key-slot-option.patch
new file mode 100644 (file)
index 0000000..36c1368
--- /dev/null
@@ -0,0 +1,92 @@
+From: Christian Seiler <christian@iwakd.de>
+Date: Sun, 26 Jan 2014 12:02:49 +0100
+Subject: cryptsetup: Support key-slot option
+
+Debian recently introduced the option key-slot to /etc/crypttab to
+specify the LUKS key slot to be used for decrypting the device. On
+systems where a keyfile is used and the key is not in the first slot,
+this can speed up the boot process quite a bit, since cryptsetup does
+not need to try all of the slots sequentially. (Unsuccessfully testing
+a key slot typically takes up to about 1 second.)
+
+This patch makes systemd aware of this option.
+
+Debian bug that introduced the feature:
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704470
+
+(cherry picked from commit b4a11878f2fdf5b07f895863747153de632ff4e6)
+---
+ man/crypttab.xml            | 14 ++++++++++++++
+ src/cryptsetup/cryptsetup.c | 13 +++++++++++--
+ 2 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/man/crypttab.xml b/man/crypttab.xml
+index 90d8ce9..5f386e5 100644
+--- a/man/crypttab.xml
++++ b/man/crypttab.xml
+@@ -164,6 +164,20 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><varname>key-slot=</varname></term>
++
++                                <listitem><para>Specifies the key slot to
++                                compare the passphrase or key against.
++                                If the key slot does not match the given
++                                passphrase or key, but another would, the
++                                setup of the device will fail regardless.
++                                This implies <varname>luks</varname>. See
++                                <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++                                for possible values. The default is to try
++                                all key slots in sequential order.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
+                                 <term><varname>luks</varname></term>
+                                 <listitem><para>Force LUKS mode. When this mode
+diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
+index 39f7db7..6a76d21 100644
+--- a/src/cryptsetup/cryptsetup.c
++++ b/src/cryptsetup/cryptsetup.c
+@@ -39,6 +39,7 @@
+ static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */
+ static char *opt_cipher = NULL;
+ static unsigned opt_key_size = 0;
++static int opt_key_slot = CRYPT_ANY_SLOT;
+ static unsigned opt_keyfile_size = 0;
+ static unsigned opt_keyfile_offset = 0;
+ static char *opt_hash = NULL;
+@@ -87,6 +88,14 @@ static int parse_one_option(const char *option) {
+                         return 0;
+                 }
++        } else if (startswith(option, "key-slot=")) {
++
++                opt_type = CRYPT_LUKS1;
++                if (safe_atoi(option+9, &opt_key_slot) < 0) {
++                        log_error("key-slot= parse failure, ignoring.");
++                        return 0;
++                }
++
+         } else if (startswith(option, "tcrypt-keyfile=")) {
+                 opt_type = CRYPT_TCRYPT;
+@@ -432,7 +441,7 @@ static int attach_luks_or_plain(struct crypt_device *cd,
+                  crypt_get_device_name(cd));
+         if (key_file) {
+-                r = crypt_activate_by_keyfile_offset(cd, name, CRYPT_ANY_SLOT,
++                r = crypt_activate_by_keyfile_offset(cd, name, opt_key_slot,
+                                                      key_file, opt_keyfile_size,
+                                                      opt_keyfile_offset, flags);
+                 if (r < 0) {
+@@ -446,7 +455,7 @@ static int attach_luks_or_plain(struct crypt_device *cd,
+                         if (pass_volume_key)
+                                 r = crypt_activate_by_volume_key(cd, name, *p, opt_key_size, flags);
+                         else
+-                                r = crypt_activate_by_passphrase(cd, name, CRYPT_ANY_SLOT, *p, strlen(*p), flags);
++                                r = crypt_activate_by_passphrase(cd, name, opt_key_slot, *p, strlen(*p), flags);
+                         if (r >= 0)
+                                 break;
diff --git a/debian/patches/cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch b/debian/patches/cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
new file mode 100644 (file)
index 0000000..744d987
--- /dev/null
@@ -0,0 +1,44 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:36:28 +0200
+Subject: cryptsetup: fix OOM handling when parsing mount options
+
+---
+ src/cryptsetup/cryptsetup.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
+index 22b5eea..769c3e4 100644
+--- a/src/cryptsetup/cryptsetup.c
++++ b/src/cryptsetup/cryptsetup.c
+@@ -74,7 +74,7 @@ static int parse_one_option(const char *option) {
+                 t = strdup(option+7);
+                 if (!t)
+-                        return -ENOMEM;
++                        return log_oom();
+                 free(opt_cipher);
+                 opt_cipher = t;
+@@ -89,9 +89,10 @@ static int parse_one_option(const char *option) {
+         } else if (startswith(option, "tcrypt-keyfile=")) {
+                 opt_type = CRYPT_TCRYPT;
+-                if (path_is_absolute(option+15))
+-                        opt_tcrypt_keyfiles = strv_append(opt_tcrypt_keyfiles, strdup(option+15));
+-                else
++                if (path_is_absolute(option+15)) {
++                        if (strv_extend(&opt_tcrypt_keyfiles, option + 15) < 0)
++                                return log_oom();
++                } else
+                         log_error("Key file path '%s' is not absolute. Ignoring.", option+15);
+         } else if (startswith(option, "keyfile-size=")) {
+@@ -113,7 +114,7 @@ static int parse_one_option(const char *option) {
+                 t = strdup(option+5);
+                 if (!t)
+-                        return -ENOMEM;
++                        return log_oom();
+                 free(opt_hash);
+                 opt_hash = t;
diff --git a/debian/patches/cryptsetup-generator-auto-add-deps-for-device-as-pas.patch b/debian/patches/cryptsetup-generator-auto-add-deps-for-device-as-pas.patch
new file mode 100644 (file)
index 0000000..a5fd479
--- /dev/null
@@ -0,0 +1,43 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Sat, 8 Feb 2014 12:54:58 -0500
+Subject: cryptsetup-generator: auto add deps for device as password
+
+If the password is a device file, we can add Requires/After dependencies
+on the device rather than requiring the user to do so.
+
+(cherry picked from commit 66a5dbdf282435403f947c2caadd04bb0cdec752)
+---
+ src/cryptsetup/cryptsetup-generator.c | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
+index e1798a3..00891f1 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -131,11 +131,21 @@ static int create_disk(
+                     streq(password, "/dev/random") ||
+                     streq(password, "/dev/hw_random"))
+                         fputs("After=systemd-random-seed.service\n", f);
+-                else if (!streq(password, "-") &&
+-                         !streq(password, "none"))
+-                        fprintf(f,
+-                                "RequiresMountsFor=%s\n",
+-                                password);
++
++                else if (!streq(password, "-") && !streq(password, "none")) {
++                        _cleanup_free_ char *uu = fstab_node_to_udev_node(password);
++                        if (uu == NULL)
++                                return log_oom();
++
++                        if (is_device_path(uu)) {
++                                _cleanup_free_ char *dd = unit_name_from_path(uu, ".device");
++                                if (dd == NULL)
++                                        return log_oom();
++
++                                fprintf(f, "After=%1$s\nRequires=%1$s\n", dd);
++                        } else
++                                fprintf(f, "RequiresMountsFor=%s\n", password);
++                }
+         }
+         if (is_device_path(u))
diff --git a/debian/patches/cryptsetup-introduce-new-cryptsetup-pre.traget-unit-.patch b/debian/patches/cryptsetup-introduce-new-cryptsetup-pre.traget-unit-.patch
new file mode 100644 (file)
index 0000000..e5d4f7d
--- /dev/null
@@ -0,0 +1,101 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 18 Jun 2014 00:07:56 +0200
+Subject: cryptsetup: introduce new cryptsetup-pre.traget unit so that
+ services can make sure they are started before and stopped after any LUKS
+ setup
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1097938
+(cherry picked from commit 9542239eaf481decca6c254dffb3f2b4e716545e)
+(cherry picked from commit 137cb035d2facdf2a70f0c915d6c018b6d900933)
+---
+ Makefile.am                           |  3 ++-
+ man/systemd.special.xml               | 22 ++++++++++++++++++++++
+ src/cryptsetup/cryptsetup-generator.c |  2 +-
+ units/cryptsetup-pre.target           | 11 +++++++++++
+ 4 files changed, 36 insertions(+), 2 deletions(-)
+ create mode 100644 units/cryptsetup-pre.target
+
+diff --git a/Makefile.am b/Makefile.am
+index 5cf03c0..d57d890 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3414,7 +3414,8 @@ systemgenerator_PROGRAMS += \
+       systemd-cryptsetup-generator
+ dist_systemunit_DATA += \
+-      units/cryptsetup.target
++      units/cryptsetup.target \
++      units/cryptsetup-pre.target
+ systemd_cryptsetup_SOURCES = \
+       src/cryptsetup/cryptsetup.c
+diff --git a/man/systemd.special.xml b/man/systemd.special.xml
+index 38b94a7..4dd7d97 100644
+--- a/man/systemd.special.xml
++++ b/man/systemd.special.xml
+@@ -52,6 +52,7 @@
+                 <filename>bluetooth.target</filename>,
+                 <filename>ctrl-alt-del.target</filename>,
+                 <filename>cryptsetup.target</filename>,
++                <filename>cryptsetup-pre.target</filename>,
+                 <filename>dbus.service</filename>,
+                 <filename>dbus.socket</filename>,
+                 <filename>default.target</filename>,
+@@ -840,6 +841,27 @@
+                 <variablelist>
+                         <varlistentry>
++                                <term><filename>cryptsetup-pre.target</filename></term>
++                                <listitem>
++                                        <para>This passive target unit
++                                        may be pulled in by services
++                                        that want to run before any
++                                        encrypted block device is set
++                                        up. All encrypted block
++                                        devices are set up after this
++                                        target has been reached. Since
++                                        the shutdown order is
++                                        implicitly the reverse
++                                        start-up order between units
++                                        this target is particularly
++                                        useful to ensure that a
++                                        service is shut down only
++                                        after all encrypted block
++                                        devices are fully
++                                        stopped.</para>
++                                </listitem>
++                        </varlistentry>
++                        <varlistentry>
+                                 <term><filename>local-fs-pre.target</filename></term>
+                                 <listitem>
+                                         <para>This target unit is
+diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
+index 00891f1..11e5268 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -119,7 +119,7 @@ static int create_disk(
+                 "DefaultDependencies=no\n"
+                 "BindsTo=dev-mapper-%i.device\n"
+                 "IgnoreOnIsolate=true\n"
+-                "After=systemd-readahead-collect.service systemd-readahead-replay.service\n",
++                "After=systemd-readahead-collect.service systemd-readahead-replay.service cryptsetup-pre.target\n",
+                 f);
+         if (!nofail)
+diff --git a/units/cryptsetup-pre.target b/units/cryptsetup-pre.target
+new file mode 100644
+index 0000000..6535341
+--- /dev/null
++++ b/units/cryptsetup-pre.target
+@@ -0,0 +1,11 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++[Unit]
++Description=Encrypted Volumes (Pre)
++Documentation=man:systemd.special(7)
++RefuseManualStart=yes
diff --git a/debian/patches/dbus-common-avoid-leak-in-error-path.patch b/debian/patches/dbus-common-avoid-leak-in-error-path.patch
new file mode 100644 (file)
index 0000000..97f63e7
--- /dev/null
@@ -0,0 +1,67 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 11 Oct 2013 19:33:20 -0400
+Subject: dbus-common: avoid leak in error path
+
+src/shared/dbus-common.c:968:33: warning: Potential leak of memory pointed to by 'l'
+                        return -EINVAL;
+                                ^~~~~~
+---
+ src/shared/dbus-common.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c
+index c727cae..3ba2d87 100644
+--- a/src/shared/dbus-common.c
++++ b/src/shared/dbus-common.c
+@@ -934,7 +934,7 @@ int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l) {
+ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
+         DBusMessageIter sub, sub2;
+         unsigned n = 0, i = 0;
+-        char **l;
++        _cleanup_strv_free_ char **l = NULL;
+         assert(iter);
+         assert(_l);
+@@ -953,6 +953,7 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
+         l = new(char*, n*2+1);
+         if (!l)
+                 return -ENOMEM;
++        l[0] = NULL; /* make sure that l is properly terminated at all times */
+         dbus_message_iter_recurse(iter, &sub);
+@@ -968,26 +969,25 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
+                         return -EINVAL;
+                 l[i] = strdup(a);
+-                if (!l[i]) {
+-                        strv_free(l);
++                if (!l[i])
+                         return -ENOMEM;
+-                }
++                i++;
+-                l[++i] = strdup(b);
+-                if (!l[i]) {
+-                        strv_free(l);
++                l[i] = strdup(b);
++                if (!l[i])
+                         return -ENOMEM;
+-                }
+-
+                 i++;
++
+                 dbus_message_iter_next(&sub);
+         }
+         assert(i == n*2);
+         l[i] = NULL;
+-        if (_l)
++        if (_l) {
+                 *_l = l;
++                l = NULL; /* avoid freeing */
++        }
+         return 0;
+ }
diff --git a/debian/patches/dbus-fix-return-value-of-dispatch_rqueue.patch b/debian/patches/dbus-fix-return-value-of-dispatch_rqueue.patch
new file mode 100644 (file)
index 0000000..7a9088b
--- /dev/null
@@ -0,0 +1,26 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:37:30 +0200
+Subject: dbus: fix return value of dispatch_rqueue()
+
+---
+ src/libsystemd-bus/sd-bus.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
+index 3f766fb..db0880f 100644
+--- a/src/libsystemd-bus/sd-bus.c
++++ b/src/libsystemd-bus/sd-bus.c
+@@ -1215,11 +1215,11 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) {
+                 if (r == 0)
+                         return ret;
+-                r = 1;
++                ret = 1;
+         } while (!z);
+         *m = z;
+-        return 1;
++        return ret;
+ }
+ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) {
diff --git a/debian/patches/delta-add-bash-completion.patch b/debian/patches/delta-add-bash-completion.patch
new file mode 100644 (file)
index 0000000..0cf51d3
--- /dev/null
@@ -0,0 +1,90 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 18 Feb 2014 22:20:26 +0100
+Subject: delta: add bash completion
+
+(cherry picked from commit 0bc8e31b358a872ec2631874bd2109ba4e009ccf)
+---
+ Makefile.am                         |  1 +
+ shell-completion/bash/systemd-delta | 61 +++++++++++++++++++++++++++++++++++++
+ 2 files changed, 62 insertions(+)
+ create mode 100644 shell-completion/bash/systemd-delta
+
+diff --git a/Makefile.am b/Makefile.am
+index 033bbfa..9049fed 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -342,6 +342,7 @@ dist_bashcompletion_DATA = \
+       shell-completion/bash/journalctl \
+       shell-completion/bash/systemctl \
+       shell-completion/bash/systemd-analyze \
++      shell-completion/bash/systemd-delta \
+       shell-completion/bash/systemd-run \
+       shell-completion/bash/udevadm \
+       shell-completion/bash/kernel-install
+diff --git a/shell-completion/bash/systemd-delta b/shell-completion/bash/systemd-delta
+new file mode 100644
+index 0000000..cb17328
+--- /dev/null
++++ b/shell-completion/bash/systemd-delta
+@@ -0,0 +1,61 @@
++# systemd-delta(1) completion                      -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++_systemd-delta() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local comps
++
++        local -A OPTS=(
++               [STANDALONE]='--help -h --no-pager --version'
++                      [ARG]='--diff --type -t'
++        )
++
++        _init_completion || return
++
++
++        if __contains_word "$prev" ${OPTS[ARG]}; then
++                case $prev in
++                        --diff)
++                                comps='yes no'
++                        ;;
++                        --type|-t)
++                                comps='masked equivalent redirected overridden unchanged extended default'
++                        ;;
++                esac
++                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++                return 0
++        fi
++
++        if [[ "$cur" = -* ]]; then
++                COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++                return 0
++        fi
++
++        COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++        return 0
++}
++
++complete -F _systemd-delta systemd-delta
diff --git a/debian/patches/delta-do-not-use-unicode-chars-in-C-locale.patch b/debian/patches/delta-do-not-use-unicode-chars-in-C-locale.patch
new file mode 100644 (file)
index 0000000..b3d3f0b
--- /dev/null
@@ -0,0 +1,132 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 16 Apr 2014 23:33:41 -0400
+Subject: delta: do not use unicode chars in C locale
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1088418
+(cherry picked from commit 00a5cc3a63c125633e822f39efd9c32223169f62)
+(cherry picked from commit 1ba98e163ed872d8744ff644e3d255b4be171bc6)
+---
+ src/delta/delta.c | 40 +++++++++++++++++++++++++---------------
+ 1 file changed, 25 insertions(+), 15 deletions(-)
+
+diff --git a/src/delta/delta.c b/src/delta/delta.c
+index a8dd57e..f1aea80 100644
+--- a/src/delta/delta.c
++++ b/src/delta/delta.c
+@@ -85,6 +85,10 @@ static void pager_open_if_enabled(void) {
+         pager_open(false);
+ }
++static inline const char* arrow(void) {
++        return is_locale_utf8() ? "→" : "->";
++}
++
+ static int equivalent(const char *a, const char *b) {
+         _cleanup_free_ char *x = NULL, *y = NULL;
+@@ -103,8 +107,9 @@ static int notify_override_masked(const char *top, const char *bottom) {
+         if (!(arg_flags & SHOW_MASKED))
+                 return 0;
+-        printf("%s%s%s     %s → %s\n",
+-               ansi_highlight_red(), "[MASKED]", ansi_highlight_off(), top, bottom);
++        printf("%s%s%s     %s %s %s\n",
++               ansi_highlight_red(), "[MASKED]", ansi_highlight_off(),
++               top, arrow(), bottom);
+         return 1;
+ }
+@@ -112,8 +117,9 @@ static int notify_override_equivalent(const char *top, const char *bottom) {
+         if (!(arg_flags & SHOW_EQUIVALENT))
+                 return 0;
+-        printf("%s%s%s %s → %s\n",
+-               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(), top, bottom);
++        printf("%s%s%s %s %s %s\n",
++               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(),
++               top, arrow(), bottom);
+         return 1;
+ }
+@@ -121,8 +127,9 @@ static int notify_override_redirected(const char *top, const char *bottom) {
+         if (!(arg_flags & SHOW_REDIRECTED))
+                 return 0;
+-        printf("%s%s%s   %s → %s\n",
+-               ansi_highlight(), "[REDIRECTED]", ansi_highlight_off(), top, bottom);
++        printf("%s%s%s   %s %s %s\n",
++               ansi_highlight(), "[REDIRECTED]", ansi_highlight_off(),
++               top, arrow(), bottom);
+         return 1;
+ }
+@@ -130,8 +137,9 @@ static int notify_override_overridden(const char *top, const char *bottom) {
+         if (!(arg_flags & SHOW_OVERRIDDEN))
+                 return 0;
+-        printf("%s%s%s %s → %s\n",
+-               ansi_highlight(), "[OVERRIDDEN]", ansi_highlight_off(), top, bottom);
++        printf("%s%s%s %s %s %s\n",
++               ansi_highlight(), "[OVERRIDDEN]", ansi_highlight_off(),
++               top, arrow(), bottom);
+         return 1;
+ }
+@@ -139,8 +147,9 @@ static int notify_override_extended(const char *top, const char *bottom) {
+         if (!(arg_flags & SHOW_EXTENDED))
+                return 0;
+-        printf("%s%s%s   %s → %s\n",
+-               ansi_highlight(), "[EXTENDED]", ansi_highlight_off(), top, bottom);
++        printf("%s%s%s   %s %s %s\n",
++               ansi_highlight(), "[EXTENDED]", ansi_highlight_off(),
++               top, arrow(), bottom);
+         return 1;
+ }
+@@ -241,7 +250,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
+                         return -ENOMEM;
+                 d = p + strlen(toppath) + 1;
+-                log_debug("Adding at top: %s → %s", d, p);
++                log_debug("Adding at top: %s %s %s", d, arrow(), p);
+                 k = hashmap_put(top, d, p);
+                 if (k >= 0) {
+                         p = strdup(p);
+@@ -253,7 +262,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
+                         return k;
+                 }
+-                log_debug("Adding at bottom: %s → %s", d, p);
++                log_debug("Adding at bottom: %s %s %s", d, arrow(), p);
+                 free(hashmap_remove(bottom, d));
+                 k = hashmap_put(bottom, d, p);
+                 if (k < 0) {
+@@ -276,7 +285,8 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
+                 if (!p)
+                         return -ENOMEM;
+-                log_debug("Adding to drops: %s → %s → %s", unit, basename(p), p);
++                log_debug("Adding to drops: %s %s %s %s %s",
++                          unit, arrow(), basename(p), arrow(), p);
+                 k = hashmap_put(h, basename(p), p);
+                 if (k < 0) {
+                         free(p);
+@@ -328,7 +338,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+                 if (!p)
+                         return -ENOMEM;
+-                log_debug("Adding at top: %s → %s", basename(p), p);
++                log_debug("Adding at top: %s %s %s", basename(p), arrow(), p);
+                 k = hashmap_put(top, basename(p), p);
+                 if (k >= 0) {
+                         p = strdup(p);
+@@ -339,7 +349,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+                         return k;
+                 }
+-                log_debug("Adding at bottom: %s → %s", basename(p), p);
++                log_debug("Adding at bottom: %s %s %s", basename(p), arrow(), p);
+                 free(hashmap_remove(bottom, basename(p)));
+                 k = hashmap_put(bottom, basename(p), p);
+                 if (k < 0) {
diff --git a/debian/patches/delta-ensure-that-d_type-will-be-set-on-every-fs.patch b/debian/patches/delta-ensure-that-d_type-will-be-set-on-every-fs.patch
new file mode 100644 (file)
index 0000000..ed5c0ff
--- /dev/null
@@ -0,0 +1,22 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 9 Jan 2014 16:43:00 +0100
+Subject: delta: ensure that d_type will be set on every fs
+
+(cherry picked from commit 277f2f75f69bbd5868c74991011c804ce00dfed9)
+---
+ src/delta/delta.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/delta/delta.c b/src/delta/delta.c
+index ae658f9..a8dd57e 100644
+--- a/src/delta/delta.c
++++ b/src/delta/delta.c
+@@ -316,6 +316,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+                 if (!de)
+                         return -errno;
++                dirent_ensure_type(d, de);
++
+                 if (dropins && de->d_type == DT_DIR && endswith(de->d_name, ".d"))
+                         enumerate_dir_d(top, bottom, drops, path, de->d_name);
diff --git a/debian/patches/delta-fix-delta-for-drop-ins.patch b/debian/patches/delta-fix-delta-for-drop-ins.patch
new file mode 100644 (file)
index 0000000..e09751d
--- /dev/null
@@ -0,0 +1,376 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 22 Dec 2013 19:45:02 -0500
+Subject: delta: fix delta for drop-ins
+
+Also, fix highlighting, add more debug statements, make const tables
+static and global, run path_kill_slashes only at entry.
+
+(cherry picked from commit f939e9a47c54ac37504e8517f316cbec46864d14)
+
+Conflicts:
+       src/delta/delta.c
+---
+ src/delta/delta.c | 174 +++++++++++++++++++++++++-----------------------------
+ 1 file changed, 79 insertions(+), 95 deletions(-)
+
+diff --git a/src/delta/delta.c b/src/delta/delta.c
+index fd024fc..e97f2e9 100644
+--- a/src/delta/delta.c
++++ b/src/delta/delta.c
+@@ -33,6 +33,34 @@
+ #include "build.h"
+ #include "strv.h"
++static const char prefixes[] =
++        "/etc\0"
++        "/run\0"
++        "/usr/local/lib\0"
++        "/usr/local/share\0"
++        "/usr/lib\0"
++        "/usr/share\0"
++#ifdef HAVE_SPLIT_USR
++        "/lib\0"
++#endif
++        ;
++
++static const char suffixes[] =
++        "sysctl.d\0"
++        "tmpfiles.d\0"
++        "modules-load.d\0"
++        "binfmt.d\0"
++        "systemd/system\0"
++        "systemd/user\0"
++        "systemd/system-preset\0"
++        "systemd/user-preset\0"
++        "udev/rules.d\0"
++        "modprobe.d\0";
++
++static const char have_dropins[] =
++        "systemd/system\0"
++        "systemd/user\0";
++
+ static bool arg_no_pager = false;
+ static int arg_diff = -1;
+@@ -48,6 +76,14 @@ static enum {
+         (SHOW_MASKED | SHOW_EQUIVALENT | SHOW_REDIRECTED | SHOW_OVERRIDDEN | SHOW_EXTENDED)
+ } arg_flags = 0;
++static void pager_open_if_enabled(void) {
++
++        if (arg_no_pager)
++                return;
++
++        pager_open(false);
++}
++
+ static int equivalent(const char *a, const char *b) {
+         _cleanup_free_ char *x = NULL, *y = NULL;
+@@ -76,7 +112,7 @@ static int notify_override_equivalent(const char *top, const char *bottom) {
+                 return 0;
+         printf("%s%s%s %s → %s\n",
+-               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight(), top, bottom);
++               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(), top, bottom);
+         return 1;
+ }
+@@ -160,24 +196,26 @@ static int found_override(const char *top, const char *bottom) {
+ }
+ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const char *toppath, const char *drop) {
+-        _cleanup_free_ char *conf = NULL;
++        _cleanup_free_ char *unit = NULL;
+         _cleanup_free_ char *path = NULL;
+         _cleanup_strv_free_ char **list = NULL;
+         char **file;
+         char *c;
+         int r;
++        assert(!endswith(drop, "/"));
++
+         path = strjoin(toppath, "/", drop, NULL);
+         if (!path)
+                 return -ENOMEM;
+-        path_kill_slashes(path);
++        log_debug("Looking at %s", path);
+-        conf = strdup(drop);
+-        if (!conf)
++        unit = strdup(drop);
++        if (!unit)
+                 return -ENOMEM;
+-        c = strrchr(conf, '.');
++        c = strrchr(unit, '.');
+         if (!c)
+                 return -EINVAL;
+         *c = 0;
+@@ -200,35 +238,21 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
+                 p = strjoin(path, "/", *file, NULL);
+                 if (!p)
+                         return -ENOMEM;
++                d = p + strlen(toppath) + 1;
+-                path_kill_slashes(p);
+-
+-                d = strrchr(p, '/');
+-                if (!d || d == p) {
+-                        free(p);
+-                        return -EINVAL;
+-                }
+-                d--;
+-                d = strrchr(p, '/');
+-
+-                if (!d || d == p) {
+-                        free(p);
+-                        return -EINVAL;
+-                }
+-
++                log_debug("Adding at top: %s → %s", d, p);
+                 k = hashmap_put(top, d, p);
+                 if (k >= 0) {
+                         p = strdup(p);
+                         if (!p)
+                                 return -ENOMEM;
+-                        d = strrchr(p, '/');
+-                        d--;
+-                        d = strrchr(p, '/');
++                        d = p + strlen(toppath) + 1;
+                 } else if (k != -EEXIST) {
+                         free(p);
+                         return k;
+                 }
++                log_debug("Adding at bottom: %s → %s", d, p);
+                 free(hashmap_remove(bottom, d));
+                 k = hashmap_put(bottom, d, p);
+                 if (k < 0) {
+@@ -236,14 +260,14 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
+                         return k;
+                 }
+-                h = hashmap_get(drops, conf);
++                h = hashmap_get(drops, unit);
+                 if (!h) {
+                         h = hashmap_new(string_hash_func, string_compare_func);
+                         if (!h)
+                                 return -ENOMEM;
+-                        hashmap_put(drops, conf, h);
+-                        conf = strdup(conf);
+-                        if (!conf)
++                        hashmap_put(drops, unit, h);
++                        unit = strdup(unit);
++                        if (!unit)
+                                 return -ENOMEM;
+                 }
+@@ -251,7 +275,8 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
+                 if (!p)
+                         return -ENOMEM;
+-                k = hashmap_put(h, path_get_file_name(p), p);
++                log_debug("Adding to drops: %s → %s → %s", unit, basename(p), p);
++                k = hashmap_put(h, basename(p), p);
+                 if (k < 0) {
+                         free(p);
+                         if (k != -EEXIST)
+@@ -269,12 +294,14 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+         assert(drops);
+         assert(path);
++        log_debug("Looking at %s", path);
++
+         d = opendir(path);
+         if (!d) {
+                 if (errno == ENOENT)
+                         return 0;
+-                log_error("Failed to enumerate %s: %m", path);
++                log_error("Failed to open %s: %m", path);
+                 return -errno;
+         }
+@@ -285,11 +312,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+                 errno = 0;
+                 de = readdir(d);
+-                if (!de && errno != 0)
+-                        return -errno;
+-
+                 if (!de)
+-                        break;
++                        return -errno;
+                 if (dropins && de->d_type == DT_DIR && endswith(de->d_name, ".d"))
+                         enumerate_dir_d(top, bottom, drops, path, de->d_name);
+@@ -301,9 +325,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+                 if (!p)
+                         return -ENOMEM;
+-                path_kill_slashes(p);
+-
+-                k = hashmap_put(top, path_get_file_name(p), p);
++                log_debug("Adding at top: %s → %s", basename(p), p);
++                k = hashmap_put(top, basename(p), p);
+                 if (k >= 0) {
+                         p = strdup(p);
+                         if (!p)
+@@ -313,44 +336,37 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+                         return k;
+                 }
+-                free(hashmap_remove(bottom, path_get_file_name(p)));
+-                k = hashmap_put(bottom, path_get_file_name(p), p);
++                log_debug("Adding at bottom: %s → %s", basename(p), p);
++                free(hashmap_remove(bottom, basename(p)));
++                k = hashmap_put(bottom, basename(p), p);
+                 if (k < 0) {
+                         free(p);
+                         return k;
+                 }
+         }
+-
+-        return 0;
+ }
+-static int process_suffix(const char *prefixes, const char *suffix, bool dropins) {
++static int process_suffix(const char *suffix) {
+         const char *p;
+         char *f;
+-        Hashmap *top, *bottom=NULL, *drops=NULL;
++        Hashmap *top, *bottom, *drops;
+         Hashmap *h;
+         char *key;
+         int r = 0, k;
+         Iterator i, j;
+         int n_found = 0;
++        bool dropins;
+-        assert(prefixes);
+         assert(suffix);
++        assert(!startswith(suffix, "/"));
++        assert(!strstr(suffix, "//"));
+-        top = hashmap_new(string_hash_func, string_compare_func);
+-        if (!top) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        dropins = nulstr_contains(have_dropins, suffix);
++        top = hashmap_new(string_hash_func, string_compare_func);
+         bottom = hashmap_new(string_hash_func, string_compare_func);
+-        if (!bottom) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
+-
+         drops = hashmap_new(string_hash_func, string_compare_func);
+-        if (!drops) {
++        if (!top || !bottom || !drops) {
+                 r = -ENOMEM;
+                 goto finish;
+         }
+@@ -365,10 +381,8 @@ static int process_suffix(const char *prefixes, const char *suffix, bool dropins
+                 }
+                 k = enumerate_dir(top, bottom, drops, t, dropins);
+-                if (k < 0)
++                if (r == 0)
+                         r = k;
+-
+-                log_debug("Looking at %s", t);
+         }
+         HASHMAP_FOREACH_KEY(f, key, top, i) {
+@@ -409,21 +423,20 @@ finish:
+         return r < 0 ? r : n_found;
+ }
+-static int process_suffix_chop(const char *prefixes, const char *suffix, const char *have_dropins) {
++static int process_suffix_chop(const char *suffix) {
+         const char *p;
+-        assert(prefixes);
+         assert(suffix);
+         if (!path_is_absolute(suffix))
+-                return process_suffix(prefixes, suffix, nulstr_contains(have_dropins, suffix));
++                return process_suffix(suffix);
+         /* Strip prefix from the suffix */
+         NULSTR_FOREACH(p, prefixes) {
+                 if (startswith(suffix, p)) {
+                         suffix += strlen(p);
+                         suffix += strspn(suffix, "/");
+-                        return process_suffix(prefixes, suffix, nulstr_contains(have_dropins, suffix));
++                        return process_suffix(suffix);
+                 }
+         }
+@@ -548,35 +561,6 @@ static int parse_argv(int argc, char *argv[]) {
+ }
+ int main(int argc, char *argv[]) {
+-
+-        const char prefixes[] =
+-                "/etc\0"
+-                "/run\0"
+-                "/usr/local/lib\0"
+-                "/usr/local/share\0"
+-                "/usr/lib\0"
+-                "/usr/share\0"
+-#ifdef HAVE_SPLIT_USR
+-                "/lib\0"
+-#endif
+-                ;
+-
+-        const char suffixes[] =
+-                "sysctl.d\0"
+-                "tmpfiles.d\0"
+-                "modules-load.d\0"
+-                "binfmt.d\0"
+-                "systemd/system\0"
+-                "systemd/user\0"
+-                "systemd/system-preset\0"
+-                "systemd/user-preset\0"
+-                "udev/rules.d\0"
+-                "modprobe.d\0";
+-
+-        const char have_dropins[] =
+-                "systemd/system\0"
+-                "systemd/user\0";
+-
+         int r = 0, k;
+         int n_found = 0;
+@@ -595,14 +579,14 @@ int main(int argc, char *argv[]) {
+         else if (arg_diff)
+                 arg_flags |= SHOW_OVERRIDDEN;
+-        if (!arg_no_pager)
+-                pager_open(false);
++        pager_open_if_enabled();
+         if (optind < argc) {
+                 int i;
+                 for (i = optind; i < argc; i++) {
+-                        k = process_suffix_chop(prefixes, argv[i], have_dropins);
++                        path_kill_slashes(argv[i]);
++                        k = process_suffix_chop(argv[i]);
+                         if (k < 0)
+                                 r = k;
+                         else
+@@ -613,7 +597,7 @@ int main(int argc, char *argv[]) {
+                 const char *n;
+                 NULSTR_FOREACH(n, suffixes) {
+-                        k = process_suffix(prefixes, n, nulstr_contains(have_dropins, n));
++                        k = process_suffix(n);
+                         if (k < 0)
+                                 r = k;
+                         else
diff --git a/debian/patches/delta-if-prefix-is-specified-only-show-overrides-the.patch b/debian/patches/delta-if-prefix-is-specified-only-show-overrides-the.patch
new file mode 100644 (file)
index 0000000..18b0a2b
--- /dev/null
@@ -0,0 +1,252 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 22 Dec 2013 22:53:23 -0500
+Subject: delta: if prefix is specified, only show overrides there
+
+systemd-delta /run/systemd/system will show all unit overrides
+in /run, etc.
+
+(cherry picked from commit 6096dfd6167f8520be3a359c1fd0e6f2e76a4dc1)
+---
+ man/systemd-delta.xml | 80 +++++++++++++++++++++++++++++++++++++++++----------
+ src/delta/delta.c     | 71 ++++++++++++++++++++++++++++-----------------
+ 2 files changed, 109 insertions(+), 42 deletions(-)
+
+diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
+index 413ebd8..4d3ab78 100644
+--- a/man/systemd-delta.xml
++++ b/man/systemd-delta.xml
+@@ -49,7 +49,9 @@
+         <refsynopsisdiv>
+                 <cmdsynopsis>
+-                        <command>systemd-delta <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">SUFFIX</arg></command>
++                        <command>systemd-delta</command>
++                      <arg choice="opt" rep="repeat">OPTIONS</arg>
++                      <arg choice="opt" rep="repeat"><replaceable>PREFIX</replaceable><optional>/<replaceable>SUFFIX</replaceable></optional>|<replaceable>SUFFIX</replaceable></arg>
+                 </cmdsynopsis>
+         </refsynopsisdiv>
+@@ -57,18 +59,46 @@
+                 <title>Description</title>
+                 <para><command>systemd-delta</command> may be used to
+-                identify and compare configuration files in
+-                <filename>/etc</filename> that override default
+-                counterparts in <filename>/usr</filename>. The command
+-                line argument can be one or more name of a subdirectories of
+-                <filename>/etc</filename> or
+-                <filename>/usr/lib</filename> to compare, such as
+-                <filename>tmpfiles.d</filename>, <filename>sysctl.d</filename> or
+-                <filename>systemd/system</filename>.</para>
+-
+-                <para>When no argument is specified a number of
+-                well-known subdirectories are searched for overridden
+-                files.</para>
++                identify and compare configuration files that override
++                other configuration files. Files in
++                <filename>/etc</filename> have highest priority, files
++                in <filename>/run</filename> have the second highest
++                priority, ..., files in <filename>/lib</filename> have
++                lowest priority. Files in a directory with higher
++                priority override files with the same name in
++                directories of lower priority. In addition, certain
++                configuration files can have <literal>.d</literal>
++                directories which contain "drop-in" files with
++                configuration snippets which augment the main
++                configuration file. "Drop-in" files can be overriden
++                in the same way by placing files with the same name in
++                a directory of higher priority (except that in case of
++                "drop-in" files, both the "drop-in" file name and the
++                name of the containing directory, which corresponds to
++                the name of the main configuration file, must match).
++                For a fuller explanation, see
++                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++              </para>
++
++              <para>The command line argument will be split into a
++              prefix and a suffix. Either is optional. The prefix
++              must be one of the directories containing
++              configuration files (<filename>/etc</filename>,
++              <filename>/run</filename>,
++              <filename>/usr/lib</filename>, ...). If it is given,
++              only overriding files contained in this directory will
++              be shown. Otherwise, all overriding files will be
++              shown. The suffix must be a name of a subdirectory
++              containing configuration files like
++              <filename>tmpfiles.d</filename>,
++              <filename>sysctl.d</filename> or
++              <filename>systemd/system</filename>. If it is given,
++              only configuration files in this subdirectory (across
++              all configuration paths) will be analyzed. Otherwise,
++              all configuration files will be analyzed. If the
++              commandline argument is not given at all, all
++              configuration files will be analyzed. See below for
++              some examples.</para>
+         </refsect1>
+         <refsect1>
+@@ -168,9 +198,28 @@
+                         </varlistentry>
+                 </variablelist>
+-
+         </refsect1>
++      <refsect1>
++              <title>Examples</title>
++
++              <para>To see all local configuration:</para>
++              <programlisting>systemd-delta
++              </programlisting>
++
++              <para>To see all runtime configuration:</para>
++              <programlisting>systemd-delta /run
++              </programlisting>
++
++              <para>To see all system unit configuration changes:</para>
++              <programlisting>systemd-delta systemd/system
++              </programlisting>
++
++              <para>To see all runtime "drop-in" changes for system units:</para>
++              <programlisting>systemd-delta --type=extended /run/systemd/system
++              </programlisting>
++      </refsect1>
++
+         <refsect1>
+                 <title>Exit status</title>
+@@ -181,7 +230,8 @@
+         <refsect1>
+                 <title>See Also</title>
+                 <para>
+-                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+                 </para>
+         </refsect1>
+diff --git a/src/delta/delta.c b/src/delta/delta.c
+index e97f2e9..ae658f9 100644
+--- a/src/delta/delta.c
++++ b/src/delta/delta.c
+@@ -4,6 +4,7 @@
+   This file is part of systemd.
+   Copyright 2012 Lennart Poettering
++  Copyright 2013 Zbigniew Jędrzejewski-Szmek
+   systemd is free software; you can redistribute it and/or modify it
+   under the terms of the GNU Lesser General Public License as published by
+@@ -346,7 +347,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+         }
+ }
+-static int process_suffix(const char *suffix) {
++static int process_suffix(const char *suffix, const char *onlyprefix) {
+         const char *p;
+         char *f;
+         Hashmap *top, *bottom, *drops;
+@@ -391,20 +392,23 @@ static int process_suffix(const char *suffix) {
+                 o = hashmap_get(bottom, key);
+                 assert(o);
+-                if (path_equal(o, f))
+-                        notify_override_unchanged(f);
+-                else {
+-                        k = found_override(f, o);
+-                        if (k < 0)
+-                                r = k;
+-                        else
+-                                n_found += k;
++                if (!onlyprefix || startswith(o, onlyprefix)) {
++                        if (path_equal(o, f)) {
++                                notify_override_unchanged(f);
++                        } else {
++                                k = found_override(f, o);
++                                if (k < 0)
++                                        r = k;
++                                else
++                                        n_found += k;
++                        }
+                 }
+                 h = hashmap_get(drops, key);
+                 if (h)
+                         HASHMAP_FOREACH(o, h, j)
+-                                n_found += notify_override_extended(f, o);
++                                if (!onlyprefix || startswith(o, onlyprefix))
++                                        n_found += notify_override_extended(f, o);
+         }
+ finish:
+@@ -423,24 +427,41 @@ finish:
+         return r < 0 ? r : n_found;
+ }
+-static int process_suffix_chop(const char *suffix) {
++static int process_suffixes(const char *onlyprefix) {
++        const char *n;
++        int n_found = 0, r;
++
++        NULSTR_FOREACH(n, suffixes) {
++                r = process_suffix(n, onlyprefix);
++                if (r < 0)
++                        return r;
++                else
++                        n_found += r;
++        }
++        return n_found;
++}
++
++static int process_suffix_chop(const char *arg) {
+         const char *p;
+-        assert(suffix);
++        assert(arg);
+-        if (!path_is_absolute(suffix))
+-                return process_suffix(suffix);
++        if (!path_is_absolute(arg))
++                return process_suffix(arg, NULL);
+         /* Strip prefix from the suffix */
+         NULSTR_FOREACH(p, prefixes) {
+-                if (startswith(suffix, p)) {
+-                        suffix += strlen(p);
++                const char *suffix = startswith(arg, p);
++                if (suffix) {
+                         suffix += strspn(suffix, "/");
+-                        return process_suffix(suffix);
++                        if (*suffix)
++                                return process_suffix(suffix, NULL);
++                        else
++                                return process_suffixes(arg);
+                 }
+         }
+-        log_error("Invalid suffix specification %s.", suffix);
++        log_error("Invalid suffix specification %s.", arg);
+         return -EINVAL;
+ }
+@@ -594,15 +615,11 @@ int main(int argc, char *argv[]) {
+                 }
+         } else {
+-                const char *n;
+-
+-                NULSTR_FOREACH(n, suffixes) {
+-                        k = process_suffix(n);
+-                        if (k < 0)
+-                                r = k;
+-                        else
+-                                n_found += k;
+-                }
++                k = process_suffixes(NULL);
++                if (k < 0)
++                        r = k;
++                else
++                        n_found += k;
+         }
+         if (r >= 0)
diff --git a/debian/patches/delta-replace-readdir_r-with-readdir.patch b/debian/patches/delta-replace-readdir_r-with-readdir.patch
new file mode 100644 (file)
index 0000000..cefb498
--- /dev/null
@@ -0,0 +1,31 @@
+From: Florian Weimer <fweimer@redhat.com>
+Date: Thu, 19 Dec 2013 11:16:12 +0100
+Subject: delta: replace readdir_r with readdir
+
+(cherry picked from commit 6887ec4f00d7c10cd70da3e10d570684bf32d28d)
+---
+ src/delta/delta.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/delta/delta.c b/src/delta/delta.c
+index b3272d9..fd024fc 100644
+--- a/src/delta/delta.c
++++ b/src/delta/delta.c
+@@ -280,13 +280,13 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
+         for (;;) {
+                 struct dirent *de;
+-                union dirent_storage buf;
+                 int k;
+                 char *p;
+-                k = readdir_r(d, &buf.de, &de);
+-                if (k != 0)
+-                        return -k;
++                errno = 0;
++                de = readdir(d);
++                if (!de && errno != 0)
++                        return -errno;
+                 if (!de)
+                         break;
diff --git a/debian/patches/detect_virtualization-returns-NULL-pass-empty-string.patch b/debian/patches/detect_virtualization-returns-NULL-pass-empty-string.patch
new file mode 100644 (file)
index 0000000..e4a7924
--- /dev/null
@@ -0,0 +1,30 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Sat, 2 Nov 2013 00:01:32 +0100
+Subject: detect_virtualization() returns NULL; pass empty string to dbus
+
+---
+ src/core/dbus-manager.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
+index 8f4d017..536f2ea 100644
+--- a/src/core/dbus-manager.c
++++ b/src/core/dbus-manager.c
+@@ -466,7 +466,7 @@ static int bus_manager_append_progress(DBusMessageIter *i, const char *property,
+ static int bus_manager_append_virt(DBusMessageIter *i, const char *property, void *data) {
+         Manager *m = data;
+-        const char *id = "";
++        const char *id = NULL;
+         assert(i);
+         assert(property);
+@@ -474,6 +474,8 @@ static int bus_manager_append_virt(DBusMessageIter *i, const char *property, voi
+         detect_virtualization(&id);
++        if (!id)
++                id = "";
+         if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &id))
+                 return -ENOMEM;
diff --git a/debian/patches/do-not-accept-garbage-from-acpi-firmware-performance.patch b/debian/patches/do-not-accept-garbage-from-acpi-firmware-performance.patch
new file mode 100644 (file)
index 0000000..4739a22
--- /dev/null
@@ -0,0 +1,28 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Thu, 10 Oct 2013 01:38:11 +0200
+Subject: do not accept "garbage" from acpi firmware performance data (FPDT)
+
+00000000  46 42 50 54 38 00 00 00  02 00 30 02 00 00 00 00  |FBPT8.....0.....|
+00000010  23 45 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |#E..............|
+00000020  f5 6a 51 00 00 00 00 00  00 00 00 00 00 00 00 00  |.jQ.............|
+00000030  00 00 00 00 00 00 00 00  70 74 61 6c 58 00 00 00  |........ptalX...|
+---
+ src/shared/acpi-fpdt.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
+index af58c7c..75648b4 100644
+--- a/src/shared/acpi-fpdt.c
++++ b/src/shared/acpi-fpdt.c
+@@ -146,6 +146,11 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
+         if (brec.type != ACPI_FPDT_BOOT_REC)
+                 return -EINVAL;
++        if (brec.startup_start == 0 || brec.exit_services_exit < brec.startup_start)
++                return -EINVAL;
++        if (brec.exit_services_exit > NSEC_PER_HOUR)
++                return -EINVAL;
++
+         if (loader_start)
+                 *loader_start = brec.startup_start / 1000;
+         if (loader_exit)
diff --git a/debian/patches/doc-choose-different-words-to-improve-clarity.patch b/debian/patches/doc-choose-different-words-to-improve-clarity.patch
new file mode 100644 (file)
index 0000000..4d771d6
--- /dev/null
@@ -0,0 +1,130 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Mon, 17 Feb 2014 02:49:45 +0100
+Subject: doc: choose different words to improve clarity
+
+I suggest the following changes to improve the way the text reads
+("flows").
+
+(cherry picked from commit dc968941bfc9be464e1df15afa05693dec3ec192)
+
+Conflicts:
+       man/crypttab.xml
+       man/sd_bus_creds_get_pid.xml
+       man/sd_bus_message_get_monotonic_usec.xml
+---
+ man/crypttab.xml                      |  4 +-
+ src/journal/systemd-journal-feeder.py | 83 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 85 insertions(+), 2 deletions(-)
+ create mode 100644 src/journal/systemd-journal-feeder.py
+
+diff --git a/man/crypttab.xml b/man/crypttab.xml
+index 5f386e5..4b6d12e 100644
+--- a/man/crypttab.xml
++++ b/man/crypttab.xml
+@@ -171,7 +171,7 @@
+                                 If the key slot does not match the given
+                                 passphrase or key, but another would, the
+                                 setup of the device will fail regardless.
+-                                This implies <varname>luks</varname>. See
++                                This option implies <varname>luks</varname>. See
+                                 <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+                                 for possible values. The default is to try
+                                 all key slots in sequential order.</para></listitem>
+@@ -275,7 +275,7 @@
+                                 <term><varname>tcrypt-hidden</varname></term>
+                                 <listitem><para>Use the hidden TrueCrypt volume.
+-                                This implies <varname>tcrypt</varname>.</para>
++                                This option implies <varname>tcrypt</varname>.</para>
+                                 <para>This will map the hidden volume that is
+                                 inside of the volume provided in the second
+diff --git a/src/journal/systemd-journal-feeder.py b/src/journal/systemd-journal-feeder.py
+new file mode 100644
+index 0000000..5cfab82
+--- /dev/null
++++ b/src/journal/systemd-journal-feeder.py
+@@ -0,0 +1,83 @@
++import argparse
++import subprocess
++import collections
++import struct
++from systemd import journal
++
++options = argparse.ArgumentParser()
++options.add_argument('-H', '--host', default='localhost')
++options.add_argument('-p', '--port', default=19531)
++options.add_argument('-b', '--boot', default='no',
++                     action='store_const', const='yes')
++options.add_argument('-f', '--follow', default='no',
++                     action='store_const', const='yes')
++options.add_argument('-s', '--submit', action='store_true')
++
++def spawn_curl(host, port, boot, follow):
++    "Spawn curl to get events from systemd-journal-gatewayd"
++    url = 'http://{host}:{port}/entries?follow={follow}&boot={boot}'.format(
++        host=host, port=port, follow=follow, boot=boot)
++    cmdline = ['curl', '-HAccept: application/vnd.fdo.journal',
++               '--silent', '--show-error',
++               url]
++    child = subprocess.Popen(cmdline,
++                             stdin=subprocess.DEVNULL,
++                             stdout=subprocess.PIPE)
++    return child
++
++def _read_one(inp):
++    fields = collections.OrderedDict()
++
++    while inp:
++        line = inp.readline()
++        line = line[:-1] # remove newline
++        if not line:
++            break
++        left, split, right = line.partition(b'=')
++        name = left.decode('ascii')
++        if split:
++            value = right.decode()
++        else:
++            flen_ = inp.read(8)
++            flen = struct.unpack('<lL', flen_)[0]
++            value = inp.read(flen)
++            newline = inp.read(1)
++            assert newline == b'\n', newline
++            name = name[:-1]
++        fields[name] = value
++
++    return fields
++
++def split_stream(stream):
++    "Parse journal events from stream"
++    while stream:
++        fields = _read_one(stream)
++        yield fields
++
++def cat_events(stream):
++    for event in split_stream(stream):
++        print('event MESSAGE=' + event.get('MESSAGE', '(no message)')
++              + ' ' + ','.join(event.keys()))
++
++def push_events(stream):
++    i = 0
++    for event in split_stream(stream):
++        #print(event)
++        v = [key.encode('utf-8') + b'=' + val
++             if isinstance(val, bytes)
++             else key + '=' + val
++             for key,val in event.items()]
++        print('\n'.join(v))
++        journal.sendv(*v)
++        i += 1
++        if i == 1:
++                break
++
++if __name__ == '__main__':
++    args = options.parse_args()
++    curl = spawn_curl(args.host, args.port,
++                      args.boot, args.follow)
++    if args.submit:
++        push_events(curl.stdout)
++    else:
++        cat_events(curl.stdout)
diff --git a/debian/patches/doc-properly-use-XML-entities.patch b/debian/patches/doc-properly-use-XML-entities.patch
new file mode 100644 (file)
index 0000000..a4cb401
--- /dev/null
@@ -0,0 +1,25 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Mon, 17 Feb 2014 03:58:37 +0100
+Subject: doc: properly use XML entities
+
+(cherry picked from commit 3c8fa0fd0f99996088e42c5d48e164fdae4ada40)
+
+Conflicts:
+       man/sd_bus_error.xml
+---
+ man/localtime.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/localtime.xml b/man/localtime.xml
+index b7fd1ba..dbf2379 100644
+--- a/man/localtime.xml
++++ b/man/localtime.xml
+@@ -55,7 +55,7 @@
+         </refnamediv>
+         <refsynopsisdiv>
+-                <para><filename>/etc/localtime</filename> -> <filename>../usr/share/zoneinfo/…</filename></para>
++                <para><filename>/etc/localtime</filename> -&gt; <filename>../usr/share/zoneinfo/…</filename></para>
+         </refsynopsisdiv>
+         <refsect1>
diff --git a/debian/patches/doc-resolve-missing-extraneous-words-or-inappropriat.patch b/debian/patches/doc-resolve-missing-extraneous-words-or-inappropriat.patch
new file mode 100644 (file)
index 0000000..46a2f9c
--- /dev/null
@@ -0,0 +1,243 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Mon, 17 Feb 2014 03:37:18 +0100
+Subject: doc: resolve missing/extraneous words or inappropriate forms
+
+Issues fixed:
+* missing words required by grammar
+* duplicated or extraneous words
+* inappropriate forms (e.g. singular/plural), and declinations
+* orthographic misspellings
+
+(cherry picked from commit 66f756d437658cc464bfb5647c97efd0cf77f933)
+
+Conflicts:
+       man/pam_systemd.xml
+       man/sd_bus_creds_get_pid.xml
+       man/sd_bus_error.xml
+       man/sd_bus_open_user.xml
+       man/systemctl.xml
+       man/systemd-nspawn.xml
+       man/systemd-system.conf.xml
+       man/systemd.exec.xml
+       man/udev.xml
+---
+ man/busctl.xml                   | 2 +-
+ man/journalctl.xml               | 2 +-
+ man/journald.conf.xml            | 6 +++---
+ man/machine-info.xml             | 6 +++---
+ man/sd_journal_print.xml         | 2 +-
+ man/systemd-coredumpctl.xml      | 2 +-
+ man/systemd-journald.service.xml | 4 ++--
+ man/systemd-system.conf.xml      | 2 +-
+ man/systemd-udevd.service.xml    | 4 ++--
+ man/systemd.exec.xml             | 2 +-
+ man/systemd.journal-fields.xml   | 2 +-
+ man/systemd.socket.xml           | 6 +++---
+ 12 files changed, 20 insertions(+), 20 deletions(-)
+
+diff --git a/man/busctl.xml b/man/busctl.xml
+index 0c5f05a..854eb38 100644
+--- a/man/busctl.xml
++++ b/man/busctl.xml
+@@ -151,7 +151,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+           <term><option>--activatable</option></term>
+           <listitem><para>When showing the list of endpoints, show
+-          only endpoints which haven't actually been activated yet,
++          only endpoints which have actually not been activated yet,
+           but may be started automatically if accessed.</para>
+           </listitem>
+       </varlistentry>
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index b695b3d..623d966 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -370,7 +370,7 @@
+                                                         terse output only
+                                                         showing the actual
+                                                         message of each journal
+-                                                        entry with no meta data,
++                                                        entry with no metadata,
+                                                         not even a timestamp.
+                                                         </para>
+                                                 </listitem>
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index e0796e1..27c326e 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -269,12 +269,12 @@
+                                 violated when systemd-journald is
+                                 started, the value will be raised to
+                                 percentage that is actually free. This
+-                                means that if before there was enough
+-                                free space and journal files were
++                                means that if there was enough
++                                free space before and journal files were
+                                 created, and subsequently something
+                                 else causes the file system to fill
+                                 up, journald will stop using more
+-                                space, but it'll will not removing
++                                space, but it will not be removing
+                                 existing files to go reduce footprint
+                                 either.</para>
+diff --git a/man/machine-info.xml b/man/machine-info.xml
+index ddf8f8b..7448e68 100644
+--- a/man/machine-info.xml
++++ b/man/machine-info.xml
+@@ -55,7 +55,7 @@
+                 <title>Description</title>
+                 <para>The <filename>/etc/machine-info</filename> file
+-                contains machine meta data.</para>
++                contains machine metadata.</para>
+                 <para>The basic file format of
+                 <filename>machine-info</filename> is a
+@@ -68,7 +68,7 @@
+                 execution engine.</para>
+                 <para><filename>/etc/machine-info</filename> contains
+-                meta data about the machine that is set by the user or
++                metadata about the machine that is set by the user or
+                 administrator.</para>
+                 <para>Depending on the operating system other
+@@ -84,7 +84,7 @@
+         <refsect1>
+                 <title>Options</title>
+-                <para>The following machine meta data parameters may
++                <para>The following machine metadata parameters may
+                 be set using
+                 <filename>/etc/machine-info</filename>:</para>
+diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
+index a716cc3..871baff 100644
+--- a/man/sd_journal_print.xml
++++ b/man/sd_journal_print.xml
+@@ -203,7 +203,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
+                 be guaranteed. Using
+                 <function>sd_journal_print()</function> has the
+                 benefit of logging source code line, filenames, and
+-                functions as meta data along all entries, and
++                functions as metadata along all entries, and
+                 guaranteeing chronological ordering with structured
+                 log entries that are generated via
+                 <function>sd_journal_send()</function>. Using
+diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml
+index 286ff14..4318a2f 100644
+--- a/man/systemd-coredumpctl.xml
++++ b/man/systemd-coredumpctl.xml
+@@ -135,7 +135,7 @@
+                                 <listitem><para>Extract the last coredump
+                                 matching specified characteristics.
+-                                Coredump will be written on standard output,
++                                The coredump will be written on standard output,
+                                 unless an output file is specified with
+                                 <option>-o/--output</option>.
+                                 </para></listitem>
+diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml
+index 0a20e21..4d2cb40 100644
+--- a/man/systemd-journald.service.xml
++++ b/man/systemd-journald.service.xml
+@@ -66,10 +66,10 @@
+                 <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 call, from standard input and standard error of system
+                 services or via its native API. It will implicitly
+-                collect numerous meta data fields for each log
++                collect numerous metadata fields for each log
+                 messages in a secure and unfakeable way. See
+                 <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+-                for more information about the collected meta data.
++                for more information about the collected metadata.
+                 </para>
+                 <para>Log data collected by the journal is primarily
+diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
+index 9a1a99f..6f36930 100644
+--- a/man/systemd-system.conf.xml
++++ b/man/systemd-system.conf.xml
+@@ -135,7 +135,7 @@
+                                 <listitem><para>Configures the initial
+                                 CPU affinity for the init
+                                 process. Takes a space-separated list
+-                                of CPU indexes.</para></listitem>
++                                of CPU indices.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml
+index 0e49fa0..bb04694 100644
+--- a/man/systemd-udevd.service.xml
++++ b/man/systemd-udevd.service.xml
+@@ -83,7 +83,7 @@
+         <term><option>--exec-delay=</option></term>
+         <listitem>
+           <para>Delay the execution of <varname>RUN</varname>
+-          instruction by the given number of seconds. This option
++          instructions by the given number of seconds. This option
+           might be useful when debugging system crashes during
+           coldplug caused by loading non-working kernel
+           modules.</para>
+@@ -148,7 +148,7 @@
+         <term><varname>udev.exec-delay=</varname></term>
+         <term><varname>rd.udev.exec-delay=</varname></term>
+         <listitem>
+-          <para>Delay the execution of RUN instruction by the given
++          <para>Delay the execution of RUN instructions by the given
+           number of seconds. This option might be useful when
+           debugging system crashes during coldplug caused by loading
+           non-working kernel modules.</para>
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index ae134f2..630a28c 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -248,7 +248,7 @@
+                                 <listitem><para>Controls the CPU
+                                 affinity of the executed
+                                 processes. Takes a space-separated
+-                                list of CPU indexes. This option may
++                                list of CPU indices. This option may
+                                 be specified more than once in which
+                                 case the specificed CPU affinity masks
+                                 are merged. If the empty string is
+diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
+index bb89ed5..b492aae 100644
+--- a/man/systemd.journal-fields.xml
++++ b/man/systemd.journal-fields.xml
+@@ -529,7 +529,7 @@
+                 JSON Format</ulink>, the addresses of journal entries
+                 are serialized into fields prefixed with double
+                 underscores. Note that these are not proper fields when
+-                stored in the journal but for addressing meta data of
++                stored in the journal but for addressing metadata of
+                 entries. They cannot be written as part of structured
+                 log entries via calls such as
+                 <citerefentry><refentrytitle>sd_journal_send</refentrytitle><manvolnum>3</manvolnum></citerefentry>. They
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index 3e1dd88..67267b2 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -90,9 +90,9 @@
+                 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+                 for more information about .service files). The name
+                 of the .service unit is by default the same as the
+-                name of the .socket unit, but can be altered with
++                name of the .socket unit, but can be altered with the
+                 <option>Service=</option> option described below.
+-                Depending on the setting of <option>Accept=</option>
++                Depending on the setting of the <option>Accept=</option>
+                 option described below, this .service unit must either
+                 be named like the .socket unit, but with the suffix
+                 replaced, unless overridden with
+@@ -135,7 +135,7 @@
+                 <para>Socket units may be used to implement on-demand
+                 starting of services, as well as parallelized starting
+                 of services. See the blog stories linked at the end
+-                for introduction.</para>
++                for an introduction.</para>
+                 <para>Note that the daemon software configured for
+                 socket activation with socket units needs to be able
diff --git a/debian/patches/doc-update-punctuation.patch b/debian/patches/doc-update-punctuation.patch
new file mode 100644 (file)
index 0000000..06cb242
--- /dev/null
@@ -0,0 +1,277 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Mon, 17 Feb 2014 03:37:13 +0100
+Subject: doc: update punctuation
+
+Resolve spotted issues related to missing or extraneous commas, dashes.
+
+(cherry picked from commit 73e231abde39f22097df50542c745e01de879836)
+
+Conflicts:
+       man/journalctl.xml
+       man/sd_bus_error.xml
+       man/sd_bus_new.xml
+       man/systemctl.xml
+       man/systemd-networkd.service.xml
+       man/systemd-nspawn.xml
+       man/systemd-system.conf.xml
+       man/systemd.exec.xml
+       man/systemd.kill.xml
+       man/systemd.service.xml
+       man/systemd.timer.xml
+       src/backlight/backlight.c
+       src/core/cgroup.c
+       src/libsystemd/sd-bus/bus-kernel.c
+---
+ man/journalctl.xml                |  1 +
+ man/systemd-cat.xml               |  2 +-
+ man/systemd-udevd.service.xml     |  6 +++---
+ man/systemd.service.xml           | 42 +++++++++++++++++++--------------------
+ man/systemd.socket.xml            |  6 +++---
+ man/systemd.special.xml           |  2 +-
+ man/systemd.xml                   |  2 +-
+ rules/60-persistent-storage.rules |  2 +-
+ src/journal/journalctl.c          |  2 +-
+ src/journal/sd-journal.c          |  4 ++--
+ src/shared/cgroup-util.c          |  4 ++--
+ src/udev/udev-builtin-usb_id.c    |  4 ++--
+ 12 files changed, 39 insertions(+), 38 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index d75c758..b695b3d 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -509,6 +509,7 @@
+                                 and additional matches for messages
+                                 from systemd and messages about
+                                 coredumps for the specified unit.</para>
++
+                                 <para>This parameter can be specified multiple times.
+                                 </para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml
+index 16a8eb4..e61a6ac 100644
+--- a/man/systemd-cat.xml
++++ b/man/systemd-cat.xml
+@@ -189,7 +189,7 @@
+                 <para>Even though the two examples have very similar
+                 effects the first is preferable since only one process
+                 is running at a time, and both stdout and stderr are
+-                captured while in the second example only stdout is
++                captured while in the second example, only stdout is
+                 captured.</para>
+         </refsect1>
+diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml
+index b3bca2f..0e49fa0 100644
+--- a/man/systemd-udevd.service.xml
++++ b/man/systemd-udevd.service.xml
+@@ -93,10 +93,10 @@
+         <term><option>--resolve-names=</option></term>
+         <listitem>
+           <para>Specify when systemd-udevd should resolve names of users and groups.
+-          When set to <option>early</option> (the default) names will be
++          When set to <option>early</option> (the default), names will be
+           resolved when the rules are parsed.  When set to
+-          <option>late</option> names will be resolved for every event.
+-          When set to <option>never</option> names will never be resolved
++          <option>late</option>, names will be resolved for every event.
++          When set to <option>never</option>, names will never be resolved
+           and all devices will be owned by root.</para>
+         </listitem>
+       </varlistentry>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 0f4be71..4d672f0 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -748,27 +748,27 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 definitions can either be numeric exit
+                                 codes or termination signal names,
+                                 separated by spaces. For example:
+-                              <programlisting>SuccessExitStatus=1 2 8 <constant>SIGKILL</constant></programlisting>
+-                              ensures that exit codes 1, 2, 8 and
+-                              the termination signal
+-                              <constant>SIGKILL</constant> are
+-                              considered clean service terminations.
+-                              </para>
+-
+-                              <para>Note that if a process has a
+-                              signal handler installed and exits by
+-                              calling
+-                              <citerefentry><refentrytitle>_exit</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+-                              in response to a signal, the
+-                              information about the signal is lost.
+-                              Programs should instead perform cleanup and kill themselves with the same signal instead. See
+-                              <ulink url="http://www.cons.org/cracauer/sigint.html">Proper handling of SIGINT/SIGQUIT — How to be a proper program</ulink>.</para>
+-
+-                              <para>This option may appear more than once
+-                              in which case the list of successful
+-                              exit statuses is merged. If the empty
+-                              string is assigned to this option, the
+-                              list is reset, all prior assignments
++                                <programlisting>SuccessExitStatus=1 2 8 <constant>SIGKILL</constant></programlisting>
++                                ensures that exit codes 1, 2, 8 and
++                                the termination signal
++                                <constant>SIGKILL</constant> are
++                                considered clean service terminations.
++                                </para>
++
++                                <para>Note that if a process has a
++                                signal handler installed and exits by
++                                calling
++                                <citerefentry><refentrytitle>_exit</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++                                in response to a signal, the
++                                information about the signal is lost.
++                                Programs should instead perform cleanup and kill themselves with the same signal instead. See
++                                <ulink url="http://www.cons.org/cracauer/sigint.html">Proper handling of SIGINT/SIGQUIT — How to be a proper program</ulink>.</para>
++
++                                <para>This option may appear more than once,
++                                in which case the list of successful
++                                exit statuses is merged. If the empty
++                                string is assigned to this option, the
++                                list is reset, all prior assignments
+                                 of this option will have no
+                                 effect.</para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index 39fba51..3e1dd88 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -84,7 +84,7 @@
+                 which configure resource control settings for the
+                 processes of the socket.</para>
+-                <para>For each socket file a matching service file
++                <para>For each socket file, a matching service file
+                 must exist, describing the service to start on
+                 incoming traffic on the socket (see
+                 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+@@ -254,7 +254,7 @@
+                                 before the interface it is configured
+                                 on is up and running, and even
+                                 regardless of whether it will be up and
+-                                running at any point. To deal with this
++                                running at any point. To deal with this,
+                                 it is recommended to set the
+                                 <varname>FreeBind=</varname> option
+                                 described below.</para></listitem>
+@@ -720,7 +720,7 @@
+                                 <varname>Accept=no</varname>. It
+                                 defaults to the service that bears the
+                                 same name as the socket (with the
+-                                suffix replaced). In most cases it
++                                suffix replaced). In most cases, it
+                                 should not be necessary to use this
+                                 option.</para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd.special.xml b/man/systemd.special.xml
+index 76bb5cd..8ccccc2 100644
+--- a/man/systemd.special.xml
++++ b/man/systemd.special.xml
+@@ -820,7 +820,7 @@
+                 services. These targets are generally not part of the
+                 initial boot transaction, unless they are explicitly
+                 pulled in by one of the implementing services. Note
+-                specifically, that these <emphasis>passive</emphasis>
++                specifically that these <emphasis>passive</emphasis>
+                 target units are generally not pulled in by the
+                 consumer of a service, but by the provider of the
+                 service. This means: a consuming service should order
+diff --git a/man/systemd.xml b/man/systemd.xml
+index 23a0c26..76d977d 100644
+--- a/man/systemd.xml
++++ b/man/systemd.xml
+@@ -407,7 +407,7 @@
+                 and ordering dependencies are placed between two
+                 units. Also note that the majority of dependencies are
+                 implicitly created and maintained by systemd. In most
+-                cases it should be unnecessary to declare additional
++                cases, it should be unnecessary to declare additional
+                 dependencies manually, however it is possible to do
+                 this.</para>
+diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
+index 154ffd9..4f7163d 100644
+--- a/rules/60-persistent-storage.rules
++++ b/rules/60-persistent-storage.rules
+@@ -33,7 +33,7 @@ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{type}==
+ # Run ata_id on non-removable USB Mass Storage (SATA/PATA disks in enclosures)
+ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", ATTR{removable}=="0", SUBSYSTEMS=="usb", IMPORT{program}="ata_id --export $devnode"
+-# Otherwise fall back to using usb_id for USB devices
++# Otherwise, fall back to using usb_id for USB devices
+ KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", IMPORT{builtin}="usb_id"
+ # scsi devices
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index ccd96b2..5b0be27 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -715,7 +715,7 @@ static int add_matches(sd_journal *j, char **args) {
+                                         t = strappend("_COMM=", comm);
+                                         /* Append _EXE only if the interpreter is not a link.
+-                                           Otherwise it might be outdated often. */
++                                           Otherwise, it might be outdated often. */
+                                         if (lstat(interpreter, &st) == 0 &&
+                                             !S_ISLNK(st.st_mode)) {
+                                                 t2 = strappend("_EXE=", interpreter);
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 46c3feb..f4af1f6 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -472,7 +472,7 @@ static int compare_entry_order(JournalFile *af, Object *_ao,
+         if (sd_id128_equal(ao->entry.boot_id, bo->entry.boot_id)) {
+-                /* If the boot id matches compare monotonic time */
++                /* If the boot id matches, compare monotonic time */
+                 a = le64toh(ao->entry.monotonic);
+                 b = le64toh(bo->entry.monotonic);
+@@ -482,7 +482,7 @@ static int compare_entry_order(JournalFile *af, Object *_ao,
+                         return 1;
+         }
+-        /* Otherwise compare UTC time */
++        /* Otherwise, compare UTC time */
+         a = le64toh(ao->entry.realtime);
+         b = le64toh(bo->entry.realtime);
+diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c
+index 8a4edda..3c64e62 100644
+--- a/src/shared/cgroup-util.c
++++ b/src/shared/cgroup-util.c
+@@ -1115,7 +1115,7 @@ int cg_mangle_path(const char *path, char **result) {
+         assert(path);
+         assert(result);
+-        /* First check if it already is a filesystem path */
++        /* First, check if it already is a filesystem path */
+         if (path_startswith(path, "/sys/fs/cgroup")) {
+                 t = strdup(path);
+@@ -1127,7 +1127,7 @@ int cg_mangle_path(const char *path, char **result) {
+                 return 0;
+         }
+-        /* Otherwise treat it as cg spec */
++        /* Otherwise, treat it as cg spec */
+         r = cg_split_spec(path, &c, &p);
+         if (r < 0)
+                 return r;
+diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c
+index 1b9f824..883e11e 100644
+--- a/src/udev/udev-builtin-usb_id.c
++++ b/src/udev/udev-builtin-usb_id.c
+@@ -219,9 +219,9 @@ static int dev_if_packed_info(struct udev_device *dev, char *ifs_str, size_t len
+  * A unique USB identification is generated like this:
+  *
+  * 1.) Get the USB device type from InterfaceClass and InterfaceSubClass
+- * 2.) If the device type is 'Mass-Storage/SPC-2' or 'Mass-Storage/RBC'
++ * 2.) If the device type is 'Mass-Storage/SPC-2' or 'Mass-Storage/RBC',
+  *     use the SCSI vendor and model as USB-Vendor and USB-model.
+- * 3.) Otherwise use the USB manufacturer and product as
++ * 3.) Otherwise, use the USB manufacturer and product as
+  *     USB-Vendor and USB-model. Any non-printable characters
+  *     in those strings will be skipped; a slash '/' will be converted
+  *     into a full stop '.'.
diff --git a/debian/patches/docs-remove-unneeded-the-s-in-gudev-docs.patch b/debian/patches/docs-remove-unneeded-the-s-in-gudev-docs.patch
new file mode 100644 (file)
index 0000000..5fcac46
--- /dev/null
@@ -0,0 +1,37 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 30 Nov 2013 20:27:54 -0500
+Subject: docs: remove unneeded the's in gudev docs
+
+https://bugs.freedesktop.org/show_bug.cgi?id=72164
+---
+ src/libudev/libudev-device.c | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
+index a644904..161181a 100644
+--- a/src/libudev/libudev-device.c
++++ b/src/libudev/libudev-device.c
+@@ -980,9 +980,8 @@ static struct udev_device *device_new_from_parent(struct udev_device *udev_devic
+  * Find the next parent device, and fill in information from the sys
+  * device and the udev database entry.
+  *
+- * The returned the device is not referenced. It is attached to the
+- * child device, and will be cleaned up when the child device
+- * is cleaned up.
++ * Returned device is not referenced. It is attached to the child
++ * device, and will be cleaned up when the child device is cleaned up.
+  *
+  * It is not necessarily just the upper level directory, empty or not
+  * recognized sys directories are ignored.
+@@ -1016,9 +1015,8 @@ _public_ struct udev_device *udev_device_get_parent(struct udev_device *udev_dev
+  * If devtype is #NULL, only subsystem is checked, and any devtype will
+  * match.
+  *
+- * The returned the device is not referenced. It is attached to the
+- * child device, and will be cleaned up when the child device
+- * is cleaned up.
++ * Returned device is not referenced. It is attached to the child
++ * device, and will be cleaned up when the child device is cleaned up.
+  *
+  * It can be called as many times as needed, without caring about
+  * references.
diff --git a/debian/patches/drop-ins-check-return-value.patch b/debian/patches/drop-ins-check-return-value.patch
new file mode 100644 (file)
index 0000000..8af8645
--- /dev/null
@@ -0,0 +1,25 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 11 Oct 2013 19:33:36 -0400
+Subject: drop-ins: check return value
+
+If the function failed, nothing serious would happen
+because unlink would probably return EFAULT, but this
+would obscure the real error and is a bit sloppy.
+---
+ src/core/unit.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 4b97710..1db7d06 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2908,6 +2908,9 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) {
+                 return 0;
+         r = drop_in_file(u, mode, name, &p, &q);
++        if (r < 0)
++                return r;
++
+         if (unlink(q) < 0)
+                 r = errno == ENOENT ? 0 : -errno;
+         else
diff --git a/debian/patches/drop-several-entries-from-kbd-model-map-whose-kbd-la.patch b/debian/patches/drop-several-entries-from-kbd-model-map-whose-kbd-la.patch
new file mode 100644 (file)
index 0000000..75d1550
--- /dev/null
@@ -0,0 +1,85 @@
+From: Adam Williamson <awilliam@redhat.com>
+Date: Mon, 9 Dec 2013 21:58:34 -0800
+Subject: drop several entries from kbd-model-map whose kbd layouts do not
+ exist
+
+kbd-model-map was generated from system-config-keyboard's keyboard_models.py.
+Several of the kbd layouts referred in that file do not exist and, so far as I
+can tell, never did. I believe these entries existed simply to provide the xkb
+configuration information for those layouts, and there never were matching kbd
+entries; the kbd names were entirely notional, to satisfy the need for some
+entry or other in that field.
+
+For systemd, the only function of kbd-model-map is to 'match' kbd and xkb
+configurations, so it does not make any sense to maintain entries for cases
+where only one or the other exists in this context.
+
+(cherry picked from commit 70dc36d17fbd81eead01fb73cc231c83c6d977e9)
+---
+ src/locale/kbd-model-map | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map
+index 1fe9bca..78c7887 100644
+--- a/src/locale/kbd-model-map
++++ b/src/locale/kbd-model-map
+@@ -4,22 +4,18 @@ sg                   ch      pc105           de_nodeadkeys   terminate:ctrl_alt_bksp
+ nl                    nl      pc105           -               terminate:ctrl_alt_bksp
+ mk-utf                        mk,us   pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ trq                   tr      pc105           -               terminate:ctrl_alt_bksp
+-guj                   in,us   pc105           guj             terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ uk                    gb      pc105           -               terminate:ctrl_alt_bksp
+ is-latin1             is      pc105           -               terminate:ctrl_alt_bksp
+ de                    de      pc105           -               terminate:ctrl_alt_bksp
+-gur                   gur,us  pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ la-latin1             latam   pc105           -               terminate:ctrl_alt_bksp
+ us                    us      pc105+inet      -               terminate:ctrl_alt_bksp
+ ko                    kr      pc105           -               terminate:ctrl_alt_bksp
+ ro-std                        ro      pc105           std             terminate:ctrl_alt_bksp
+ de-latin1             de      pc105           -               terminate:ctrl_alt_bksp
+-tml-inscript          in,us   pc105           tam             terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ slovene                       si      pc105           -               terminate:ctrl_alt_bksp
+ hu101                 hu      pc105           qwerty          terminate:ctrl_alt_bksp
+ jp106                 jp      jp106           -               terminate:ctrl_alt_bksp
+ croat                 hr      pc105           -               terminate:ctrl_alt_bksp
+-ben-probhat           in,us   pc105           ben_probhat     terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ fi-latin1             fi      pc105           -               terminate:ctrl_alt_bksp
+ it2                   it      pc105           -               terminate:ctrl_alt_bksp
+ hu                    hu      pc105           -               terminate:ctrl_alt_bksp
+@@ -29,7 +25,6 @@ fr_CH                        ch      pc105           fr              terminate:ctrl_alt_bksp
+ dk-latin1             dk      pc105           -               terminate:ctrl_alt_bksp
+ fr                    fr      pc105           -               terminate:ctrl_alt_bksp
+ it                    it      pc105           -               terminate:ctrl_alt_bksp
+-tml-uni                       in,us   pc105           tam_TAB         terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ ua-utf                        ua,us   pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ fr-latin1             fr      pc105           -               terminate:ctrl_alt_bksp
+ sg-latin1             ch      pc105           de_nodeadkeys   terminate:ctrl_alt_bksp
+@@ -39,16 +34,12 @@ fr-pc                      fr      pc105           -               terminate:ctrl_alt_bksp
+ bg_pho-utf8           bg,us   pc105           ,phonetic       terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ it-ibm                        it      pc105           -               terminate:ctrl_alt_bksp
+ cz-us-qwertz          cz,us   pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+-ar-digits             ara,us  pc105           digits          terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ br-abnt2              br      abnt2           -               terminate:ctrl_alt_bksp
+ ro                    ro      pc105           -               terminate:ctrl_alt_bksp
+ us-acentos            us      pc105           intl            terminate:ctrl_alt_bksp
+ pt-latin1             pt      pc105           -               terminate:ctrl_alt_bksp
+ ro-std-cedilla                ro      pc105           std_cedilla     terminate:ctrl_alt_bksp
+ tj                    tj      pc105           -               terminate:ctrl_alt_bksp
+-ar-qwerty             ara,us  pc105           qwerty          terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+-ar-azerty-digits      ara,us  pc105           azerty_digits   terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+-ben                   in,us   pc105           ben             terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ de-latin1-nodeadkeys  de      pc105           nodeadkeys      terminate:ctrl_alt_bksp
+ no                    no      pc105           -               terminate:ctrl_alt_bksp
+ bg_bds-utf8           bg,us   pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+@@ -60,11 +51,8 @@ pl2                 pl      pc105           -               terminate:ctrl_alt_bksp
+ es                    es      pc105           -               terminate:ctrl_alt_bksp
+ ro-cedilla            ro      pc105           cedilla         terminate:ctrl_alt_bksp
+ ie                    ie      pc105           -               terminate:ctrl_alt_bksp
+-ar-azerty             ara,us  pc105           azerty          terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+-ar-qwerty-digits      ara,us  pc105           qwerty_digits   terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ et                    ee      pc105           -               terminate:ctrl_alt_bksp
+ sk-qwerty             sk      pc105           -               terminate:ctrl_alt_bksp,qwerty
+-dev                   dev,us  pc105           -               terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
+ fr-latin9             fr      pc105           latin9          terminate:ctrl_alt_bksp
+ fr_CH-latin1          ch      pc105           fr              terminate:ctrl_alt_bksp
+ cf                    ca      pc105           -               terminate:ctrl_alt_bksp
diff --git a/debian/patches/efi-boot-generator-don-t-mount-boot-eagerly.patch b/debian/patches/efi-boot-generator-don-t-mount-boot-eagerly.patch
new file mode 100644 (file)
index 0000000..c315dc1
--- /dev/null
@@ -0,0 +1,21 @@
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 21 Nov 2013 12:35:46 +0100
+Subject: efi-boot-generator: don't mount /boot eagerly
+
+---
+ src/efi-boot-generator/efi-boot-generator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c
+index 05b95ed..5e5c682 100644
+--- a/src/efi-boot-generator/efi-boot-generator.c
++++ b/src/efi-boot-generator/efi-boot-generator.c
+@@ -82,7 +82,7 @@ int main(int argc, char *argv[]) {
+                 "[Mount]\n"
+                 "Where=/boot\n"
+                 "What=/dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n"
+-                "Options=umask=0077\n",
++                "Options=umask=0077,noauto\n",
+                 SD_ID128_FORMAT_VAL(id));
+         free(name);
diff --git a/debian/patches/efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch b/debian/patches/efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch
new file mode 100644 (file)
index 0000000..ecb6305
--- /dev/null
@@ -0,0 +1,25 @@
+From: =?utf-8?q?Cristian_Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Tue, 11 Feb 2014 09:54:49 -0300
+Subject: efi: fix Undefined reference efi_loader_get_boot_usec when EFI
+ support is disabled
+
+(cherry picked from commit 70d9b9fc0a4fa1698ff00e364c61bb875244efa1)
+---
+ src/shared/boot-timestamps.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c
+index 9449965..d656685 100644
+--- a/src/shared/boot-timestamps.c
++++ b/src/shared/boot-timestamps.c
+@@ -40,8 +40,10 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time
+         r = acpi_get_boot_usec(&x, &y);
+         if (r < 0) {
++#ifdef ENABLE_EFI
+                 r = efi_loader_get_boot_usec(&x, &y);
+                 if (r < 0)
++#endif
+                         return r;
+         }
diff --git a/debian/patches/efi-never-call-qsort-on-potentially-NULL-arrays.patch b/debian/patches/efi-never-call-qsort-on-potentially-NULL-arrays.patch
new file mode 100644 (file)
index 0000000..23b5b96
--- /dev/null
@@ -0,0 +1,22 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:38:09 +0200
+Subject: efi: never call qsort on potentially NULL arrays
+
+---
+ src/shared/efivars.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/efivars.c b/src/shared/efivars.c
+index 1d5b6f9..c015b16 100644
+--- a/src/shared/efivars.c
++++ b/src/shared/efivars.c
+@@ -384,7 +384,8 @@ int efi_get_boot_options(uint16_t **options) {
+                 list[count ++] = id;
+         }
+-        qsort(list, count, sizeof(uint16_t), cmp_uint16);
++        if (list)
++                qsort(list, count, sizeof(uint16_t), cmp_uint16);
+         *options = list;
+         return count;
diff --git a/debian/patches/execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch b/debian/patches/execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch
new file mode 100644 (file)
index 0000000..907ec29
--- /dev/null
@@ -0,0 +1,32 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 16 Dec 2013 20:00:09 +0100
+Subject: execute: also set SO_SNDBUF when spawning a service with
+ stdout/stderr connected to journald
+
+(cherry picked from commit 531dca789ea6b4c269ca2646515b42962f83d64a)
+---
+ src/core/execute.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/core/execute.c b/src/core/execute.c
+index 58be72a..9b85379 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -75,6 +75,8 @@
+ /* This assumes there is a 'tty' group */
+ #define TTY_MODE 0620
++#define SNDBUF_SIZE (8*1024*1024)
++
+ static int shift_fds(int fds[], unsigned n_fds) {
+         int start, restart_from;
+@@ -232,6 +234,8 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons
+                 return -errno;
+         }
++        fd_inc_sndbuf(fd, SNDBUF_SIZE);
++
+         dprintf(fd,
+                 "%s\n"
+                 "%s\n"
diff --git a/debian/patches/execute-free-directory-path-if-we-fail-to-remove-it-.patch b/debian/patches/execute-free-directory-path-if-we-fail-to-remove-it-.patch
new file mode 100644 (file)
index 0000000..b9c2af2
--- /dev/null
@@ -0,0 +1,32 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 5 Mar 2014 00:44:23 -0500
+Subject: execute: free directory path if we fail to remove it because we
+ cannot allocate a thread
+
+Based on 98b47d54ce946ad3524f84eb38d2413498a333dc.
+---
+ src/core/execute.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/execute.c b/src/core/execute.c
+index 9b85379..ee445d7 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -1611,10 +1611,16 @@ void exec_context_tmp_dirs_done(ExecContext *c) {
+                         c->tmp_dir ? c->var_tmp_dir : NULL,
+                         NULL};
+         char **dirp;
++        int r;
+         for(dirp = dirs; *dirp; dirp++) {
+                 log_debug("Spawning thread to nuke %s", *dirp);
+-                asynchronous_job(remove_tmpdir_thread, *dirp);
++
++                r = asynchronous_job(remove_tmpdir_thread, *dirp);
++                if (r < 0) {
++                        log_warning("Failed to nuke %s: %s", *dirp, strerror(-r));
++                        free(*dirp);
++                }
+         }
+         c->tmp_dir = c->var_tmp_dir = NULL;
diff --git a/debian/patches/execute-more-debugging-messages.patch b/debian/patches/execute-more-debugging-messages.patch
new file mode 100644 (file)
index 0000000..ffc7609
--- /dev/null
@@ -0,0 +1,120 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 28 Aug 2013 08:01:30 -0400
+Subject: execute: more debugging messages
+
+---
+ src/core/execute.c     | 35 +++++++++++++++++++++--------------
+ src/login/pam-module.c |  3 ++-
+ 2 files changed, 23 insertions(+), 15 deletions(-)
+
+diff --git a/src/core/execute.c b/src/core/execute.c
+index 3979f35..3f7ca52 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -317,12 +317,12 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty
+         case EXEC_INPUT_TTY_FAIL: {
+                 int fd, r;
+-                if ((fd = acquire_terminal(
+-                                     tty_path(context),
+-                                     i == EXEC_INPUT_TTY_FAIL,
+-                                     i == EXEC_INPUT_TTY_FORCE,
+-                                     false,
+-                                     (usec_t) -1)) < 0)
++                fd = acquire_terminal(tty_path(context),
++                                      i == EXEC_INPUT_TTY_FAIL,
++                                      i == EXEC_INPUT_TTY_FORCE,
++                                      false,
++                                      (usec_t) -1);
++                if (fd < 0)
+                         return fd;
+                 if (fd != STDIN_FILENO) {
+@@ -748,6 +748,7 @@ static int setup_pam(
+         char **e = NULL;
+         bool close_session = false;
+         pid_t pam_pid = 0, parent_pid;
++        int flags = 0;
+         assert(name);
+         assert(user);
+@@ -760,6 +761,9 @@ static int setup_pam(
+          * daemon. We do things this way to ensure that the main PID
+          * of the daemon is the one we initially fork()ed. */
++        if (log_get_max_level() < LOG_PRI(LOG_DEBUG))
++                flags |= PAM_SILENT;
++
+         pam_code = pam_start(name, user, &conv, &handle);
+         if (pam_code != PAM_SUCCESS) {
+                 handle = NULL;
+@@ -772,11 +776,11 @@ static int setup_pam(
+                         goto fail;
+         }
+-        pam_code = pam_acct_mgmt(handle, PAM_SILENT);
++        pam_code = pam_acct_mgmt(handle, flags);
+         if (pam_code != PAM_SUCCESS)
+                 goto fail;
+-        pam_code = pam_open_session(handle, PAM_SILENT);
++        pam_code = pam_open_session(handle, flags);
+         if (pam_code != PAM_SUCCESS)
+                 goto fail;
+@@ -850,7 +854,7 @@ static int setup_pam(
+                 /* If our parent died we'll end the session */
+                 if (getppid() != parent_pid) {
+-                        pam_code = pam_close_session(handle, PAM_DATA_SILENT);
++                        pam_code = pam_close_session(handle, flags);
+                         if (pam_code != PAM_SUCCESS)
+                                 goto child_finish;
+                 }
+@@ -858,7 +862,7 @@ static int setup_pam(
+                 r = 0;
+         child_finish:
+-                pam_end(handle, pam_code | PAM_DATA_SILENT);
++                pam_end(handle, pam_code | flags);
+                 _exit(r);
+         }
+@@ -880,16 +884,19 @@ static int setup_pam(
+         return 0;
+ fail:
+-        if (pam_code != PAM_SUCCESS)
++        if (pam_code != PAM_SUCCESS) {
++                log_error("PAM failed: %s", pam_strerror(handle, pam_code));
+                 err = -EPERM;  /* PAM errors do not map to errno */
+-        else
++        } else {
++                log_error("PAM failed: %m");
+                 err = -errno;
++        }
+         if (handle) {
+                 if (close_session)
+-                        pam_code = pam_close_session(handle, PAM_DATA_SILENT);
++                        pam_code = pam_close_session(handle, flags);
+-                pam_end(handle, pam_code | PAM_DATA_SILENT);
++                pam_end(handle, pam_code | flags);
+         }
+         strv_free(e);
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index 49296b5..973daf7 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -199,7 +199,8 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+         dbus_error_init(&error);
+-        /* pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); */
++        if (debug)
++                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
+         /* Make this a NOP on non-logind systems */
+         if (!logind_running())
diff --git a/debian/patches/execute.c-always-set-SHELL.patch b/debian/patches/execute.c-always-set-SHELL.patch
new file mode 100644 (file)
index 0000000..304ebd8
--- /dev/null
@@ -0,0 +1,165 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 2 Oct 2013 13:23:10 +0200
+Subject: execute.c: always set $SHELL
+
+In e6dca81 $SHELL was added to user@.service. Let's
+instead provide it to all units which have a user.
+---
+ TODO                   |  2 --
+ man/systemd.exec.xml   | 21 +++++++++++++++++--
+ src/core/execute.c     | 56 +++++++++++++++++---------------------------------
+ units/user@.service.in |  1 -
+ 4 files changed, 38 insertions(+), 42 deletions(-)
+
+diff --git a/TODO b/TODO
+index 07269f4..425f673 100644
+--- a/TODO
++++ b/TODO
+@@ -54,8 +54,6 @@ CGroup Rework Completion:
+ Features:
+-* set $SHELL where we set $HOME and $USER when User= is set of a service, drop its manual setting from user@.service
+-
+ * we probably should replace the left-over uses of strv_append() and replace them by strv_push() or strv_extend()
+ * move config_parse_path_strv() out of conf-parser.c
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index f50161f..e213ec4 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -1021,10 +1021,13 @@
+                         <varlistentry>
+                                 <term><varname>$USER</varname></term>
++                                <term><varname>$LOGNAME</varname></term>
+                                 <term><varname>$HOME</varname></term>
++                                <term><varname>$SHELL</varname></term>
+-                                <listitem><para>User name and home
+-                                directory.  Set for the units which
++                                <listitem><para>User name (twice), home
++                                directory, and the login shell.
++                                Set for the units which
+                                 have <varname>User=</varname> set,
+                                 which includes user
+                                 <command>systemd</command> instances.
+@@ -1080,6 +1083,20 @@
+                                 <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+                                 </para></listitem>
+                         </varlistentry>
++
++                        <varlistentry>
++                                <term><varname>$TERM</varname></term>
++
++                                <listitem><para>Terminal type, set
++                                only for units connected to a terminal
++                                (<varname>StandardInput=tty</varname>,
++                                <varname>StandardOutput=tty</varname>,
++                                or
++                                <varname>StandardError=tty</varname>).
++                                See
++                                <citerefentry><refentrytitle>termcap</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++                                </para></listitem>
++                        </varlistentry>
+                 </variablelist>
+                 <para>Additional variables may be configured by the
+diff --git a/src/core/execute.c b/src/core/execute.c
+index a53ef48..3979f35 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -1094,7 +1094,7 @@ int exec_spawn(ExecCommand *command,
+         if (pid == 0) {
+                 int i, err;
+                 sigset_t ss;
+-                const char *username = NULL, *home = NULL;
++                const char *username = NULL, *home = NULL, *shell = NULL;
+                 uid_t uid = (uid_t) -1;
+                 gid_t gid = (gid_t) -1;
+                 _cleanup_strv_free_ char **our_env = NULL, **pam_env = NULL,
+@@ -1277,7 +1277,7 @@ int exec_spawn(ExecCommand *command,
+                 if (context->user) {
+                         username = context->user;
+-                        err = get_user_creds(&username, &uid, &gid, &home, NULL);
++                        err = get_user_creds(&username, &uid, &gid, &home, &shell);
+                         if (err < 0) {
+                                 r = EXIT_USER;
+                                 goto fail_child;
+@@ -1462,46 +1462,28 @@ int exec_spawn(ExecCommand *command,
+                         }
+                 }
+-                our_env = new0(char*, 7);
+-                if (!our_env) {
++                our_env = new(char*, 8);
++                if (!our_env ||
++                    (n_fds > 0 && (
++                            asprintf(our_env + n_env++, "LISTEN_PID=%lu", (unsigned long) getpid()) < 0 ||
++                            asprintf(our_env + n_env++, "LISTEN_FDS=%u", n_fds) < 0)) ||
++                    (home && asprintf(our_env + n_env++, "HOME=%s", home) < 0) ||
++                    (username && (
++                            asprintf(our_env + n_env++, "LOGNAME=%s", username) < 0 ||
++                            asprintf(our_env + n_env++, "USER=%s", username) < 0)) ||
++                    (shell && asprintf(our_env + n_env++, "SHELL=%s", shell) < 0) ||
++                    ((is_terminal_input(context->std_input) ||
++                      context->std_output == EXEC_OUTPUT_TTY ||
++                      context->std_error == EXEC_OUTPUT_TTY) && (
++                              !(our_env[n_env++] = strdup(default_term_for_tty(tty_path(context))))))) {
++
+                         err = -ENOMEM;
+                         r = EXIT_MEMORY;
+                         goto fail_child;
+                 }
+-                if (n_fds > 0)
+-                        if (asprintf(our_env + n_env++, "LISTEN_PID=%lu", (unsigned long) getpid()) < 0 ||
+-                            asprintf(our_env + n_env++, "LISTEN_FDS=%u", n_fds) < 0) {
+-                                err = -ENOMEM;
+-                                r = EXIT_MEMORY;
+-                                goto fail_child;
+-                        }
+-
+-                if (home)
+-                        if (asprintf(our_env + n_env++, "HOME=%s", home) < 0) {
+-                                err = -ENOMEM;
+-                                r = EXIT_MEMORY;
+-                                goto fail_child;
+-                        }
+-
+-                if (username)
+-                        if (asprintf(our_env + n_env++, "LOGNAME=%s", username) < 0 ||
+-                            asprintf(our_env + n_env++, "USER=%s", username) < 0) {
+-                                err = -ENOMEM;
+-                                r = EXIT_MEMORY;
+-                                goto fail_child;
+-                        }
+-
+-                if (is_terminal_input(context->std_input) ||
+-                    context->std_output == EXEC_OUTPUT_TTY ||
+-                    context->std_error == EXEC_OUTPUT_TTY)
+-                        if (!(our_env[n_env++] = strdup(default_term_for_tty(tty_path(context))))) {
+-                                err = -ENOMEM;
+-                                r = EXIT_MEMORY;
+-                                goto fail_child;
+-                        }
+-
+-                assert(n_env <= 7);
++                our_env[n_env++] = NULL;
++                assert(n_env <= 8);
+                 final_env = strv_env_merge(5,
+                                            environment,
+diff --git a/units/user@.service.in b/units/user@.service.in
+index 3718a57..3f8b59d 100644
+--- a/units/user@.service.in
++++ b/units/user@.service.in
+@@ -13,7 +13,6 @@ After=systemd-user-sessions.service
+ User=%I
+ PAMName=systemd-user
+ Type=notify
+-Environment=SHELL=%s
+ ExecStart=-@rootlibexecdir@/systemd --user
+ Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket
+ Slice=user-%i.slice
diff --git a/debian/patches/fix-SELinux-check-for-transient-units.patch b/debian/patches/fix-SELinux-check-for-transient-units.patch
new file mode 100644 (file)
index 0000000..6ca308a
--- /dev/null
@@ -0,0 +1,106 @@
+From: Dan Walsh <dwalsh@redhat.com>
+Date: Thu, 16 Jan 2014 12:59:10 +0100
+Subject: fix SELinux check for transient units
+
+SELinux does not have a path to check for a snapshot servic creation.
+This ends up giving us a bogus check.
+
+On snapshot creation we should check if the remote process type, has the ability to start a service with the type that systemd is running with.
+
+This patch is only for systemd-208
+---
+ src/core/dbus-manager.c   |  6 +++---
+ src/core/selinux-access.c |  9 +++++----
+ src/core/selinux-access.h | 13 +++++++++++++
+ 3 files changed, 21 insertions(+), 7 deletions(-)
+
+diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
+index 536f2ea..6d16c2a 100644
+--- a/src/core/dbus-manager.c
++++ b/src/core/dbus-manager.c
+@@ -1104,7 +1104,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                 dbus_bool_t cleanup;
+                 Snapshot *s;
+-                SELINUX_ACCESS_CHECK(connection, message, "start");
++                SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, "start");
+                 if (!dbus_message_get_args(
+                                     message,
+@@ -1157,7 +1157,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                         return bus_send_error_reply(connection, message, &error, -ENOENT);
+                 }
+-                SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop");
++                SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, "stop");
+                 snapshot_remove(SNAPSHOT(u));
+                 reply = dbus_message_new_method_return(message);
+@@ -1767,7 +1767,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                 if (r < 0)
+                         return bus_send_error_reply(connection, message, &error, r);
+-                SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start");
++                SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, "start");
+                 if (u->load_state != UNIT_NOT_FOUND || set_size(u->dependencies[UNIT_REFERENCED_BY]) > 0) {
+                         dbus_set_error(&error, BUS_ERROR_UNIT_EXISTS, "Unit %s already exists.", name);
+diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
+index 0a3ee18..5d85b26 100644
+--- a/src/core/selinux-access.c
++++ b/src/core/selinux-access.c
+@@ -374,8 +374,9 @@ int selinux_access_check(
+                 goto finish;
+         }
+-        if (path) {
+-                tclass = "service";
++
++        tclass = "service";
++        if (path && !strneq(path,"system", strlen("system"))) {
+                 /* get the file context of the unit file */
+                 r = getfilecon(path, &fcon);
+                 if (r < 0) {
+@@ -384,9 +385,9 @@ int selinux_access_check(
+                         log_error("Failed to get security context on %s: %m",path);
+                         goto finish;
+                 }
+-
+         } else {
+-                tclass = "system";
++                if (path)
++                        tclass = "system";
+                 r = getcon(&fcon);
+                 if (r < 0) {
+                         dbus_set_error(error, DBUS_ERROR_ACCESS_DENIED, "Failed to get current context.");
+diff --git a/src/core/selinux-access.h b/src/core/selinux-access.h
+index 2d7ac64..92acd69 100644
+--- a/src/core/selinux-access.h
++++ b/src/core/selinux-access.h
+@@ -36,6 +36,18 @@ int selinux_access_check(DBusConnection *connection, DBusMessage *message, const
+                 DBusConnection *_c = (connection);                      \
+                 DBusMessage *_m = (message);                            \
+                 dbus_error_init(&_error);                               \
++                _r = selinux_access_check(_c, _m, "system", (permission), &_error); \
++                if (_r < 0)                                             \
++                        return bus_send_error_reply(_c, _m, &_error, _r); \
++        } while (false)
++
++#define SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, permission) \
++        do {                                                            \
++                DBusError _error;                                       \
++                int _r;                                                 \
++                DBusConnection *_c = (connection);                      \
++                DBusMessage *_m = (message);                            \
++                dbus_error_init(&_error);                               \
+                 _r = selinux_access_check(_c, _m, NULL, (permission), &_error); \
+                 if (_r < 0)                                             \
+                         return bus_send_error_reply(_c, _m, &_error, _r); \
+@@ -57,6 +69,7 @@ int selinux_access_check(DBusConnection *connection, DBusMessage *message, const
+ #else
+ #define SELINUX_ACCESS_CHECK(connection, message, permission) do { } while (false)
++#define SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, permission) do { } while (false)
+ #define SELINUX_UNIT_ACCESS_CHECK(unit, connection, message, permission) do { } while (false)
+ #endif
diff --git a/debian/patches/fix-lingering-references-to-var-lib-backlight-random.patch b/debian/patches/fix-lingering-references-to-var-lib-backlight-random.patch
new file mode 100644 (file)
index 0000000..7f4a030
--- /dev/null
@@ -0,0 +1,50 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Wed, 2 Oct 2013 07:46:24 -0400
+Subject: fix lingering references to /var/lib/{backlight,random-seed}
+
+This should have been part of ef5bfcf668e6029faa78534dfe.
+---
+ man/systemd-backlight@.service.xml  | 2 +-
+ man/systemd-random-seed.service.xml | 2 +-
+ units/systemd-backlight@.service.in | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml
+index 2b73625..4318964 100644
+--- a/man/systemd-backlight@.service.xml
++++ b/man/systemd-backlight@.service.xml
+@@ -58,7 +58,7 @@
+                 is a service that restores the display backlight
+                 brightness at early-boot and saves it at shutdown. On
+                 disk, the backlight brightness is stored in
+-                <filename>/var/lib/backlight/</filename>. Note that by
++                <filename>/var/lib/systemd/backlight/</filename>. Note that by
+                 default, only firmware backlight devices are
+                 saved/restored.</para>
+         </refsect1>
+diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml
+index 8cd14b7..e5cd037 100644
+--- a/man/systemd-random-seed.service.xml
++++ b/man/systemd-random-seed.service.xml
+@@ -61,7 +61,7 @@
+                 for details. Saving/restoring the random seed across
+                 boots increases the amount of available entropy early
+                 at boot. On disk the random seed is stored in
+-                <filename>/var/lib/random-seed</filename>.</para>
++                <filename>/var/lib/systemd/random-seed</filename>.</para>
+         </refsect1>
+         <refsect1>
+diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
+index b0e75db..5caa5d5 100644
+--- a/units/systemd-backlight@.service.in
++++ b/units/systemd-backlight@.service.in
+@@ -9,7 +9,7 @@
+ Description=Load/Save Screen Backlight Brightness of %I
+ Documentation=man:systemd-backlight@.service(8)
+ DefaultDependencies=no
+-RequiresMountsFor=/var/lib/backlight
++RequiresMountsFor=/var/lib/systemd/backlight
+ Conflicts=shutdown.target
+ After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target
diff --git a/debian/patches/fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch b/debian/patches/fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch
new file mode 100644 (file)
index 0000000..6fa0375
--- /dev/null
@@ -0,0 +1,177 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 12 Nov 2013 00:53:59 -0500
+Subject: fsck,fstab-generator: be lenient about missing fsck.<type>
+
+If fstab contains 1 for passno, treat this as an error, but only warn
+briefly. If fstab doesn't contain this information, don't complain at
+all.
+
+Patch is complicated a bit by the fact that we might have the fstype specified
+in fstab or on /proc/cmdline, in which case we can check if we have the appropriate
+fsck tool, or not specified, or specified as auto, in which case we have to look
+and check the type of the filesystem ourselves. It cannot be done before the
+device appears, so it is too early in the generator phase, and it must be done
+directly in fsck service.
+
+Conflicts:
+       src/fstab-generator/fstab-generator.c
+---
+ src/fsck/fsck.c                       | 40 +++++++++++++++++++++------
+ src/fstab-generator/fstab-generator.c | 51 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 83 insertions(+), 8 deletions(-)
+
+diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
+index 9b4e555..1189fe7 100644
+--- a/src/fsck/fsck.c
++++ b/src/fsck/fsck.c
+@@ -244,10 +244,11 @@ int main(int argc, char *argv[]) {
+         siginfo_t status;
+         _cleanup_udev_unref_ struct udev *udev = NULL;
+         _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
+-        const char *device;
++        const char *device, *type;
+         bool root_directory;
+         int progress_pipe[2] = { -1, -1 };
+         char dash_c[2+10+1];
++        struct stat st;
+         if (argc > 2) {
+                 log_error("This program expects one or no arguments.");
+@@ -266,11 +267,27 @@ int main(int argc, char *argv[]) {
+         if (!arg_force && arg_skip)
+                 return 0;
++        udev = udev_new();
++        if (!udev) {
++                log_oom();
++                return EXIT_FAILURE;
++        }
++
+         if (argc > 1) {
+                 device = argv[1];
+                 root_directory = false;
++
++                if (stat(device, &st) < 0) {
++                        log_error("Failed to stat '%s': %m", device);
++                        return EXIT_FAILURE;
++                }
++
++                udev_device = udev_device_new_from_devnum(udev, 'b', st.st_rdev);
++                if (!udev_device) {
++                        log_error("Failed to detect device %s", device);
++                        return EXIT_FAILURE;
++                }
+         } else {
+-                struct stat st;
+                 struct timespec times[2];
+                 /* Find root device */
+@@ -292,12 +309,6 @@ int main(int argc, char *argv[]) {
+                         return EXIT_SUCCESS;
+                 }
+-                udev = udev_new();
+-                if (!udev) {
+-                        log_oom();
+-                        return EXIT_FAILURE;
+-                }
+-
+                 udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
+                 if (!udev_device) {
+                         log_error("Failed to detect root device.");
+@@ -313,6 +324,19 @@ int main(int argc, char *argv[]) {
+                 root_directory = true;
+         }
++        type = udev_device_get_property_value(udev_device, "ID_FS_TYPE");
++        if (type) {
++                const char *checker = strappenda("/sbin/fsck.", type);
++                r = access(checker, X_OK);
++                if (r < 0) {
++                        if (errno == ENOENT) {
++                                log_info("%s doesn't exist, not checking file system.", checker);
++                                return EXIT_SUCCESS;
++                        } else
++                                log_warning("%s cannot be used: %m", checker);
++                }
++        }
++
+         if (arg_show_progress)
+                 if (pipe(progress_pipe) < 0) {
+                         log_error("pipe(): %m");
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 9efccb9..795a24c 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -147,6 +147,52 @@ static bool mount_in_initrd(struct mntent *me) {
+                 streq(me->mnt_dir, "/usr");
+ }
++static int add_fsck(FILE *f, const char *what, const char *where, const char *type, int passno) {
++        assert(f);
++
++        if (passno == 0)
++                return 0;
++
++        if (type && !streq(type, "auto")) {
++                int r;
++                const char *checker;
++
++                checker = strappenda("/sbin/fsck.", type);
++                r = access(checker, X_OK);
++                if (r < 0) {
++                        log_warning("Checking was requested for %s, but %s cannot be used: %m", what, checker);
++
++                        /* treat missing check as essentially OK */
++                        return errno == ENOENT ? 0 : -errno;
++                }
++        }
++
++        if (streq(where, "/")) {
++                char *lnk;
++
++                lnk = strappenda(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
++                mkdir_parents_label(lnk, 0755);
++                if (symlink("systemd-fsck-root.service", lnk) < 0) {
++                        log_error("Failed to create symlink %s: %m", lnk);
++                        return -errno;
++                }
++        } else {
++                _cleanup_free_ char *fsck = NULL;
++
++                fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
++                if (!fsck)
++                        return log_oom();
++
++                fprintf(f,
++                        "Requires=%s\n"
++                        "After=%s\n",
++                        fsck,
++                        fsck);
++        }
++
++        return 0;
++}
++
+ static int add_mount(
+                 const char *what,
+                 const char *where,
+@@ -162,6 +208,7 @@ static int add_mount(
+                 *name = NULL, *unit = NULL, *lnk = NULL,
+                 *automount_name = NULL, *automount_unit = NULL;
+         _cleanup_fclose_ FILE *f = NULL;
++        int r;
+         assert(what);
+         assert(where);
+@@ -209,6 +256,10 @@ static int add_mount(
+                         "Before=%s\n",
+                         post);
++        r = add_fsck(f, what, where, type, passno);
++        if (r < 0)
++                return r;
++
+         fprintf(f,
+                 "\n"
+                 "[Mount]\n"
diff --git a/debian/patches/fsck-modernization.patch b/debian/patches/fsck-modernization.patch
new file mode 100644 (file)
index 0000000..f5bca81
--- /dev/null
@@ -0,0 +1,136 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 11 Nov 2013 23:32:31 -0500
+Subject: fsck: modernization
+
+---
+ src/fsck/fsck.c | 43 ++++++++++++++++++-------------------------
+ 1 file changed, 18 insertions(+), 25 deletions(-)
+
+diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
+index f298cf7..e23ddc5 100644
+--- a/src/fsck/fsck.c
++++ b/src/fsck/fsck.c
+@@ -175,7 +175,7 @@ static double percent(int pass, unsigned long cur, unsigned long max) {
+ }
+ static int process_progress(int fd) {
+-        FILE *f, *console;
++        _cleanup_fclose_ FILE *console = NULL, *f = NULL;
+         usec_t last = 0;
+         bool locked = false;
+         int clear = 0;
+@@ -187,15 +187,13 @@ static int process_progress(int fd) {
+         }
+         console = fopen("/dev/console", "w");
+-        if (!console) {
+-                fclose(f);
++        if (!console)
+                 return -ENOMEM;
+-        }
+         while (!feof(f)) {
+                 int pass, m;
+                 unsigned long cur, max;
+-                char *device;
++                _cleanup_free_ char *device = NULL;
+                 double p;
+                 usec_t t;
+@@ -204,20 +202,16 @@ static int process_progress(int fd) {
+                 /* Only show one progress counter at max */
+                 if (!locked) {
+-                        if (flock(fileno(console), LOCK_EX|LOCK_NB) < 0) {
+-                                free(device);
++                        if (flock(fileno(console), LOCK_EX|LOCK_NB) < 0)
+                                 continue;
+-                        }
+                         locked = true;
+                 }
+                 /* Only update once every 50ms */
+                 t = now(CLOCK_MONOTONIC);
+-                if (last + 50 * USEC_PER_MSEC > t)  {
+-                        free(device);
++                if (last + 50 * USEC_PER_MSEC > t)
+                         continue;
+-                }
+                 last = t;
+@@ -225,8 +219,6 @@ static int process_progress(int fd) {
+                 fprintf(console, "\r%s: fsck %3.1f%% complete...\r%n", device, p, &m);
+                 fflush(console);
+-                free(device);
+-
+                 if (m > clear)
+                         clear = m;
+         }
+@@ -241,8 +233,6 @@ static int process_progress(int fd) {
+                 fflush(console);
+         }
+-        fclose(f);
+-        fclose(console);
+         return 0;
+ }
+@@ -286,34 +276,37 @@ int main(int argc, char *argv[]) {
+                 if (stat("/", &st) < 0) {
+                         log_error("Failed to stat() the root directory: %m");
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+                 /* Virtual root devices don't need an fsck */
+                 if (major(st.st_dev) == 0)
+-                        return 0;
++                        return EXIT_SUCCESS;
+                 /* check if we are already writable */
+                 times[0] = st.st_atim;
+                 times[1] = st.st_mtim;
+                 if (utimensat(AT_FDCWD, "/", times, 0) == 0) {
+                         log_info("Root directory is writable, skipping check.");
+-                        return 0;
++                        return EXIT_SUCCESS;
+                 }
+-                if (!(udev = udev_new())) {
++                udev = udev_new();
++                if (!udev) {
+                         log_oom();
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+-                if (!(udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev))) {
++                udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
++                if (!udev_device) {
+                         log_error("Failed to detect root device.");
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+-                if (!(device = udev_device_get_devnode(udev_device))) {
++                device = udev_device_get_devnode(udev_device);
++                if (!device) {
+                         log_error("Failed to detect device node of root directory.");
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+                 root_directory = true;
+@@ -322,7 +315,7 @@ int main(int argc, char *argv[]) {
+         if (arg_show_progress)
+                 if (pipe(progress_pipe) < 0) {
+                         log_error("pipe(): %m");
+-                        goto finish;
++                        return EXIT_FAILURE;
+                 }
+         cmdline[i++] = "/sbin/fsck";
diff --git a/debian/patches/fstab-generator-Create-fsck-root-symlink-with-correc.patch b/debian/patches/fstab-generator-Create-fsck-root-symlink-with-correc.patch
new file mode 100644 (file)
index 0000000..cb915e0
--- /dev/null
@@ -0,0 +1,26 @@
+From: Colin Guthrie <colin@mageia.org>
+Date: Sun, 9 Feb 2014 12:07:11 +0000
+Subject: fstab-generator: Create fsck-root symlink with correct path
+
+This was noticed in Brussels at the hackfest. The fstab-generator currently
+creates a broken symlink pointing to itself in
+/run/systemd/generator/local-fs.target.wants/ for systemd-fsck-root.service
+
+(cherry picked from commit 63a1b905d83b8d223f78822122c71860c1b613d1)
+---
+ src/fstab-generator/fstab-generator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 8c4c61c..0d954a2 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -177,7 +177,7 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty
+                 lnk = strappenda(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
+                 mkdir_parents_label(lnk, 0755);
+-                if (symlink("systemd-fsck-root.service", lnk) < 0) {
++                if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0) {
+                         log_error("Failed to create symlink %s: %m", lnk);
+                         return -errno;
+                 }
diff --git a/debian/patches/fstab-generator-Do-not-try-to-fsck-non-devices.patch b/debian/patches/fstab-generator-Do-not-try-to-fsck-non-devices.patch
new file mode 100644 (file)
index 0000000..32026e0
--- /dev/null
@@ -0,0 +1,29 @@
+From: =?utf-8?q?Thomas_B=C3=A4chler?= <thomas@archlinux.org>
+Date: Sat, 21 Dec 2013 11:22:37 +0100
+Subject: fstab-generator: Do not try to fsck non-devices
+
+This fixes a regression introduced in 64e70e4 where the mount fails
+when fstab is misconfigured with fs_passno > 0 on a virtual file
+system like nfs, and the type is specified as "auto".
+
+(cherry picked from commit e2f123b97b9af34f39cb18ce0c1c5ef6cb89117e)
+---
+ src/fstab-generator/fstab-generator.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 4137796..8c4c61c 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -153,6 +153,11 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty
+         if (passno == 0)
+                 return 0;
++        if (!is_device_path(what)) {
++                log_warning("Checking was requested for \"%s\", but it is not a device.", what);
++                return 0;
++        }
++
+         if (type && !streq(type, "auto")) {
+                 int r;
+                 const char *checker;
diff --git a/debian/patches/fstab-generator-use-RequiresOverridable-for-fsck-uni.patch b/debian/patches/fstab-generator-use-RequiresOverridable-for-fsck-uni.patch
new file mode 100644 (file)
index 0000000..d81c19a
--- /dev/null
@@ -0,0 +1,36 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 12 Nov 2013 22:01:10 -0500
+Subject: fstab-generator: use RequiresOverridable for fsck units
+
+This allows the user to disable fsck's by masking.
+
+If fsck fails, emergency target is started, the user might mount the
+unit using mount and disable fsck by masking the unit. In this case,
+.mount will be active because the mount is detect through
+/proc/self/mountinfo, but systemd-fsck@.service will still be in
+failed mode. This results in a funny situation where
+
+$ systemctl show -p ActiveState local-fs.target yyy.mount
+ActiveState=active
+ActiveState=active
+
+$ sudo systemctl start local-fs.target
+[sudo] password for test:
+Failed to start local-fs.target: Unit systemd-fsck@xxx.service is masked.
+---
+ src/fstab-generator/fstab-generator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 795a24c..4137796 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -184,7 +184,7 @@ static int add_fsck(FILE *f, const char *what, const char *where, const char *ty
+                         return log_oom();
+                 fprintf(f,
+-                        "Requires=%s\n"
++                        "RequiresOverridable=%s\n"
+                         "After=%s\n",
+                         fsck,
+                         fsck);
diff --git a/debian/patches/getty-generator-properly-escape-instance-names.patch b/debian/patches/getty-generator-properly-escape-instance-names.patch
new file mode 100644 (file)
index 0000000..199ec8c
--- /dev/null
@@ -0,0 +1,32 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 19 Jun 2014 22:02:55 -0400
+Subject: getty-generator: properly escape instance names
+
+Otherwise the add_symlink() function tries to make directories for
+each slash even for the slash after the @ symbol in the final link
+name, failing for /dev/3270/tty1.
+
+Based on a patch by Werner Fink <werner@suse.de>.
+
+(cherry picked from commit a2ae516a25dafe41e0cd296ab7b5d022fa62b95f)
+(cherry picked from commit 98023e096875cde4662a62e862279f8685d166fd)
+
+Conflicts:
+       src/getty-generator/getty-generator.c
+---
+ src/getty-generator/getty-generator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
+index 625a87e..2f790b8 100644
+--- a/src/getty-generator/getty-generator.c
++++ b/src/getty-generator/getty-generator.c
+@@ -77,7 +77,7 @@ static int add_serial_getty(const char *tty) {
+         log_debug("Automatically adding serial getty for /dev/%s.", tty);
+-        n = unit_name_replace_instance("serial-getty@.service", tty);
++        n = unit_name_from_path_instance("serial-getty", tty, ".service");
+         if (!n)
+                 return log_oom();
diff --git a/debian/patches/getty-generator-verify-ttys-before-we-make-use-of-th.patch b/debian/patches/getty-generator-verify-ttys-before-we-make-use-of-th.patch
new file mode 100644 (file)
index 0000000..d43bb14
--- /dev/null
@@ -0,0 +1,76 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 24 Feb 2014 03:59:50 +0100
+Subject: getty-generator: verify ttys before we make use of them
+
+The ttyS[0-3] devices are weird. They may be enumerated, but when one
+actually tries to open and use them they return EIO, because they don't
+actually exist. Because they may be enumerated they may be specified on
+the kernel command line as console=. And some people do that as default.
+As response to that we'll spawn a getty on the tty that will quickly
+fail, and we retry a couple of time before giving up. That is quite
+noisy.
+
+With this new change we will validate all serial terminals configured
+with console= on the kernel cmdline before adding gettys on them, and
+remove the invalid ones. THis should remove the noise later on.
+
+This should make Eric Paris happy!
+
+(cherry picked from commit 543407517e05688915128cfc544c5d7f97f240ef)
+---
+ src/getty-generator/getty-generator.c | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
+index 40374b5..625a87e 100644
+--- a/src/getty-generator/getty-generator.c
++++ b/src/getty-generator/getty-generator.c
+@@ -22,6 +22,7 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <unistd.h>
++#include <fcntl.h>
+ #include "log.h"
+ #include "util.h"
+@@ -86,6 +87,30 @@ static int add_serial_getty(const char *tty) {
+         return r;
+ }
++static int verify_tty(const char *name) {
++        _cleanup_close_ int fd = -1;
++        const char *p;
++
++        /* Some TTYs are weird and have been enumerated but don't work
++         * when you try to use them, such as classic ttyS0 and
++         * friends. Let's check that and open the device and run
++         * isatty() on it. */
++
++        p = strappenda("/dev/", name);
++
++        /* O_NONBLOCK is essential here, to make sure we don't wait
++         * for DCD */
++        fd = open(p, O_RDWR|O_NONBLOCK|O_NOCTTY|O_CLOEXEC|O_NOFOLLOW);
++        if (fd < 0)
++                return -errno;
++
++        errno = 0;
++        if (isatty(fd) <= 0)
++                return errno ? -errno : -EIO;
++
++        return 0;
++}
++
+ int main(int argc, char *argv[]) {
+         static const char virtualization_consoles[] =
+@@ -146,6 +171,9 @@ int main(int argc, char *argv[]) {
+                                 continue;
+                         }
++                        if (verify_tty(tty) < 0)
++                                continue;
++
+                         /* We assume that gettys on virtual terminals are
+                          * started via manual configuration and do this magic
+                          * only for non-VC terminals. */
diff --git a/debian/patches/gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch b/debian/patches/gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch
new file mode 100644 (file)
index 0000000..dbbb144
--- /dev/null
@@ -0,0 +1,23 @@
+From: Tomasz Torcz <tomek@pipebreaker.pl>
+Date: Wed, 12 Mar 2014 19:25:11 +0100
+Subject: gpt-auto-generator: don't return OOM on parentless devices
+
+(cherry picked from commit 9c4495ca561624c2f0085507dd1288ed5f1247c5)
+(cherry picked from commit 794e1dcecaf1c25ca0556115a9a89fa665d6a2f0)
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index d7c09f0..d97374c 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -255,7 +255,7 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
+         parent = udev_device_get_parent(d);
+         if (!parent)
+-                return log_oom();
++                return 0;
+         r = udev_enumerate_add_match_parent(e, parent);
+         if (r < 0)
diff --git a/debian/patches/gpt-auto-generator-exit-immediately-if-in-container.patch b/debian/patches/gpt-auto-generator-exit-immediately-if-in-container.patch
new file mode 100644 (file)
index 0000000..f5cf2c7
--- /dev/null
@@ -0,0 +1,36 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 3 Oct 2013 22:13:01 -0400
+Subject: gpt-auto-generator: exit immediately if in container
+
+Otherwise we get an ugly warning when running systemd in
+a container.
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index ca54925..d2b4213 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -38,6 +38,7 @@
+ #include "libudev.h"
+ #include "special.h"
+ #include "unit-name.h"
++#include "virt.h"
+ /* TODO:
+  *
+@@ -481,6 +482,13 @@ int main(int argc, char *argv[]) {
+         umask(0022);
+         if (in_initrd()) {
++                log_debug("In initrd, exiting.");
++                r = 0;
++                goto finish;
++        }
++
++        if (detect_container(NULL) > 0) {
++                log_debug("In a container, exiting.");
+                 r = 0;
+                 goto finish;
+         }
diff --git a/debian/patches/gpt-auto-generator-skip-nonexistent-devices.patch b/debian/patches/gpt-auto-generator-skip-nonexistent-devices.patch
new file mode 100644 (file)
index 0000000..1554afa
--- /dev/null
@@ -0,0 +1,33 @@
+From: =?utf-8?q?=C5=81ukasz_Stelmach?= <l.stelmach@samsung.com>
+Date: Tue, 7 Jan 2014 15:00:22 +0100
+Subject: gpt-auto-generator: skip nonexistent devices
+
+The devices we work with have eMMC chips for storage. The chips
+provide four "hardware" partitions.  The first is /dev/mmcblk0, it
+takes almost whole space and holds a GPT with several real partitions
+(/dev/mmcblk0p?). Then there are three block devices (mmcblk0boot0,
+mmcblk0boot1, rpmb) that are part of the same hardware as mmcblk0 that
+are presented by the kernel as children of the latter. That relationship
+makes gpt-auto-generator try to peek them but since they are not GPT
+partitions blkid_do_safeprobe() returns -2 making verify_gpt_parition()
+function return -ENODEV.
+
+(cherry picked from commit 843f737ade9c73609a2280dd3dd16e18222a5dcb)
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index 25440e7..0e8e959 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -298,6 +298,9 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
+                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
+                 if (r < 0) {
++                        /* skip child devices which are not detected properly */
++                        if (r == -ENODEV)
++                                continue;
+                         log_error("Failed to verify GPT partition %s: %s",
+                                   node, strerror(-r));
+                         return r;
diff --git a/debian/patches/gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch b/debian/patches/gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch
new file mode 100644 (file)
index 0000000..8c1b35b
--- /dev/null
@@ -0,0 +1,39 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 11 Jan 2014 16:45:29 -0500
+Subject: gpt-auto-generator: use EBADSLT code when unable to detect partition
+ type
+
+ENODEV suggests that something is missing, which is be misleading
+here.
+
+(cherry picked from commit b94801803417c23d099cb7e508754181ecd27f9c)
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index 0e8e959..d7c09f0 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -74,10 +74,8 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr
+         errno = 0;
+         r = blkid_do_safeprobe(b);
+-        if (r == -2)
+-                return -ENODEV;
+-        else if (r == 1)
+-                return -ENODEV;
++        if (r == -2 || r == 1) /* no result or uncertain */
++                return -EBADSLT;
+         else if (r != 0)
+                 return errno ? -errno : -EIO;
+@@ -299,7 +297,7 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
+                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
+                 if (r < 0) {
+                         /* skip child devices which are not detected properly */
+-                        if (r == -ENODEV)
++                        if (r == -EBADSLT)
+                                 continue;
+                         log_error("Failed to verify GPT partition %s: %s",
+                                   node, strerror(-r));
diff --git a/debian/patches/hashmap-be-a-bit-more-conservative-with-pre-allocati.patch b/debian/patches/hashmap-be-a-bit-more-conservative-with-pre-allocati.patch
new file mode 100644 (file)
index 0000000..2809ddf
--- /dev/null
@@ -0,0 +1,56 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 19 Nov 2013 21:02:59 +0100
+Subject: hashmap: be a bit more conservative with pre-allocating hash tables
+ and items
+
+---
+ src/shared/hashmap.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/shared/hashmap.c b/src/shared/hashmap.c
+index f06fce6..8f5957b 100644
+--- a/src/shared/hashmap.c
++++ b/src/shared/hashmap.c
+@@ -66,13 +66,14 @@ static void *first_hashmap_tile = NULL;
+ static struct pool *first_entry_pool = NULL;
+ static void *first_entry_tile = NULL;
+-static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t tile_size) {
++static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t tile_size, unsigned at_least) {
+         unsigned i;
+         /* When a tile is released we add it to the list and simply
+          * place the next pointer at its offset 0. */
+         assert(tile_size >= sizeof(void*));
++        assert(at_least > 0);
+         if (*first_tile) {
+                 void *r;
+@@ -88,7 +89,7 @@ static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t t
+                 struct pool *p;
+                 n = *first_pool ? (*first_pool)->n_tiles : 0;
+-                n = MAX(512U, n * 2);
++                n = MAX(at_least, n * 2);
+                 size = PAGE_ALIGN(ALIGN(sizeof(struct pool)) + n*tile_size);
+                 n = (size - ALIGN(sizeof(struct pool))) / tile_size;
+@@ -191,7 +192,7 @@ Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func) {
+         size = ALIGN(sizeof(Hashmap)) + INITIAL_N_BUCKETS * sizeof(struct hashmap_entry*);
+         if (b) {
+-                h = allocate_tile(&first_hashmap_pool, &first_hashmap_tile, size);
++                h = allocate_tile(&first_hashmap_pool, &first_hashmap_tile, size, 8);
+                 if (!h)
+                         return NULL;
+@@ -476,7 +477,7 @@ int hashmap_put(Hashmap *h, const void *key, void *value) {
+                 hash = bucket_hash(h, key);
+         if (h->from_pool)
+-                e = allocate_tile(&first_entry_pool, &first_entry_tile, sizeof(struct hashmap_entry));
++                e = allocate_tile(&first_entry_pool, &first_entry_tile, sizeof(struct hashmap_entry), 64U);
+         else
+                 e = new(struct hashmap_entry, 1);
diff --git a/debian/patches/hostnamed-avoid-using-NULL-in-error-path.patch b/debian/patches/hostnamed-avoid-using-NULL-in-error-path.patch
new file mode 100644 (file)
index 0000000..84af0e3
--- /dev/null
@@ -0,0 +1,31 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 6 Jan 2014 12:16:55 +0000
+Subject: hostnamed: avoid using NULL in error path
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1047335
+---
+ src/hostname/hostnamed.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
+index 6a43aeb..0c24b65 100644
+--- a/src/hostname/hostnamed.c
++++ b/src/hostname/hostnamed.c
+@@ -637,7 +637,7 @@ static int connect_bus(DBusConnection **_bus) {
+         if (!bus) {
+                 log_error("Failed to get system D-Bus connection: %s", bus_error_message(&error));
+                 r = -ECONNREFUSED;
+-                goto fail;
++                goto fail2;
+         }
+         dbus_connection_set_exit_on_disconnect(bus, FALSE);
+@@ -669,7 +669,7 @@ static int connect_bus(DBusConnection **_bus) {
+ fail:
+         dbus_connection_close(bus);
+         dbus_connection_unref(bus);
+-
++fail2:
+         dbus_error_free(&error);
+         return r;
diff --git a/debian/patches/hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch b/debian/patches/hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch
new file mode 100644 (file)
index 0000000..2c5f6c5
--- /dev/null
@@ -0,0 +1,28 @@
+From: Unai Uribarri <unaiur@gmail.com>
+Date: Sat, 11 Jan 2014 09:19:41 -0500
+Subject: hwdb: Add support for Toshiba Satellite P75-A7200 keyboard
+
+(cherry picked from commit 2a61aaac6607d998e981481c34ae06e3e3ace4fe)
+---
+ hwdb/60-keyboard.hwdb | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 84a061f..e3d1f02 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -1012,6 +1012,14 @@ keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITEU940
+  KEYBOARD_KEY_13e=switchvideomode
+  KEYBOARD_KEY_13f=f21                                   # Touchpad toggle
++# Satellite P75-A7200
++keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75-A:pvr*
++ KEYBOARD_KEY_13c=brightnessdown
++ KEYBOARD_KEY_13d=brightnessup
++ KEYBOARD_KEY_13e=switchvideomode
++ KEYBOARD_KEY_13f=touchpad_toggle
++ KEYBOARD_KEY_9e=wlan
++
+ ###########################################################
+ # VIA
+ ###########################################################
diff --git a/debian/patches/hwdb-PCI-include-primary-model-string-in-subsystem-m.patch b/debian/patches/hwdb-PCI-include-primary-model-string-in-subsystem-m.patch
new file mode 100644 (file)
index 0000000..c08f314
--- /dev/null
@@ -0,0 +1,51581 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Mon, 14 Apr 2014 07:54:35 -0700
+Subject: hwdb: PCI - include "primary" model string in subsystem model string
+
+The data in the PCI ids file is randomly inconsistent. Many
+subvendor model strings just describe the "product" where the
+hardware is built into, not the hardware itself. This causes
+some "Network Card Model Foo" to show up as "Laptop Model Bar".
+
+Try to make the best out of this mess and concatenate both
+strings to describe the hardware.
+
+(cherry picked from commit d060b62fcb4746d3758c567e9379c6728a035b66)
+(cherry picked from commit 85f27e3b37972c7e123651d64abd8a305822d662)
+---
+ hwdb/20-pci-vendor-model.hwdb | 21356 ++++++++++++++++++++--------------------
+ 1 file changed, 10678 insertions(+), 10678 deletions(-)
+
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index d54cb2a..14637d3 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -15,10 +15,10 @@ pci:v0000001Cd00000001*
+  ID_MODEL_FROM_DATABASE=PCAN-PCI CAN-Bus controller
+ pci:v0000001Cd00000001sv0000001Csd00000004*
+- ID_MODEL_FROM_DATABASE=2 Channel CAN Bus SJC1000
++ ID_MODEL_FROM_DATABASE=PCAN-PCI CAN-Bus controller (2 Channel CAN Bus SJC1000)
+ pci:v0000001Cd00000001sv0000001Csd00000005*
+- ID_MODEL_FROM_DATABASE=2 Channel CAN Bus SJC1000 (Optically Isolated)
++ ID_MODEL_FROM_DATABASE=PCAN-PCI CAN-Bus controller (2 Channel CAN Bus SJC1000 (Optically Isolated))
+ pci:v0000003D*
+  ID_VENDOR_FROM_DATABASE=Lockheed Martin-Marietta Corp
+@@ -189,19 +189,19 @@ pci:v00000E11d00000046*
+  ID_MODEL_FROM_DATABASE=Smart Array 64xx
+ pci:v00000E11d00000046sv00000E11sd00004091*
+- ID_MODEL_FROM_DATABASE=Smart Array 6i
++ ID_MODEL_FROM_DATABASE=Smart Array 64xx (Smart Array 6i)
+ pci:v00000E11d00000046sv00000E11sd0000409A*
+- ID_MODEL_FROM_DATABASE=Smart Array 641
++ ID_MODEL_FROM_DATABASE=Smart Array 64xx (Smart Array 641)
+ pci:v00000E11d00000046sv00000E11sd0000409B*
+- ID_MODEL_FROM_DATABASE=Smart Array 642
++ ID_MODEL_FROM_DATABASE=Smart Array 64xx (Smart Array 642)
+ pci:v00000E11d00000046sv00000E11sd0000409C*
+- ID_MODEL_FROM_DATABASE=Smart Array 6400
++ ID_MODEL_FROM_DATABASE=Smart Array 64xx (Smart Array 6400)
+ pci:v00000E11d00000046sv00000E11sd0000409D*
+- ID_MODEL_FROM_DATABASE=Smart Array 6400 EM
++ ID_MODEL_FROM_DATABASE=Smart Array 64xx (Smart Array 6400 EM)
+ pci:v00000E11d00000049*
+  ID_MODEL_FROM_DATABASE=NC7132 Gigabit Upgrade Module
+@@ -321,7 +321,7 @@ pci:v00000E11d0000A0F0*
+  ID_MODEL_FROM_DATABASE=Advanced System Management Controller
+ pci:v00000E11d0000A0F0sv00000E11sd0000B0F3*
+- ID_MODEL_FROM_DATABASE=ProLiant DL360
++ ID_MODEL_FROM_DATABASE=Advanced System Management Controller (ProLiant DL360)
+ pci:v00000E11d0000A0F3*
+  ID_MODEL_FROM_DATABASE=Triflex PCI to ISA Bridge
+@@ -330,10 +330,10 @@ pci:v00000E11d0000A0F7*
+  ID_MODEL_FROM_DATABASE=PCI Hotplug Controller
+ pci:v00000E11d0000A0F7sv00008086sd0000002A*
+- ID_MODEL_FROM_DATABASE=PCI Hotplug Controller A
++ ID_MODEL_FROM_DATABASE=PCI Hotplug Controller (A)
+ pci:v00000E11d0000A0F7sv00008086sd0000002B*
+- ID_MODEL_FROM_DATABASE=PCI Hotplug Controller B
++ ID_MODEL_FROM_DATABASE=PCI Hotplug Controller (B)
+ pci:v00000E11d0000A0F8*
+  ID_MODEL_FROM_DATABASE=ZFMicro Chipset USB
+@@ -345,19 +345,19 @@ pci:v00000E11d0000AE10*
+  ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller
+ pci:v00000E11d0000AE10sv00000E11sd00004030*
+- ID_MODEL_FROM_DATABASE=Smart-2/P Array Controller
++ ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller (Smart-2/P Array Controller)
+ pci:v00000E11d0000AE10sv00000E11sd00004031*
+- ID_MODEL_FROM_DATABASE=Smart-2SL Array Controller
++ ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller (Smart-2SL Array Controller)
+ pci:v00000E11d0000AE10sv00000E11sd00004032*
+- ID_MODEL_FROM_DATABASE=Smart Array 3200 Controller
++ ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller (Smart Array 3200 Controller)
+ pci:v00000E11d0000AE10sv00000E11sd00004033*
+- ID_MODEL_FROM_DATABASE=Smart Array 3100ES Controller
++ ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller (Smart Array 3100ES Controller)
+ pci:v00000E11d0000AE10sv00000E11sd00004034*
+- ID_MODEL_FROM_DATABASE=Smart Array 221 Controller
++ ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller (Smart Array 221 Controller)
+ pci:v00000E11d0000AE29*
+  ID_MODEL_FROM_DATABASE=MIS-L
+@@ -468,13 +468,13 @@ pci:v00000E11d0000B178*
+  ID_MODEL_FROM_DATABASE=Smart Array 5i/532
+ pci:v00000E11d0000B178sv00000E11sd00004080*
+- ID_MODEL_FROM_DATABASE=Smart Array 5i
++ ID_MODEL_FROM_DATABASE=Smart Array 5i/532 (Smart Array 5i)
+ pci:v00000E11d0000B178sv00000E11sd00004082*
+- ID_MODEL_FROM_DATABASE=Smart Array 532
++ ID_MODEL_FROM_DATABASE=Smart Array 5i/532 (Smart Array 532)
+ pci:v00000E11d0000B178sv00000E11sd00004083*
+- ID_MODEL_FROM_DATABASE=Smart Array 5312
++ ID_MODEL_FROM_DATABASE=Smart Array 5i/532 (Smart Array 5312)
+ pci:v00000E11d0000B1A4*
+  ID_MODEL_FROM_DATABASE=NC7131 Gigabit Server Adapter
+@@ -516,7 +516,7 @@ pci:v00001000d00000001*
+  ID_MODEL_FROM_DATABASE=53c810
+ pci:v00001000d00000001sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C810AE PCI to SCSI I/O Processor
++ ID_MODEL_FROM_DATABASE=53c810 (LSI53C810AE PCI to SCSI I/O Processor)
+ pci:v00001000d00000002*
+  ID_MODEL_FROM_DATABASE=53c820
+@@ -525,7 +525,7 @@ pci:v00001000d00000003*
+  ID_MODEL_FROM_DATABASE=53c825
+ pci:v00001000d00000003sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide)
++ ID_MODEL_FROM_DATABASE=53c825 (LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide))
+ pci:v00001000d00000004*
+  ID_MODEL_FROM_DATABASE=53c815
+@@ -537,49 +537,49 @@ pci:v00001000d00000006*
+  ID_MODEL_FROM_DATABASE=53c860
+ pci:v00001000d00000006sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C860E PCI to Ultra SCSI I/O Processor
++ ID_MODEL_FROM_DATABASE=53c860 (LSI53C860E PCI to Ultra SCSI I/O Processor)
+ pci:v00001000d0000000A*
+  ID_MODEL_FROM_DATABASE=53c1510
+ pci:v00001000d0000000Asv00000E11sd0000B143*
+- ID_MODEL_FROM_DATABASE=Integrated Dual Channel Wide Ultra2 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c1510 (Integrated Dual Channel Wide Ultra2 SCSI Controller)
+ pci:v00001000d0000000Asv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)
++ ID_MODEL_FROM_DATABASE=53c1510 (LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode))
+ pci:v00001000d0000000B*
+  ID_MODEL_FROM_DATABASE=53C896/897
+ pci:v00001000d0000000Bsv00000E11sd00006004*
+- ID_MODEL_FROM_DATABASE=EOB003 Series SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53C896/897 (EOB003 Series SCSI host adapter)
+ pci:v00001000d0000000Bsv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller
++ ID_MODEL_FROM_DATABASE=53C896/897 (LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller)
+ pci:v00001000d0000000Bsv00001000sd00001010*
+- ID_MODEL_FROM_DATABASE=LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53C896/897 (LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter)
+ pci:v00001000d0000000Bsv00001000sd00001020*
+- ID_MODEL_FROM_DATABASE=LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53C896/897 (LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter)
+ pci:v00001000d0000000Bsv000013E9sd00001000*
+- ID_MODEL_FROM_DATABASE=6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics)
++ ID_MODEL_FROM_DATABASE=53C896/897 (6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics))
+ pci:v00001000d0000000C*
+  ID_MODEL_FROM_DATABASE=53c895
+ pci:v00001000d0000000Csv00001000sd00001010*
+- ID_MODEL_FROM_DATABASE=LSI8951U PCI to Ultra2 SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53c895 (LSI8951U PCI to Ultra2 SCSI host adapter)
+ pci:v00001000d0000000Csv00001000sd00001020*
+- ID_MODEL_FROM_DATABASE=LSI8952U PCI to Ultra2 SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53c895 (LSI8952U PCI to Ultra2 SCSI host adapter)
+ pci:v00001000d0000000Csv00001DE1sd00003906*
+- ID_MODEL_FROM_DATABASE=DC-390U2B SCSI adapter
++ ID_MODEL_FROM_DATABASE=53c895 (DC-390U2B SCSI adapter)
+ pci:v00001000d0000000Csv00001DE1sd00003907*
+- ID_MODEL_FROM_DATABASE=DC-390U2W
++ ID_MODEL_FROM_DATABASE=53c895 (DC-390U2W)
+ pci:v00001000d0000000D*
+  ID_MODEL_FROM_DATABASE=53c885
+@@ -588,151 +588,151 @@ pci:v00001000d0000000F*
+  ID_MODEL_FROM_DATABASE=53c875
+ pci:v00001000d0000000Fsv00000E11sd00007004*
+- ID_MODEL_FROM_DATABASE=Embedded Ultra Wide SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c875 (Embedded Ultra Wide SCSI Controller)
+ pci:v00001000d0000000Fsv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C876/E PCI to Dual Channel SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c875 (LSI53C876/E PCI to Dual Channel SCSI Controller)
+ pci:v00001000d0000000Fsv00001000sd00001010*
+- ID_MODEL_FROM_DATABASE=LSI22801 PCI to Dual Channel Ultra SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53c875 (LSI22801 PCI to Dual Channel Ultra SCSI host adapter)
+ pci:v00001000d0000000Fsv00001000sd00001020*
+- ID_MODEL_FROM_DATABASE=LSI22802 PCI to Dual Channel Ultra SCSI host adapter
++ ID_MODEL_FROM_DATABASE=53c875 (LSI22802 PCI to Dual Channel Ultra SCSI host adapter)
+ pci:v00001000d0000000Fsv00001092sd00008760*
+- ID_MODEL_FROM_DATABASE=FirePort 40 Dual SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c875 (FirePort 40 Dual SCSI Controller)
+ pci:v00001000d0000000Fsv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer Wide Ultra SCSI
++ ID_MODEL_FROM_DATABASE=53c875 (V5D Single Board Computer Wide Ultra SCSI)
+ pci:v00001000d0000000Fsv00001775sd000010D1*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer Ultra SCSI
++ ID_MODEL_FROM_DATABASE=53c875 (V5D Single Board Computer Ultra SCSI)
+ pci:v00001000d0000000Fsv00001DE1sd00003904*
+- ID_MODEL_FROM_DATABASE=DC390F/U Ultra Wide SCSI Adapter
++ ID_MODEL_FROM_DATABASE=53c875 (DC390F/U Ultra Wide SCSI Adapter)
+ pci:v00001000d0000000Fsv00004C53sd00001000*
+- ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard
++ ID_MODEL_FROM_DATABASE=53c875 (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
+ pci:v00001000d0000000Fsv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=53c875 (CT7 mainboard)
+ pci:v00001000d00000010*
+  ID_MODEL_FROM_DATABASE=53C1510
+ pci:v00001000d00000010sv00000E11sd00004040*
+- ID_MODEL_FROM_DATABASE=Integrated Smart Array Controller
++ ID_MODEL_FROM_DATABASE=53C1510 (Integrated Smart Array Controller)
+ pci:v00001000d00000010sv00000E11sd00004048*
+- ID_MODEL_FROM_DATABASE=RAID LC2 Controller
++ ID_MODEL_FROM_DATABASE=53C1510 (RAID LC2 Controller)
+ pci:v00001000d00000010sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode)
++ ID_MODEL_FROM_DATABASE=53C1510 (PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode))
+ pci:v00001000d00000012*
+  ID_MODEL_FROM_DATABASE=53c895a
+ pci:v00001000d00000012sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C895A PCI to Ultra2 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c895a (LSI53C895A PCI to Ultra2 SCSI Controller)
+ pci:v00001000d00000013*
+  ID_MODEL_FROM_DATABASE=53c875a
+ pci:v00001000d00000013sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C875A PCI to Ultra SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c875a (LSI53C875A PCI to Ultra SCSI Controller)
+ pci:v00001000d00000020*
+  ID_MODEL_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter
+ pci:v00001000d00000020sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter (LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller)
+ pci:v00001000d00000020sv0000107Bsd00001040*
+- ID_MODEL_FROM_DATABASE=Server Onboard 53C1010-33
++ ID_MODEL_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter (Server Onboard 53C1010-33)
+ pci:v00001000d00000020sv00001DE1sd00001020*
+- ID_MODEL_FROM_DATABASE=DC-390U3W
++ ID_MODEL_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter (DC-390U3W)
+ pci:v00001000d00000021*
+  ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter
+ pci:v00001000d00000021sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller)
+ pci:v00001000d00000021sv00001000sd00001010*
+- ID_MODEL_FROM_DATABASE=Asus TR-DLS onboard 53C1010-66
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (Asus TR-DLS onboard 53C1010-66)
+ pci:v00001000d00000021sv0000103Csd00001300*
+- ID_MODEL_FROM_DATABASE=Ultra160 SCSI [AB306A]
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (Ultra160 SCSI [AB306A])
+ pci:v00001000d00000021sv0000103Csd00001310*
+- ID_MODEL_FROM_DATABASE=Ultra160 SCSI [A9918A]
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (Ultra160 SCSI [A9918A])
+ pci:v00001000d00000021sv0000103Csd00001330*
+- ID_MODEL_FROM_DATABASE=Ultra160 SCSI [A7059A]
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (Ultra160 SCSI [A7059A])
+ pci:v00001000d00000021sv0000103Csd00001340*
+- ID_MODEL_FROM_DATABASE=Ultra160 SCSI [A7060A]
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (Ultra160 SCSI [A7060A])
+ pci:v00001000d00000021sv0000124Bsd00001070*
+- ID_MODEL_FROM_DATABASE=PMC-USCSI3
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (PMC-USCSI3)
+ pci:v00001000d00000021sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (CT8 mainboard)
+ pci:v00001000d00000021sv00004C53sd00001300*
+- ID_MODEL_FROM_DATABASE=P017 mezzanine (32-bit PMC)
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (P017 mezzanine (32-bit PMC))
+ pci:v00001000d00000021sv00004C53sd00001310*
+- ID_MODEL_FROM_DATABASE=P017 mezzanine (64-bit PMC)
++ ID_MODEL_FROM_DATABASE=53c1010 66MHz  Ultra3 SCSI Adapter (P017 mezzanine (64-bit PMC))
+ pci:v00001000d0000002F*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 IOV [Thunderbolt]
+ pci:v00001000d0000002Fsv00001028sd00001F3E*
+- ID_MODEL_FROM_DATABASE=SPERC 8
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 IOV [Thunderbolt] (SPERC 8)
+ pci:v00001000d00000030*
+  ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI
+ pci:v00001000d00000030sv00000E11sd000000DA*
+- ID_MODEL_FROM_DATABASE=ProLiant ML 350
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (ProLiant ML 350)
+ pci:v00001000d00000030sv00001028sd00000123*
+- ID_MODEL_FROM_DATABASE=LSI Logic 1020/1030
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (LSI Logic 1020/1030)
+ pci:v00001000d00000030sv00001028sd0000014A*
+- ID_MODEL_FROM_DATABASE=LSI Logic 1020/1030
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (LSI Logic 1020/1030)
+ pci:v00001000d00000030sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4)
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4))
+ pci:v00001000d00000030sv00001028sd00000183*
+- ID_MODEL_FROM_DATABASE=LSI Logic 1020/1030
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (LSI Logic 1020/1030)
+ pci:v00001000d00000030sv00001028sd0000018A*
+- ID_MODEL_FROM_DATABASE=PERC 4/IM
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (PERC 4/IM)
+ pci:v00001000d00000030sv00001028sd00001010*
+- ID_MODEL_FROM_DATABASE=LSI U320 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (LSI U320 SCSI Controller)
+ pci:v00001000d00000030sv0000103Csd000012C5*
+- ID_MODEL_FROM_DATABASE=Ultra320 SCSI [A7173A]
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (Ultra320 SCSI [A7173A])
+ pci:v00001000d00000030sv0000103Csd00001323*
+- ID_MODEL_FROM_DATABASE=Core I/O LAN/SCSI Combo [AB314A]
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (Core I/O LAN/SCSI Combo [AB314A])
+ pci:v00001000d00000030sv0000103Csd00003108*
+- ID_MODEL_FROM_DATABASE=Single Channel Ultra320 SCSI HBA G2
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (Single Channel Ultra320 SCSI HBA G2)
+ pci:v00001000d00000030sv0000124Bsd00001170*
+- ID_MODEL_FROM_DATABASE=PMC-USCSI320
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (PMC-USCSI320)
+ pci:v00001000d00000030sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=LSI Logic Parallel SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (LSI Logic Parallel SCSI Controller)
+ pci:v00001000d00000030sv00001734sd00001052*
+- ID_MODEL_FROM_DATABASE=PRIMERGY BX/RX/TX S2 series onboard SCSI(IME)
++ ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (PRIMERGY BX/RX/TX S2 series onboard SCSI(IME))
+ pci:v00001000d00000031*
+  ID_MODEL_FROM_DATABASE=53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
+@@ -741,7 +741,7 @@ pci:v00001000d00000032*
+  ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+ pci:v00001000d00000032sv00001000sd00001000*
+- ID_MODEL_FROM_DATABASE=LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI (LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller)
+ pci:v00001000d00000033*
+  ID_MODEL_FROM_DATABASE=1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+@@ -750,10 +750,10 @@ pci:v00001000d00000040*
+  ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+ pci:v00001000d00000040sv00001000sd00000033*
+- ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-2XR
++ ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI (MegaRAID SCSI 320-2XR)
+ pci:v00001000d00000040sv00001000sd00000066*
+- ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-2XRWS
++ ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI (MegaRAID SCSI 320-2XRWS)
+ pci:v00001000d00000041*
+  ID_MODEL_FROM_DATABASE=53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
+@@ -762,73 +762,73 @@ pci:v00001000d00000050*
+  ID_MODEL_FROM_DATABASE=SAS1064 PCI-X Fusion-MPT SAS
+ pci:v00001000d00000050sv00001028sd00001F04*
+- ID_MODEL_FROM_DATABASE=SAS 5/E
++ ID_MODEL_FROM_DATABASE=SAS1064 PCI-X Fusion-MPT SAS (SAS 5/E)
+ pci:v00001000d00000050sv00001028sd00001F09*
+- ID_MODEL_FROM_DATABASE=SAS 5i/R
++ ID_MODEL_FROM_DATABASE=SAS1064 PCI-X Fusion-MPT SAS (SAS 5i/R)
+ pci:v00001000d00000054*
+  ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS
+ pci:v00001000d00000054sv00001028sd00001F04*
+- ID_MODEL_FROM_DATABASE=SAS 5/E Adapter Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS 5/E Adapter Controller)
+ pci:v00001000d00000054sv00001028sd00001F05*
+- ID_MODEL_FROM_DATABASE=SAS 5/i Adapter Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS 5/i Adapter Controller)
+ pci:v00001000d00000054sv00001028sd00001F06*
+- ID_MODEL_FROM_DATABASE=SAS 5/i Integrated Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS 5/i Integrated Controller)
+ pci:v00001000d00000054sv00001028sd00001F07*
+- ID_MODEL_FROM_DATABASE=SAS 5/iR Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS 5/iR Integrated RAID Controller)
+ pci:v00001000d00000054sv00001028sd00001F08*
+- ID_MODEL_FROM_DATABASE=SAS 5/iR Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS 5/iR Integrated RAID Controller)
+ pci:v00001000d00000054sv00001028sd00001F09*
+- ID_MODEL_FROM_DATABASE=SAS 5/iR Adapter RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS 5/iR Adapter RAID Controller)
+ pci:v00001000d00000054sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=SAS Controller
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS Controller)
+ pci:v00001000d00000055*
+  ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS
+ pci:v00001000d00000055sv00001033sd00008336*
+- ID_MODEL_FROM_DATABASE=SAS1068
++ ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS (SAS1068)
+ pci:v00001000d00000056*
+  ID_MODEL_FROM_DATABASE=SAS1064ET PCI-Express Fusion-MPT SAS
+ pci:v00001000d00000056sv00001014sd000003BB*
+- ID_MODEL_FROM_DATABASE=ServeRAID BR10il SAS/SATA Controller v2
++ ID_MODEL_FROM_DATABASE=SAS1064ET PCI-Express Fusion-MPT SAS (ServeRAID BR10il SAS/SATA Controller v2)
+ pci:v00001000d00000057*
+  ID_MODEL_FROM_DATABASE=M1064E MegaRAID SAS
+ pci:v00001000d00000057sv00008086sd0000346C*
+- ID_MODEL_FROM_DATABASE=Embedded Software RAID Technology II (ESTRII)
++ ID_MODEL_FROM_DATABASE=M1064E MegaRAID SAS (Embedded Software RAID Technology II (ESTRII))
+ pci:v00001000d00000058*
+  ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS
+ pci:v00001000d00000058sv00001000sd00003140*
+- ID_MODEL_FROM_DATABASE=SAS3081E-R 8-Port SAS/SATA Host Bus Adapter
++ ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS (SAS3081E-R 8-Port SAS/SATA Host Bus Adapter)
+ pci:v00001000d00000058sv00001028sd0000021D*
+- ID_MODEL_FROM_DATABASE=SAS 6/iR Integrated Workstations RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS (SAS 6/iR Integrated Workstations RAID Controller)
+ pci:v00001000d00000058sv00001028sd00001F0E*
+- ID_MODEL_FROM_DATABASE=SAS 6/iR Adapter RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS (SAS 6/iR Adapter RAID Controller)
+ pci:v00001000d00000058sv00001028sd00001F0F*
+- ID_MODEL_FROM_DATABASE=SAS 6/iR Integrated Blades RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS (SAS 6/iR Integrated Blades RAID Controller)
+ pci:v00001000d00000058sv00001028sd00001F10*
+- ID_MODEL_FROM_DATABASE=SAS 6/iR Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS (SAS 6/iR Integrated RAID Controller)
+ pci:v00001000d00000058sv0000103Csd00003229*
+- ID_MODEL_FROM_DATABASE=SC44Ge Host Bus Adapter
++ ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS (SC44Ge Host Bus Adapter)
+ pci:v00001000d00000059*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 8208ELP/8208ELP
+@@ -840,97 +840,97 @@ pci:v00001000d0000005B*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt]
+ pci:v00001000d0000005Bsv00001000sd00009265*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9265-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9265-8i)
+ pci:v00001000d0000005Bsv00001000sd00009266*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9266-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9266-8i)
+ pci:v00001000d0000005Bsv00001000sd00009267*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9267-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9267-8i)
+ pci:v00001000d0000005Bsv00001000sd00009268*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9265CV-8i / 9270CV-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9265CV-8i / 9270CV-8i)
+ pci:v00001000d0000005Bsv00001000sd00009269*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9266-4i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9266-4i)
+ pci:v00001000d0000005Bsv00001000sd00009270*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9270-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9270-8i)
+ pci:v00001000d0000005Bsv00001000sd00009271*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9271-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9271-8i)
+ pci:v00001000d0000005Bsv00001000sd00009272*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9272-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9272-8i)
+ pci:v00001000d0000005Bsv00001000sd00009273*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9270CV-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9270CV-8i)
+ pci:v00001000d0000005Bsv00001000sd00009274*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9270-4i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9270-4i)
+ pci:v00001000d0000005Bsv00001000sd00009275*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9271-8iCC
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9271-8iCC)
+ pci:v00001000d0000005Bsv00001000sd00009276*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9271-4i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9271-4i)
+ pci:v00001000d0000005Bsv00001000sd00009285*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9285-8e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9285-8e)
+ pci:v00001000d0000005Bsv00001000sd00009288*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9285CV-8e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9285CV-8e)
+ pci:v00001000d0000005Bsv00001000sd00009290*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9286-8e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9286-8e)
+ pci:v00001000d0000005Bsv00001000sd00009291*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9286CV-8e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9286CV-8e)
+ pci:v00001000d0000005Bsv00001000sd00009295*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9286CV-8eCC
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (MegaRAID SAS 9286CV-8eCC)
+ pci:v00001000d0000005Bsv00001014sd0000040B*
+- ID_MODEL_FROM_DATABASE=ServeRAID M5110 SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (ServeRAID M5110 SAS/SATA Controller)
+ pci:v00001000d0000005Bsv00001014sd0000040C*
+- ID_MODEL_FROM_DATABASE=ServeRAID M5120 SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (ServeRAID M5120 SAS/SATA Controller)
+ pci:v00001000d0000005Bsv00001014sd00000412*
+- ID_MODEL_FROM_DATABASE=ServeRAID M5110e SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (ServeRAID M5110e SAS/SATA Controller)
+ pci:v00001000d0000005Bsv00001028sd00001F2D*
+- ID_MODEL_FROM_DATABASE=PERC H810 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H810 Adapter)
+ pci:v00001000d0000005Bsv00001028sd00001F30*
+- ID_MODEL_FROM_DATABASE=PERC H710 Embedded
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710 Embedded)
+ pci:v00001000d0000005Bsv00001028sd00001F31*
+- ID_MODEL_FROM_DATABASE=PERC H710P Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710P Adapter)
+ pci:v00001000d0000005Bsv00001028sd00001F33*
+- ID_MODEL_FROM_DATABASE=PERC H710P Mini (for blades)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710P Mini (for blades))
+ pci:v00001000d0000005Bsv00001028sd00001F34*
+- ID_MODEL_FROM_DATABASE=PERC H710P Mini (for monolithics)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710P Mini (for monolithics))
+ pci:v00001000d0000005Bsv00001028sd00001F35*
+- ID_MODEL_FROM_DATABASE=PERC H710 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710 Adapter)
+ pci:v00001000d0000005Bsv00001028sd00001F37*
+- ID_MODEL_FROM_DATABASE=PERC H710 Mini (for blades)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710 Mini (for blades))
+ pci:v00001000d0000005Bsv00001028sd00001F38*
+- ID_MODEL_FROM_DATABASE=PERC H710 Mini (for monolithics)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (PERC H710 Mini (for monolithics))
+ pci:v00001000d0000005Bsv000015D9sd00000690*
+- ID_MODEL_FROM_DATABASE=LSI MegaRAID ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (LSI MegaRAID ROMB)
+ pci:v00001000d0000005Bsv00008086sd00003510*
+- ID_MODEL_FROM_DATABASE=RMS25PB080 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (RMS25PB080 RAID Controller)
+ pci:v00001000d0000005Bsv00008086sd00003513*
+- ID_MODEL_FROM_DATABASE=RMS25CB080 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] (RMS25CB080 RAID Controller)
+ pci:v00001000d0000005C*
+  ID_MODEL_FROM_DATABASE=SAS1064A PCI-X Fusion-MPT SAS
+@@ -939,31 +939,31 @@ pci:v00001000d0000005D*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader]
+ pci:v00001000d0000005Dsv00001028sd00001F41*
+- ID_MODEL_FROM_DATABASE=PERC H830 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H830 Adapter)
+ pci:v00001000d0000005Dsv00001028sd00001F42*
+- ID_MODEL_FROM_DATABASE=PERC H730P Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730P Adapter)
+ pci:v00001000d0000005Dsv00001028sd00001F43*
+- ID_MODEL_FROM_DATABASE=PERC H730 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730 Adapter)
+ pci:v00001000d0000005Dsv00001028sd00001F47*
+- ID_MODEL_FROM_DATABASE=PERC H730P Mini
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730P Mini)
+ pci:v00001000d0000005Dsv00001028sd00001F48*
+- ID_MODEL_FROM_DATABASE=PERC H730P Mini (for blades)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730P Mini (for blades))
+ pci:v00001000d0000005Dsv00001028sd00001F49*
+- ID_MODEL_FROM_DATABASE=PERC H730 Mini
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730 Mini)
+ pci:v00001000d0000005Dsv00001028sd00001F4A*
+- ID_MODEL_FROM_DATABASE=PERC H730 Mini (for blades)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (PERC H730 Mini (for blades))
+ pci:v00001000d0000005Dsv000017AAsd00001052*
+- ID_MODEL_FROM_DATABASE=ThinkServer RAID 720i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (ThinkServer RAID 720i)
+ pci:v00001000d0000005Dsv000017AAsd00001053*
+- ID_MODEL_FROM_DATABASE=ThinkServer RAID 720ix
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] (ThinkServer RAID 720ix)
+ pci:v00001000d0000005E*
+  ID_MODEL_FROM_DATABASE=SAS1066 PCI-X Fusion-MPT SAS
+@@ -972,109 +972,109 @@ pci:v00001000d0000005F*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury]
+ pci:v00001000d0000005Fsv00001028sd00001F44*
+- ID_MODEL_FROM_DATABASE=PERC H330 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] (PERC H330 Adapter)
+ pci:v00001000d0000005Fsv00001028sd00001F4B*
+- ID_MODEL_FROM_DATABASE=PERC H330 Mini
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] (PERC H330 Mini)
+ pci:v00001000d0000005Fsv00001028sd00001F4C*
+- ID_MODEL_FROM_DATABASE=PERC H330 Mini (for blades)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] (PERC H330 Mini (for blades))
+ pci:v00001000d0000005Fsv00001028sd00001F4D*
+- ID_MODEL_FROM_DATABASE=PERC H330 Embedded (for monolithic)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] (PERC H330 Embedded (for monolithic))
+ pci:v00001000d00000060*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078
+ pci:v00001000d00000060sv00001000sd00001006*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8888ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS 8888ELP)
+ pci:v00001000d00000060sv00001000sd0000100A*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8708ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS 8708ELP)
+ pci:v00001000d00000060sv00001000sd0000100E*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8884E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS 8884E)
+ pci:v00001000d00000060sv00001000sd0000100F*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8708E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS 8708E)
+ pci:v00001000d00000060sv00001000sd00001010*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 350-8ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SATA 350-8ELP)
+ pci:v00001000d00000060sv00001000sd00001011*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 350-4ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SATA 350-4ELP)
+ pci:v00001000d00000060sv00001000sd00001012*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8704ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS 8704ELP)
+ pci:v00001000d00000060sv00001000sd00001016*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8880EM2
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS 8880EM2)
+ pci:v00001000d00000060sv00001014sd00000363*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv00001014sd00000364*
+- ID_MODEL_FROM_DATABASE=SystemX MegaRAID SAS 8808E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (SystemX MegaRAID SAS 8808E)
+ pci:v00001000d00000060sv00001014sd00000365*
+- ID_MODEL_FROM_DATABASE=SystemX MegaRAID SAS 8884E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (SystemX MegaRAID SAS 8884E)
+ pci:v00001000d00000060sv00001014sd00000379*
+- ID_MODEL_FROM_DATABASE=SystemX MegaRAID SAS 8880EM2
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (SystemX MegaRAID SAS 8880EM2)
+ pci:v00001000d00000060sv00001028sd00001F0A*
+- ID_MODEL_FROM_DATABASE=PERC 6/E Adapter RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (PERC 6/E Adapter RAID Controller)
+ pci:v00001000d00000060sv00001028sd00001F0B*
+- ID_MODEL_FROM_DATABASE=PERC 6/i Adapter RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (PERC 6/i Adapter RAID Controller)
+ pci:v00001000d00000060sv00001028sd00001F0C*
+- ID_MODEL_FROM_DATABASE=PERC 6/i Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (PERC 6/i Integrated RAID Controller)
+ pci:v00001000d00000060sv00001028sd00001F0D*
+- ID_MODEL_FROM_DATABASE=PERC 6/i Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (PERC 6/i Integrated RAID Controller)
+ pci:v00001000d00000060sv00001028sd00001F11*
+- ID_MODEL_FROM_DATABASE=CERC 6/i Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (CERC 6/i Integrated RAID Controller)
+ pci:v00001000d00000060sv00001033sd0000835A*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv00001043sd0000824D*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv00001170sd0000002F*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv00001170sd00000036*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv000015D9sd0000C080*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv000017AAsd00006B7C*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv000018A1sd00000003*
+- ID_MODEL_FROM_DATABASE=LSI MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (LSI MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000060sv00008086sd00001006*
+- ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS28EP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (RAID Controller SRCSAS28EP)
+ pci:v00001000d00000060sv00008086sd0000100A*
+- ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS28EV
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (RAID Controller SRCSAS28EV)
+ pci:v00001000d00000060sv00008086sd00001010*
+- ID_MODEL_FROM_DATABASE=RAID Controller SRCSATA28E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (RAID Controller SRCSATA28E)
+ pci:v00001000d00000060sv00008086sd000034CC*
+- ID_MODEL_FROM_DATABASE=Integrated RAID Controller SROMBSAS28E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (Integrated RAID Controller SROMBSAS28E)
+ pci:v00001000d00000060sv00008086sd000034CD*
+- ID_MODEL_FROM_DATABASE=Integrated RAID Controller SROMBSAS28E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (Integrated RAID Controller SROMBSAS28E)
+ pci:v00001000d00000060sv00008086sd00003505*
+- ID_MODEL_FROM_DATABASE=Integrated RAID Controller SROMBSASMP2
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 (Integrated RAID Controller SROMBSASMP2)
+ pci:v00001000d00000062*
+  ID_MODEL_FROM_DATABASE=SAS1078 PCI-Express Fusion-MPT SAS
+@@ -1101,100 +1101,100 @@ pci:v00001000d00000072*
+  ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
+ pci:v00001000d00000072sv00001028sd00001F1C*
+- ID_MODEL_FROM_DATABASE=6Gbps SAS HBA Adapter
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (6Gbps SAS HBA Adapter)
+ pci:v00001000d00000072sv00001028sd00001F1D*
+- ID_MODEL_FROM_DATABASE=PERC H200 Adapter
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (PERC H200 Adapter)
+ pci:v00001000d00000072sv00001028sd00001F1E*
+- ID_MODEL_FROM_DATABASE=PERC H200 Integrated
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (PERC H200 Integrated)
+ pci:v00001000d00000072sv00001028sd00001F1F*
+- ID_MODEL_FROM_DATABASE=PERC H200 Modular
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (PERC H200 Modular)
+ pci:v00001000d00000072sv00001028sd00001F20*
+- ID_MODEL_FROM_DATABASE=PERC H200 Embedded
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (PERC H200 Embedded)
+ pci:v00001000d00000072sv00001028sd00001F22*
+- ID_MODEL_FROM_DATABASE=Internal Tape Adapter
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (Internal Tape Adapter)
+ pci:v00001000d00000072sv00008086sd0000350F*
+- ID_MODEL_FROM_DATABASE=RMS2LL040 RAID Controller
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (RMS2LL040 RAID Controller)
+ pci:v00001000d00000073*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon]
+ pci:v00001000d00000073sv00001000sd00009240*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9240-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (MegaRAID SAS 9240-8i)
+ pci:v00001000d00000073sv00001000sd00009241*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9240-4i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (MegaRAID SAS 9240-4i)
+ pci:v00001000d00000073sv00001000sd000092A0*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9220-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (MegaRAID SAS 9220-8i)
+ pci:v00001000d00000073sv00001014sd000003B1*
+- ID_MODEL_FROM_DATABASE=ServeRAID M1015 SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (ServeRAID M1015 SAS/SATA Controller)
+ pci:v00001000d00000073sv00001028sd00001F4E*
+- ID_MODEL_FROM_DATABASE=PERC H310 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Adapter)
+ pci:v00001000d00000073sv00001028sd00001F4F*
+- ID_MODEL_FROM_DATABASE=PERC H310 Integrated
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Integrated)
+ pci:v00001000d00000073sv00001028sd00001F50*
+- ID_MODEL_FROM_DATABASE=PERC H310 Mini Blades
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Mini Blades)
+ pci:v00001000d00000073sv00001028sd00001F51*
+- ID_MODEL_FROM_DATABASE=PERC H310 Mini Monolithics
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Mini Monolithics)
+ pci:v00001000d00000073sv00001028sd00001F52*
+- ID_MODEL_FROM_DATABASE=PERC H310 Embedded1
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Embedded1)
+ pci:v00001000d00000073sv00001028sd00001F53*
+- ID_MODEL_FROM_DATABASE=PERC H310 Embedded2
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Embedded2)
+ pci:v00001000d00000073sv00001028sd00001F54*
+- ID_MODEL_FROM_DATABASE=PERC H310 Reserved
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (PERC H310 Reserved)
+ pci:v00001000d00000073sv00001054sd00003035*
+- ID_MODEL_FROM_DATABASE=LSI MegaRAID SAS 9240-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (LSI MegaRAID SAS 9240-8i)
+ pci:v00001000d00000073sv00001137sd00000072*
+- ID_MODEL_FROM_DATABASE=2004 iMR ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (2004 iMR ROMB)
+ pci:v00001000d00000073sv00001137sd00000073*
+- ID_MODEL_FROM_DATABASE=2008 ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (2008 ROMB)
+ pci:v00001000d00000073sv00001137sd000000B0*
+- ID_MODEL_FROM_DATABASE=UCSC RAID SAS 2008M-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (UCSC RAID SAS 2008M-8i)
+ pci:v00001000d00000073sv00001137sd000000B1*
+- ID_MODEL_FROM_DATABASE=UCSC RAID SAS 2008M-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (UCSC RAID SAS 2008M-8i)
+ pci:v00001000d00000073sv00001137sd000000C2*
+- ID_MODEL_FROM_DATABASE=UCS E-Series Double Wide
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (UCS E-Series Double Wide)
+ pci:v00001000d00000073sv00001137sd000000C3*
+- ID_MODEL_FROM_DATABASE=UCS E-Series Single Wide
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (UCS E-Series Single Wide)
+ pci:v00001000d00000073sv000015D9sd00000400*
+- ID_MODEL_FROM_DATABASE=Supermicro SMC2008-iMR
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (Supermicro SMC2008-iMR)
+ pci:v00001000d00000073sv00001734sd00001177*
+- ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (RAID Ctrl SAS 6G 0/1 (D2607))
+ pci:v00001000d00000073sv000017AAsd00001051*
+- ID_MODEL_FROM_DATABASE=ThinkServer RAID 510i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (ThinkServer RAID 510i)
+ pci:v00001000d00000073sv00008086sd0000350D*
+- ID_MODEL_FROM_DATABASE=RMS2AF040 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (RMS2AF040 RAID Controller)
+ pci:v00001000d00000073sv00008086sd00009240*
+- ID_MODEL_FROM_DATABASE=RAID Controller RS2WC080
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (RAID Controller RS2WC080)
+ pci:v00001000d00000073sv00008086sd00009241*
+- ID_MODEL_FROM_DATABASE=RAID Controller RS2WC040
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] (RAID Controller RS2WC040)
+ pci:v00001000d00000074*
+  ID_MODEL_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator]
+@@ -1209,106 +1209,106 @@ pci:v00001000d00000079*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator]
+ pci:v00001000d00000079sv00001000sd00009251*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-4ix
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260-4ix)
+ pci:v00001000d00000079sv00001000sd00009256*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-8ix
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260-8ix)
+ pci:v00001000d00000079sv00001000sd00009260*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-4i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260-4i)
+ pci:v00001000d00000079sv00001000sd00009261*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260-8i)
+ pci:v00001000d00000079sv00001000sd00009262*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9262-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9262-8i)
+ pci:v00001000d00000079sv00001000sd00009263*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9261-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9261-8i)
+ pci:v00001000d00000079sv00001000sd00009264*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9264-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9264-8i)
+ pci:v00001000d00000079sv00001000sd00009267*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260CV-4i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260CV-4i)
+ pci:v00001000d00000079sv00001000sd00009268*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260CV-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260CV-8i)
+ pci:v00001000d00000079sv00001000sd00009275*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280-8ex
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9280-8ex)
+ pci:v00001000d00000079sv00001000sd00009276*
+- ID_MODEL_FROM_DATABASE=MR9260-16i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MR9260-16i)
+ pci:v00001000d00000079sv00001000sd00009280*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280-8e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9280-8e)
+ pci:v00001000d00000079sv00001000sd00009281*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9281-8E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9281-8E)
+ pci:v00001000d00000079sv00001000sd00009282*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280-4i4e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9280-4i4e)
+ pci:v00001000d00000079sv00001000sd00009290*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280DE-24i4e
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9280DE-24i4e)
+ pci:v00001000d00000079sv00001014sd000003B2*
+- ID_MODEL_FROM_DATABASE=ServeRAID M5015 SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (ServeRAID M5015 SAS/SATA Controller)
+ pci:v00001000d00000079sv00001014sd000003B3*
+- ID_MODEL_FROM_DATABASE=ServeRAID M5025 SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (ServeRAID M5025 SAS/SATA Controller)
+ pci:v00001000d00000079sv00001028sd00001F15*
+- ID_MODEL_FROM_DATABASE=PERC H800 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PERC H800 Adapter)
+ pci:v00001000d00000079sv00001028sd00001F16*
+- ID_MODEL_FROM_DATABASE=PERC H700 Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PERC H700 Adapter)
+ pci:v00001000d00000079sv00001028sd00001F17*
+- ID_MODEL_FROM_DATABASE=PERC H700 Integrated
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PERC H700 Integrated)
+ pci:v00001000d00000079sv00001028sd00001F18*
+- ID_MODEL_FROM_DATABASE=PERC H700 Modular
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PERC H700 Modular)
+ pci:v00001000d00000079sv00001028sd00001F1A*
+- ID_MODEL_FROM_DATABASE=PERC H800 Proto Adapter
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PERC H800 Proto Adapter)
+ pci:v00001000d00000079sv00001028sd00001F1B*
+- ID_MODEL_FROM_DATABASE=PERC H700 Integrated
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PERC H700 Integrated)
+ pci:v00001000d00000079sv00001043sd00008480*
+- ID_MODEL_FROM_DATABASE=PIKE-2108 16PD
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (PIKE-2108 16PD)
+ pci:v00001000d00000079sv00001734sd00001176*
+- ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 5/6 512MB (D2616)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (RAID Ctrl SAS 6G 5/6 512MB (D2616))
+ pci:v00001000d00000079sv00001734sd00001177*
+- ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (RAID Ctrl SAS 6G 0/1 (D2607))
+ pci:v00001000d00000079sv00008086sd00009256*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260DE-8i
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (MegaRAID SAS 9260DE-8i)
+ pci:v00001000d00000079sv00008086sd00009260*
+- ID_MODEL_FROM_DATABASE=RAID Controller RS2BL040
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (RAID Controller RS2BL040)
+ pci:v00001000d00000079sv00008086sd00009261*
+- ID_MODEL_FROM_DATABASE=RAID Controller RS2BL080
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (RAID Controller RS2BL080)
+ pci:v00001000d00000079sv00008086sd00009264*
+- ID_MODEL_FROM_DATABASE=Warm Beach (Caster Lite)
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (Warm Beach (Caster Lite))
+ pci:v00001000d00000079sv00008086sd00009267*
+- ID_MODEL_FROM_DATABASE=RAID Controller RS2VB040
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (RAID Controller RS2VB040)
+ pci:v00001000d00000079sv00008086sd00009268*
+- ID_MODEL_FROM_DATABASE=RAID Controller RS2VB080
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] (RAID Controller RS2VB080)
+ pci:v00001000d0000007C*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078DE
+ pci:v00001000d0000007Csv00001014sd00000395*
+- ID_MODEL_FROM_DATABASE=ServeRAID-AR10is SAS/SATA Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078DE (ServeRAID-AR10is SAS/SATA Controller)
+ pci:v00001000d0000007E*
+  ID_MODEL_FROM_DATABASE=SSS6200 PCI-Express Flash SSD
+@@ -1338,16 +1338,16 @@ pci:v00001000d00000087*
+  ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2
+ pci:v00001000d00000087sv00001590sd00000044*
+- ID_MODEL_FROM_DATABASE=H220i
++ ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 (H220i)
+ pci:v00001000d0000008F*
+  ID_MODEL_FROM_DATABASE=53c875J
+ pci:v00001000d0000008Fsv00001092sd00008000*
+- ID_MODEL_FROM_DATABASE=FirePort 40 SCSI Controller
++ ID_MODEL_FROM_DATABASE=53c875J (FirePort 40 SCSI Controller)
+ pci:v00001000d0000008Fsv00001092sd00008760*
+- ID_MODEL_FROM_DATABASE=FirePort 40 Dual SCSI Host Adapter
++ ID_MODEL_FROM_DATABASE=53c875J (FirePort 40 Dual SCSI Host Adapter)
+ pci:v00001000d00000090*
+  ID_MODEL_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3
+@@ -1368,151 +1368,151 @@ pci:v00001000d00000097*
+  ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3
+ pci:v00001000d00000097sv00001028sd00001F45*
+- ID_MODEL_FROM_DATABASE=12GB/s HBA internal
++ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (12GB/s HBA internal)
+ pci:v00001000d00000097sv00001028sd00001F46*
+- ID_MODEL_FROM_DATABASE=12GB/s HBA external
++ ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 (12GB/s HBA external)
+ pci:v00001000d00000407*
+  ID_MODEL_FROM_DATABASE=MegaRAID
+ pci:v00001000d00000407sv00001000sd00000530*
+- ID_MODEL_FROM_DATABASE=MegaRAID 530 SCSI 320-0X RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (530 SCSI 320-0X RAID Controller)
+ pci:v00001000d00000407sv00001000sd00000531*
+- ID_MODEL_FROM_DATABASE=MegaRAID 531 SCSI 320-4X RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (531 SCSI 320-4X RAID Controller)
+ pci:v00001000d00000407sv00001000sd00000532*
+- ID_MODEL_FROM_DATABASE=MegaRAID 532 SCSI 320-2X RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (532 SCSI 320-2X RAID Controller)
+ pci:v00001000d00000407sv00001028sd00000531*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge Expandable RAID Controller 4/QC)
+ pci:v00001000d00000407sv00001028sd00000533*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge Expandable RAID Controller 4/QC)
+ pci:v00001000d00000407sv00008086sd00000530*
+- ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SRCZCRX
++ ID_MODEL_FROM_DATABASE=MegaRAID (Intel RAID Controller SRCZCRX)
+ pci:v00001000d00000407sv00008086sd00000532*
+- ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SRCU42X
++ ID_MODEL_FROM_DATABASE=MegaRAID (Intel RAID Controller SRCU42X)
+ pci:v00001000d00000408*
+  ID_MODEL_FROM_DATABASE=MegaRAID
+ pci:v00001000d00000408sv00001000sd00000001*
+- ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-1E RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (SCSI 320-1E RAID Controller)
+ pci:v00001000d00000408sv00001000sd00000002*
+- ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-2E RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (SCSI 320-2E RAID Controller)
+ pci:v00001000d00000408sv00001025sd0000004D*
+- ID_MODEL_FROM_DATABASE=MegaRAID ACER ROMB-2E RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (ACER ROMB-2E RAID Controller)
+ pci:v00001000d00000408sv00001028sd00000001*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC4e/SC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller PERC4e/SC)
+ pci:v00001000d00000408sv00001028sd00000002*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC4e/DC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller PERC4e/DC)
+ pci:v00001000d00000408sv00001028sd00000012*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller RAC4
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller RAC4)
+ pci:v00001000d00000408sv00001028sd00000015*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC5
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller PERC5)
+ pci:v00001000d00000408sv00001028sd00001F03*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC5
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller PERC5)
+ pci:v00001000d00000408sv00001734sd00001065*
+- ID_MODEL_FROM_DATABASE=FSC MegaRAID PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID (FSC MegaRAID PCI Express ROMB)
+ pci:v00001000d00000408sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SRCU42E
++ ID_MODEL_FROM_DATABASE=MegaRAID (Intel RAID Controller SRCU42E)
+ pci:v00001000d00000408sv00008086sd00003449*
+- ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SROMBU
++ ID_MODEL_FROM_DATABASE=MegaRAID (Intel RAID Controller SROMBU)
+ pci:v00001000d00000409*
+  ID_MODEL_FROM_DATABASE=MegaRAID
+ pci:v00001000d00000409sv00001000sd00003004*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-4X RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (SATA 300-4X RAID Controller)
+ pci:v00001000d00000409sv00001000sd00003008*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-8X RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (SATA 300-8X RAID Controller)
+ pci:v00001000d00000409sv00008086sd00003008*
+- ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCS28X
++ ID_MODEL_FROM_DATABASE=MegaRAID (RAID Controller SRCS28X)
+ pci:v00001000d00000409sv00008086sd00003431*
+- ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller Alief SROMBU42E
++ ID_MODEL_FROM_DATABASE=MegaRAID (RAID Controller Alief SROMBU42E)
+ pci:v00001000d00000409sv00008086sd00003499*
+- ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller Harwich SROMBU42E
++ ID_MODEL_FROM_DATABASE=MegaRAID (RAID Controller Harwich SROMBU42E)
+ pci:v00001000d00000411*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068
+ pci:v00001000d00000411sv00001000sd00001001*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8408E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS 8408E)
+ pci:v00001000d00000411sv00001000sd00001002*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8480E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS 8480E)
+ pci:v00001000d00000411sv00001000sd00001003*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8344ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS 8344ELP)
+ pci:v00001000d00000411sv00001000sd00001004*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8308ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS 8308ELP)
+ pci:v00001000d00000411sv00001000sd00001008*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 84016E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS 84016E)
+ pci:v00001000d00000411sv00001000sd0000100C*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-12E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SATA 300-12E)
+ pci:v00001000d00000411sv00001000sd0000100D*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-16E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SATA 300-16E)
+ pci:v00001000d00000411sv00001000sd00002004*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-8ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SATA 300-8ELP)
+ pci:v00001000d00000411sv00001000sd00002005*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-4ELP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SATA 300-4ELP)
+ pci:v00001000d00000411sv00001033sd00008287*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000411sv00001054sd00003016*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS RoMB Server
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS RoMB Server)
+ pci:v00001000d00000411sv00001734sd00001081*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000411sv00001734sd000010A3*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (MegaRAID SAS PCI Express ROMB)
+ pci:v00001000d00000411sv00008086sd00001001*
+- ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS18E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (RAID Controller SRCSAS18E)
+ pci:v00001000d00000411sv00008086sd00001003*
+- ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS144E
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (RAID Controller SRCSAS144E)
+ pci:v00001000d00000411sv00008086sd00003500*
+- ID_MODEL_FROM_DATABASE=SROMBSAS18E RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (SROMBSAS18E RAID Controller)
+ pci:v00001000d00000411sv00008086sd00003501*
+- ID_MODEL_FROM_DATABASE=SROMBSAS18E RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (SROMBSAS18E RAID Controller)
+ pci:v00001000d00000411sv00008086sd00003504*
+- ID_MODEL_FROM_DATABASE=SROMBSAS18E RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 (SROMBSAS18E RAID Controller)
+ pci:v00001000d00000413*
+  ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 [Verde ZCR]
+ pci:v00001000d00000413sv00001000sd00001005*
+- ID_MODEL_FROM_DATABASE=MegaRAID SAS 8300XLP
++ ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 [Verde ZCR] (MegaRAID SAS 8300XLP)
+ pci:v00001000d00000621*
+  ID_MODEL_FROM_DATABASE=FC909 Fibre Channel Adapter
+@@ -1521,7 +1521,7 @@ pci:v00001000d00000622*
+  ID_MODEL_FROM_DATABASE=FC929 Fibre Channel Adapter
+ pci:v00001000d00000622sv00001000sd00001020*
+- ID_MODEL_FROM_DATABASE=44929 O Dual Fibre Channel card
++ ID_MODEL_FROM_DATABASE=FC929 Fibre Channel Adapter (44929 O Dual Fibre Channel card)
+ pci:v00001000d00000623*
+  ID_MODEL_FROM_DATABASE=FC929 LAN
+@@ -1536,7 +1536,7 @@ pci:v00001000d00000626*
+  ID_MODEL_FROM_DATABASE=FC929X Fibre Channel Adapter
+ pci:v00001000d00000626sv00001000sd00001010*
+- ID_MODEL_FROM_DATABASE=7202-XP-LC Dual Fibre Channel card
++ ID_MODEL_FROM_DATABASE=FC929X Fibre Channel Adapter (7202-XP-LC Dual Fibre Channel card)
+ pci:v00001000d00000627*
+  ID_MODEL_FROM_DATABASE=FC929X LAN
+@@ -1563,7 +1563,7 @@ pci:v00001000d00000702*
+  ID_MODEL_FROM_DATABASE=Yellowfin G-NIC gigabit ethernet
+ pci:v00001000d00000702sv00001318sd00000000*
+- ID_MODEL_FROM_DATABASE=PEI100X
++ ID_MODEL_FROM_DATABASE=Yellowfin G-NIC gigabit ethernet (PEI100X)
+ pci:v00001000d00000804*
+  ID_MODEL_FROM_DATABASE=SA2010
+@@ -1587,40 +1587,40 @@ pci:v00001000d00001960*
+  ID_MODEL_FROM_DATABASE=MegaRAID
+ pci:v00001000d00001960sv00001000sd00000518*
+- ID_MODEL_FROM_DATABASE=MegaRAID 518 SCSI 320-2 Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (518 SCSI 320-2 Controller)
+ pci:v00001000d00001960sv00001000sd00000520*
+- ID_MODEL_FROM_DATABASE=MegaRAID 520 SCSI 320-1 Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (520 SCSI 320-1 Controller)
+ pci:v00001000d00001960sv00001000sd00000522*
+- ID_MODEL_FROM_DATABASE=MegaRAID 522 i4 133 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (522 i4 133 RAID Controller)
+ pci:v00001000d00001960sv00001000sd00000523*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 150-6 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (SATA 150-6 RAID Controller)
+ pci:v00001000d00001960sv00001000sd00004523*
+- ID_MODEL_FROM_DATABASE=MegaRAID SATA 150-4 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (SATA 150-4 RAID Controller)
+ pci:v00001000d00001960sv00001000sd0000A520*
+- ID_MODEL_FROM_DATABASE=MegaRAID ZCR SCSI 320-0 Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (ZCR SCSI 320-0 Controller)
+ pci:v00001000d00001960sv00001028sd00000518*
+- ID_MODEL_FROM_DATABASE=MegaRAID 518 DELL PERC 4/DC RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (518 DELL PERC 4/DC RAID Controller)
+ pci:v00001000d00001960sv00001028sd00000520*
+- ID_MODEL_FROM_DATABASE=MegaRAID 520 DELL PERC 4/SC RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (520 DELL PERC 4/SC RAID Controller)
+ pci:v00001000d00001960sv00001028sd00000531*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge Expandable RAID Controller 4/QC)
+ pci:v00001000d00001960sv00001028sd00000533*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge Expandable RAID Controller 4/QC)
+ pci:v00001000d00001960sv00008086sd00000520*
+- ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCU41L
++ ID_MODEL_FROM_DATABASE=MegaRAID (RAID Controller SRCU41L)
+ pci:v00001000d00001960sv00008086sd00000523*
+- ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCS16
++ ID_MODEL_FROM_DATABASE=MegaRAID (RAID Controller SRCS16)
+ pci:v00001000d00003050*
+  ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2
+@@ -1710,7 +1710,7 @@ pci:v00001002d00001314*
+  ID_MODEL_FROM_DATABASE=Wrestler HDMI Audio
+ pci:v00001002d00001314sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=Wrestler HDMI Audio (PURE Fusion Mini)
+ pci:v00001002d00001315*
+  ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 Graphics]
+@@ -1737,13 +1737,13 @@ pci:v00001002d00001714*
+  ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
+ pci:v00001002d00001714sv0000103Csd0000168B*
+- ID_MODEL_FROM_DATABASE=ProBook 4535s
++ ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] (ProBook 4535s)
+ pci:v00001002d00003150*
+  ID_MODEL_FROM_DATABASE=RV380/M24 [Mobility Radeon X600]
+ pci:v00001002d00003150sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=nx8220
++ ID_MODEL_FROM_DATABASE=RV380/M24 [Mobility Radeon X600] (nx8220)
+ pci:v00001002d00003151*
+  ID_MODEL_FROM_DATABASE=RV380 GL [FireMV 2400]
+@@ -1791,73 +1791,73 @@ pci:v00001002d00004150*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series]
+ pci:v00001002d00004150sv00001002sd00000002*
+- ID_MODEL_FROM_DATABASE=R9600 Pro primary (Asus OEM for HP)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (R9600 Pro primary (Asus OEM for HP))
+ pci:v00001002d00004150sv00001002sd00000003*
+- ID_MODEL_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (R9600 Pro secondary (Asus OEM for HP))
+ pci:v00001002d00004150sv00001002sd00004722*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 AGP Edition
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (All-in-Wonder 2006 AGP Edition)
+ pci:v00001002d00004150sv00001458sd00004024*
+- ID_MODEL_FROM_DATABASE=GV-R96128D
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (GV-R96128D)
+ pci:v00001002d00004150sv0000148Csd00002064*
+- ID_MODEL_FROM_DATABASE=R96A-C3N
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (R96A-C3N)
+ pci:v00001002d00004150sv0000148Csd00002066*
+- ID_MODEL_FROM_DATABASE=R96A-C3N
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (R96A-C3N)
+ pci:v00001002d00004150sv0000174Bsd00007C19*
+- ID_MODEL_FROM_DATABASE=Atlantis Radeon 9600 Pro
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Atlantis Radeon 9600 Pro)
+ pci:v00001002d00004150sv0000174Bsd00007C29*
+- ID_MODEL_FROM_DATABASE=GC-R9600PRO
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (GC-R9600PRO)
+ pci:v00001002d00004150sv000017EEsd00002002*
+- ID_MODEL_FROM_DATABASE=Radeon 9600 256Mb Primary
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Radeon 9600 256Mb Primary)
+ pci:v00001002d00004150sv000018BCsd00000101*
+- ID_MODEL_FROM_DATABASE=GC-R9600PRO (Primary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (GC-R9600PRO (Primary))
+ pci:v00001002d00004151*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series]
+ pci:v00001002d00004151sv00001043sd0000C004*
+- ID_MODEL_FROM_DATABASE=A9600SE
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series] (A9600SE)
+ pci:v00001002d00004152*
+  ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series]
+ pci:v00001002d00004152sv00001002sd00000002*
+- ID_MODEL_FROM_DATABASE=Radeon 9600XT
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (Radeon 9600XT)
+ pci:v00001002d00004152sv00001002sd00004772*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 9600 XT
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (All-in-Wonder 9600 XT)
+ pci:v00001002d00004152sv00001043sd0000C002*
+- ID_MODEL_FROM_DATABASE=Radeon 9600 XT TVD
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (Radeon 9600 XT TVD)
+ pci:v00001002d00004152sv00001043sd0000C01A*
+- ID_MODEL_FROM_DATABASE=A9600XT/TD
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (A9600XT/TD)
+ pci:v00001002d00004152sv00001462sd00009510*
+- ID_MODEL_FROM_DATABASE=RX9600XT (MS-8951)
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (RX9600XT (MS-8951))
+ pci:v00001002d00004152sv0000174Bsd00007C29*
+- ID_MODEL_FROM_DATABASE=Radeon 9600XT
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (Radeon 9600XT)
+ pci:v00001002d00004152sv00001787sd00004002*
+- ID_MODEL_FROM_DATABASE=Radeon 9600 XT
++ ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] (Radeon 9600 XT)
+ pci:v00001002d00004153*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550]
+ pci:v00001002d00004153sv00001043sd0000010C*
+- ID_MODEL_FROM_DATABASE=A9550GE/TD
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550] (A9550GE/TD)
+ pci:v00001002d00004153sv00001462sd0000932C*
+- ID_MODEL_FROM_DATABASE=RX9550SE-TD128 (MS-8932)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550] (RX9550SE-TD128 (MS-8932))
+ pci:v00001002d00004154*
+  ID_MODEL_FROM_DATABASE=RV350 GL [FireGL T2]
+@@ -1887,64 +1887,64 @@ pci:v00001002d00004170*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary)
+ pci:v00001002d00004170sv00001002sd00000003*
+- ID_MODEL_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (R9600 Pro secondary (Asus OEM for HP))
+ pci:v00001002d00004170sv00001002sd00004723*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 AGP Edition (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (All-in-Wonder 2006 AGP Edition (Secondary))
+ pci:v00001002d00004170sv00001458sd00004025*
+- ID_MODEL_FROM_DATABASE=GV-R96128D (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (GV-R96128D (Secondary))
+ pci:v00001002d00004170sv0000148Csd00002067*
+- ID_MODEL_FROM_DATABASE=R96A-C3N (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (R96A-C3N (Secondary))
+ pci:v00001002d00004170sv0000174Bsd00007C28*
+- ID_MODEL_FROM_DATABASE=GC-R9600PRO (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (GC-R9600PRO (Secondary))
+ pci:v00001002d00004170sv000017EEsd00002003*
+- ID_MODEL_FROM_DATABASE=Radeon 9600 256Mb (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (Radeon 9600 256Mb (Secondary))
+ pci:v00001002d00004170sv000018BCsd00000100*
+- ID_MODEL_FROM_DATABASE=GC-R9600PRO (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) (GC-R9600PRO (Secondary))
+ pci:v00001002d00004171*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary)
+ pci:v00001002d00004171sv00001043sd0000C005*
+- ID_MODEL_FROM_DATABASE=A9600SE (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) (A9600SE (Secondary))
+ pci:v00001002d00004172*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary)
+ pci:v00001002d00004172sv00001002sd00000003*
+- ID_MODEL_FROM_DATABASE=Radeon 9600XT (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) (Radeon 9600XT (Secondary))
+ pci:v00001002d00004172sv00001002sd00004773*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 9600 XT (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) (All-in-Wonder 9600 XT (Secondary))
+ pci:v00001002d00004172sv00001043sd0000C003*
+- ID_MODEL_FROM_DATABASE=A9600XT (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) (A9600XT (Secondary))
+ pci:v00001002d00004172sv00001043sd0000C01B*
+- ID_MODEL_FROM_DATABASE=A9600XT/TD (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) (A9600XT/TD (Secondary))
+ pci:v00001002d00004172sv0000174Bsd00007C28*
+- ID_MODEL_FROM_DATABASE=Radeon 9600XT (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) (Radeon 9600XT (Secondary))
+ pci:v00001002d00004172sv00001787sd00004003*
+- ID_MODEL_FROM_DATABASE=Radeon 9600 XT (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) (Radeon 9600 XT (Secondary))
+ pci:v00001002d00004173*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550] (Secondary)
+ pci:v00001002d00004173sv00001043sd0000010D*
+- ID_MODEL_FROM_DATABASE=A9550GE/TD (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550] (Secondary) (A9550GE/TD (Secondary))
+ pci:v00001002d00004242*
+  ID_MODEL_FROM_DATABASE=R200 [All-In-Wonder Radeon 8500 DV]
+ pci:v00001002d00004242sv00001002sd000002AA*
+- ID_MODEL_FROM_DATABASE=Radeon 8500 AIW DV Edition
++ ID_MODEL_FROM_DATABASE=R200 [All-In-Wonder Radeon 8500 DV] (Radeon 8500 AIW DV Edition)
+ pci:v00001002d00004243*
+  ID_MODEL_FROM_DATABASE=R200 PCI Bridge [All-in-Wonder Radeon 8500DV]
+@@ -1953,22 +1953,22 @@ pci:v00001002d00004336*
+  ID_MODEL_FROM_DATABASE=RS100 [Radeon IGP 320M]
+ pci:v00001002d00004336sv00001002sd00004336*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M)
++ ID_MODEL_FROM_DATABASE=RS100 [Radeon IGP 320M] (Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M))
+ pci:v00001002d00004336sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Video
++ ID_MODEL_FROM_DATABASE=RS100 [Radeon IGP 320M] (Pavilion ze4400 builtin Video)
+ pci:v00001002d00004336sv0000161Fsd00002029*
+- ID_MODEL_FROM_DATABASE=eMachines M5312 builtin Video
++ ID_MODEL_FROM_DATABASE=RS100 [Radeon IGP 320M] (eMachines M5312 builtin Video)
+ pci:v00001002d00004337*
+  ID_MODEL_FROM_DATABASE=RS200M [Radeon IGP 330M/340M/345M/350M]
+ pci:v00001002d00004337sv00001014sd0000053A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=RS200M [Radeon IGP 330M/340M/345M/350M] (ThinkPad R40e)
+ pci:v00001002d00004337sv0000103Csd00000850*
+- ID_MODEL_FROM_DATABASE=Radeon IGP 345M
++ ID_MODEL_FROM_DATABASE=RS200M [Radeon IGP 330M/340M/345M/350M] (Radeon IGP 345M)
+ pci:v00001002d00004341*
+  ID_MODEL_FROM_DATABASE=IXP150 AC'97 Audio Controller
+@@ -2013,160 +2013,160 @@ pci:v00001002d00004370*
+  ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller
+ pci:v00001002d00004370sv00001025sd00000079*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (Aspire 5024WLMMi)
+ pci:v00001002d00004370sv00001025sd00000091*
+- ID_MODEL_FROM_DATABASE=Aspire 5032WXMi
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (Aspire 5032WXMi)
+ pci:v00001002d00004370sv0000103Csd00002A05*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004370sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (MX6125)
+ pci:v00001002d00004370sv0000105Bsd00000C81*
+- ID_MODEL_FROM_DATABASE=Realtek ALC 653
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (Realtek ALC 653)
+ pci:v00001002d00004370sv0000107Bsd00000300*
+- ID_MODEL_FROM_DATABASE=MX6421
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (MX6421)
+ pci:v00001002d00004370sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller (MS-1013 Notebook)
+ pci:v00001002d00004371*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-PCI Bridge
+ pci:v00001002d00004371sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-PCI Bridge (MX6125)
+ pci:v00001002d00004371sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-PCI Bridge (Aspire L250)
+ pci:v00001002d00004372*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 SMBus Controller
+ pci:v00001002d00004372sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 SMBus Controller (Aspire 5024WLMMi)
+ pci:v00001002d00004372sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 SMBus Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004372sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 SMBus Controller (MX6125)
+ pci:v00001002d00004372sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 SMBus Controller (MS-1013 Notebook)
+ pci:v00001002d00004372sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 SMBus Controller (Aspire L250)
+ pci:v00001002d00004373*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 USB2 Host Controller
+ pci:v00001002d00004373sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB2 Host Controller (Aspire 5024WLMMi)
+ pci:v00001002d00004373sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB2 Host Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004373sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB2 Host Controller (MX6125)
+ pci:v00001002d00004373sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB2 Host Controller (Aspire L250)
+ pci:v00001002d00004374*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller
+ pci:v00001002d00004374sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004374sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (MX6125)
+ pci:v00001002d00004374sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (Aspire L250)
+ pci:v00001002d00004375*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller
+ pci:v00001002d00004375sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (Aspire 5024WLMMi)
+ pci:v00001002d00004375sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004375sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (MX6125)
+ pci:v00001002d00004375sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 USB Host Controller (Aspire L250)
+ pci:v00001002d00004376*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 IDE Controller
+ pci:v00001002d00004376sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 IDE Controller (Aspire 5024WLMMi)
+ pci:v00001002d00004376sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 IDE Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004376sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 IDE Controller (MX6125)
+ pci:v00001002d00004376sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 IDE Controller (MS-1013 Notebook)
+ pci:v00001002d00004376sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 IDE Controller (Aspire L250)
+ pci:v00001002d00004377*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-ISA Bridge
+ pci:v00001002d00004377sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-ISA Bridge (Aspire 5024WLMi)
+ pci:v00001002d00004377sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-ISA Bridge (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00004377sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-ISA Bridge (MX6125)
+ pci:v00001002d00004377sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 PCI-ISA Bridge (Aspire L250)
+ pci:v00001002d00004378*
+  ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Modem Controller
+ pci:v00001002d00004378sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Modem Controller (Aspire 5024WLMMi)
+ pci:v00001002d00004378sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Modem Controller (MX6125)
+ pci:v00001002d00004378sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Modem Controller (MS-1013 Notebook)
+ pci:v00001002d00004379*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 Serial ATA Controller
+ pci:v00001002d00004379sv00001462sd00007141*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 Serial ATA Controller (Aspire L250)
+ pci:v00001002d0000437A*
+  ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller
+ pci:v00001002d0000437Asv00001002sd00004379*
+- ID_MODEL_FROM_DATABASE=4379 Serial ATA Controller
++ ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller (4379 Serial ATA Controller)
+ pci:v00001002d0000437Asv00001002sd0000437A*
+- ID_MODEL_FROM_DATABASE=437A Serial ATA Controller
++ ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller (437A Serial ATA Controller)
+ pci:v00001002d0000437Asv00001462sd00007141*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller (Aspire L250)
+ pci:v00001002d0000437Asv000014F1sd00008800*
+- ID_MODEL_FROM_DATABASE=Leadtek WinFast TV2000XP Expert
++ ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller (Leadtek WinFast TV2000XP Expert)
+ pci:v00001002d0000437B*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller
+@@ -2175,31 +2175,31 @@ pci:v00001002d0000437Bsv00001002sd0000437B*
+  ID_MODEL_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller
+ pci:v00001002d0000437Bsv000010CFsd00001326*
+- ID_MODEL_FROM_DATABASE=Fujitsu Lifebook A3040
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller (Fujitsu Lifebook A3040)
+ pci:v00001002d0000437Bsv00001734sd000010B8*
+- ID_MODEL_FROM_DATABASE=Realtek High Definition Audio
++ ID_MODEL_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller (Realtek High Definition Audio)
+ pci:v00001002d00004380*
+  ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA
+ pci:v00001002d00004380sv0000103Csd00002813*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA (DC5750 Microtower)
+ pci:v00001002d00004380sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA (Satellite P305D-S8995E)
+ pci:v00001002d00004380sv00001458sd0000B003*
+- ID_MODEL_FROM_DATABASE=GA-MA790FX-DS5 (rev. 1.0)
++ ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA (GA-MA790FX-DS5 (rev. 1.0))
+ pci:v00001002d00004380sv00001458sd0000B005*
+- ID_MODEL_FROM_DATABASE=Gigabyte GA-MA69G-S3H Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA (Gigabyte GA-MA69G-S3H Motherboard)
+ pci:v00001002d00004380sv00001462sd00007327*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA (K9AG Neo2)
+ pci:v00001002d00004380sv000017F2sd00005999*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA (KI690-AM2 Motherboard)
+ pci:v00001002d00004381*
+  ID_MODEL_FROM_DATABASE=SB600 SATA Controller (RAID 5 mode)
+@@ -2211,34 +2211,34 @@ pci:v00001002d00004383*
+  ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA)
+ pci:v00001002d00004383sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (A785GM-M)
+ pci:v00001002d00004383sv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (Pavilion DM1Z-3000)
+ pci:v00001002d00004383sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (DC5750 Microtower)
+ pci:v00001002d00004383sv00001043sd00008230*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (M3A78-EH Motherboard)
+ pci:v00001002d00004383sv00001043sd0000836C*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (M4A785TD Motherboard)
+ pci:v00001002d00004383sv00001043sd00008410*
+- ID_MODEL_FROM_DATABASE=M4A89GTD PRO/USB3 Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (M4A89GTD PRO/USB3 Motherboard)
+ pci:v00001002d00004383sv00001043sd0000841B*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (M5A88-V EVO)
+ pci:v00001002d00004383sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (Satellite P305D-S8995E)
+ pci:v00001002d00004383sv00001458sd0000A022*
+- ID_MODEL_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (GA-MA770-DS3rev2.0 Motherboard)
+ pci:v00001002d00004383sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) (KI690-AM2 Motherboard)
+ pci:v00001002d00004384*
+  ID_MODEL_FROM_DATABASE=SBx00 PCI to PCI Bridge
+@@ -2247,160 +2247,160 @@ pci:v00001002d00004385*
+  ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller
+ pci:v00001002d00004385sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (A785GM-M)
+ pci:v00001002d00004385sv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (Pavilion DM1Z-3000)
+ pci:v00001002d00004385sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (DC5750 Microtower)
+ pci:v00001002d00004385sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (M3A78-EH Motherboard)
+ pci:v00001002d00004385sv00001043sd00008389*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (M4A785TD Motherboard)
+ pci:v00001002d00004385sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (Satellite P305D-S8995E)
+ pci:v00001002d00004385sv00001458sd00004385*
+- ID_MODEL_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (GA-MA770-DS3rev2.0 Motherboard)
+ pci:v00001002d00004385sv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (K9AG Neo2)
+ pci:v00001002d00004385sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (H8DGU)
+ pci:v00001002d00004385sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (PURE Fusion Mini)
+ pci:v00001002d00004385sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller (KI690-AM2 Motherboard)
+ pci:v00001002d00004386*
+  ID_MODEL_FROM_DATABASE=SB600 USB Controller (EHCI)
+ pci:v00001002d00004386sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 USB Controller (EHCI) (DC5750 Microtower)
+ pci:v00001002d00004386sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 USB Controller (EHCI) (Satellite P305D-S8995E)
+ pci:v00001002d00004386sv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 USB Controller (EHCI) (K9AG Neo2)
+ pci:v00001002d00004386sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 USB Controller (EHCI) (KI690-AM2 Motherboard)
+ pci:v00001002d00004387*
+  ID_MODEL_FROM_DATABASE=SB600 USB (OHCI0)
+ pci:v00001002d00004387sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI0) (DC5750 Microtower)
+ pci:v00001002d00004387sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI0) (Satellite P305D-S8995E)
+ pci:v00001002d00004387sv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI0) (K9AG Neo2)
+ pci:v00001002d00004387sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI0) (KI690-AM2 Motherboard)
+ pci:v00001002d00004388*
+  ID_MODEL_FROM_DATABASE=SB600 USB (OHCI1)
+ pci:v00001002d00004388sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI1) (DC5750 Microtower)
+ pci:v00001002d00004388sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI1) (Satellite P305D-S8995E)
+ pci:v00001002d00004388sv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI1) (K9AG Neo2)
+ pci:v00001002d00004388sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI1) (KI690-AM2 Motherboard)
+ pci:v00001002d00004389*
+  ID_MODEL_FROM_DATABASE=SB600 USB (OHCI2)
+ pci:v00001002d00004389sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI2) (DC5750 Microtower)
+ pci:v00001002d00004389sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI2) (Satellite P305D-S8995E)
+ pci:v00001002d00004389sv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI2) (K9AG Neo2)
+ pci:v00001002d00004389sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI2) (KI690-AM2 Motherboard)
+ pci:v00001002d0000438A*
+  ID_MODEL_FROM_DATABASE=SB600 USB (OHCI3)
+ pci:v00001002d0000438Asv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI3) (DC5750 Microtower)
+ pci:v00001002d0000438Asv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI3) (Satellite P305D-S8995E)
+ pci:v00001002d0000438Asv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI3) (K9AG Neo2)
+ pci:v00001002d0000438Asv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI3) (KI690-AM2 Motherboard)
+ pci:v00001002d0000438B*
+  ID_MODEL_FROM_DATABASE=SB600 USB (OHCI4)
+ pci:v00001002d0000438Bsv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI4) (DC5750 Microtower)
+ pci:v00001002d0000438Bsv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI4) (Satellite P305D-S8995E)
+ pci:v00001002d0000438Bsv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI4) (K9AG Neo2)
+ pci:v00001002d0000438Bsv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 USB (OHCI4) (KI690-AM2 Motherboard)
+ pci:v00001002d0000438C*
+  ID_MODEL_FROM_DATABASE=SB600 IDE
+ pci:v00001002d0000438Csv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 IDE (DC5750 Microtower)
+ pci:v00001002d0000438Csv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 IDE (Satellite P305D-S8995E)
+ pci:v00001002d0000438Csv00001458sd00005002*
+- ID_MODEL_FROM_DATABASE=Gigabyte GA-MA69G-S3H Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 IDE (Gigabyte GA-MA69G-S3H Motherboard)
+ pci:v00001002d0000438Csv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 IDE (K9AG Neo2)
+ pci:v00001002d0000438Csv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 IDE (KI690-AM2 Motherboard)
+ pci:v00001002d0000438D*
+  ID_MODEL_FROM_DATABASE=SB600 PCI to LPC Bridge
+ pci:v00001002d0000438Dsv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=SB600 PCI to LPC Bridge (DC5750 Microtower)
+ pci:v00001002d0000438Dsv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=SB600 PCI to LPC Bridge (Satellite P305D-S8995E)
+ pci:v00001002d0000438Dsv00001462sd00007368*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=SB600 PCI to LPC Bridge (K9AG Neo2)
+ pci:v00001002d0000438Dsv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=SB600 PCI to LPC Bridge (KI690-AM2 Motherboard)
+ pci:v00001002d0000438E*
+  ID_MODEL_FROM_DATABASE=SB600 AC97 Modem
+@@ -2409,31 +2409,31 @@ pci:v00001002d00004390*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]
+ pci:v00001002d00004390sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (M3A78-EH Motherboard)
+ pci:v00001002d00004390sv00001043sd00008389*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (M4A785TD Motherboard)
+ pci:v00001002d00004390sv00001458sd0000B002*
+- ID_MODEL_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (GA-MA770-DS3rev2.0 Motherboard)
+ pci:v00001002d00004390sv00001849sd00004390*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (Motherboard (one of many))
+ pci:v00001002d00004391*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
+ pci:v00001002d00004391sv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (Pavilion DM1Z-3000)
+ pci:v00001002d00004391sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (M3A78-EH Motherboard)
+ pci:v00001002d00004391sv00001043sd00008443*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (M5A88-V EVO)
+ pci:v00001002d00004391sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] (PURE Fusion Mini)
+ pci:v00001002d00004392*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode]
+@@ -2451,97 +2451,97 @@ pci:v00001002d00004396*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller
+ pci:v00001002d00004396sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (A785GM-M)
+ pci:v00001002d00004396sv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (Pavilion DM1Z-3000)
+ pci:v00001002d00004396sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (M3A78-EH Motherboard)
+ pci:v00001002d00004396sv00001043sd00008443*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (M5A88-V EVO)
+ pci:v00001002d00004396sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (H8DGU)
+ pci:v00001002d00004396sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller (PURE Fusion Mini)
+ pci:v00001002d00004397*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+ pci:v00001002d00004397sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (A785GM-M)
+ pci:v00001002d00004397sv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (Pavilion DM1Z-3000)
+ pci:v00001002d00004397sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (M3A78-EH Motherboard)
+ pci:v00001002d00004397sv00001043sd00008443*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (M5A88-V EVO)
+ pci:v00001002d00004397sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (H8DGU)
+ pci:v00001002d00004397sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller (PURE Fusion Mini)
+ pci:v00001002d00004398*
+  ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller
+ pci:v00001002d00004398sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller (A785GM-M)
+ pci:v00001002d00004398sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller (M3A78-EH Motherboard)
+ pci:v00001002d00004398sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller (H8DGU)
+ pci:v00001002d00004399*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
+ pci:v00001002d00004399sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (A785GM-M)
+ pci:v00001002d00004399sv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (M3A78-EH Motherboard)
+ pci:v00001002d00004399sv00001043sd00008443*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (M5A88-V EVO)
+ pci:v00001002d00004399sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller (PURE Fusion Mini)
+ pci:v00001002d0000439C*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller
+ pci:v00001002d0000439Csv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller (A785GM-M)
+ pci:v00001002d0000439Csv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller (M3A78-EH Motherboard)
+ pci:v00001002d0000439D*
+  ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller
+ pci:v00001002d0000439Dsv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (A785GM-M)
+ pci:v00001002d0000439Dsv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (Pavilion DM1Z-3000)
+ pci:v00001002d0000439Dsv00001043sd000082EF*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (M3A78-EH Motherboard)
+ pci:v00001002d0000439Dsv00001043sd00008443*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (M5A88-V EVO)
+ pci:v00001002d0000439Dsv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller (PURE Fusion Mini)
+ pci:v00001002d000043A0*
+  ID_MODEL_FROM_DATABASE=SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0)
+@@ -2568,88 +2568,88 @@ pci:v00001002d00004742*
+  ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X
+ pci:v00001002d00004742sv00001002sd00000040*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001002sd00000044*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001002sd00000061*
+- ID_MODEL_FROM_DATABASE=Rage Pro AIW AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro AIW AGP 2X)
+ pci:v00001002d00004742sv00001002sd00000062*
+- ID_MODEL_FROM_DATABASE=Rage Pro AIW AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro AIW AGP 2X)
+ pci:v00001002d00004742sv00001002sd00000063*
+- ID_MODEL_FROM_DATABASE=Rage Pro AIW AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro AIW AGP 2X)
+ pci:v00001002d00004742sv00001002sd00000080*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001002sd00000084*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001002sd00004742*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001002sd00008001*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001028sd00000082*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001028sd00004082*
+- ID_MODEL_FROM_DATABASE=Optiplex GX1 Onboard Display Adapter
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Optiplex GX1 Onboard Display Adapter)
+ pci:v00001002d00004742sv00001028sd00008082*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00001028sd0000C082*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004742sv00008086sd00004152*
+- ID_MODEL_FROM_DATABASE=Xpert 98D AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Xpert 98D AGP 2X)
+ pci:v00001002d00004742sv00008086sd0000464A*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X (Rage Pro Turbo AGP 2X)
+ pci:v00001002d00004744*
+  ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 1X
+ pci:v00001002d00004744sv00001002sd00004744*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 1X (Rage Pro Turbo AGP)
+ pci:v00001002d00004744sv00008086sd00004D55*
+- ID_MODEL_FROM_DATABASE=Rage 3D Pro AGP 1X [Intel MU440EX]
++ ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 1X (Rage 3D Pro AGP 1X [Intel MU440EX])
+ pci:v00001002d00004749*
+  ID_MODEL_FROM_DATABASE=3D Rage PRO PCI
+ pci:v00001002d00004749sv00001002sd00000061*
+- ID_MODEL_FROM_DATABASE=Rage Pro AIW
++ ID_MODEL_FROM_DATABASE=3D Rage PRO PCI (Rage Pro AIW)
+ pci:v00001002d00004749sv00001002sd00000062*
+- ID_MODEL_FROM_DATABASE=Rage Pro AIW
++ ID_MODEL_FROM_DATABASE=3D Rage PRO PCI (Rage Pro AIW)
+ pci:v00001002d0000474D*
+  ID_MODEL_FROM_DATABASE=Rage XL AGP 2X
+ pci:v00001002d0000474Dsv00001002sd00000004*
+- ID_MODEL_FROM_DATABASE=Xpert 98 RXL AGP 2X
++ ID_MODEL_FROM_DATABASE=Rage XL AGP 2X (Xpert 98 RXL AGP 2X)
+ pci:v00001002d0000474Dsv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Xpert 98 RXL AGP 2X
++ ID_MODEL_FROM_DATABASE=Rage XL AGP 2X (Xpert 98 RXL AGP 2X)
+ pci:v00001002d0000474Dsv00001002sd00000080*
+  ID_MODEL_FROM_DATABASE=Rage XL AGP 2X
+ pci:v00001002d0000474Dsv00001002sd00000084*
+- ID_MODEL_FROM_DATABASE=Xpert 98 AGP 2X
++ ID_MODEL_FROM_DATABASE=Rage XL AGP 2X (Xpert 98 AGP 2X)
+ pci:v00001002d0000474Dsv00001002sd0000474D*
+- ID_MODEL_FROM_DATABASE=Rage XL AGP
++ ID_MODEL_FROM_DATABASE=Rage XL AGP 2X (Rage XL AGP)
+ pci:v00001002d0000474Dsv00001033sd0000806A*
+- ID_MODEL_FROM_DATABASE=Rage XL AGP
++ ID_MODEL_FROM_DATABASE=Rage XL AGP 2X (Rage XL AGP)
+ pci:v00001002d0000474E*
+  ID_MODEL_FROM_DATABASE=Rage XC AGP
+@@ -2670,79 +2670,79 @@ pci:v00001002d00004750*
+  ID_MODEL_FROM_DATABASE=3D Rage Pro PCI
+ pci:v00001002d00004750sv00001002sd00000040*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo
++ ID_MODEL_FROM_DATABASE=3D Rage Pro PCI (Rage Pro Turbo)
+ pci:v00001002d00004750sv00001002sd00000044*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo
++ ID_MODEL_FROM_DATABASE=3D Rage Pro PCI (Rage Pro Turbo)
+ pci:v00001002d00004750sv00001002sd00000080*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo
++ ID_MODEL_FROM_DATABASE=3D Rage Pro PCI (Rage Pro Turbo)
+ pci:v00001002d00004750sv00001002sd00000084*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo
++ ID_MODEL_FROM_DATABASE=3D Rage Pro PCI (Rage Pro Turbo)
+ pci:v00001002d00004750sv00001002sd00004750*
+- ID_MODEL_FROM_DATABASE=Rage Pro Turbo
++ ID_MODEL_FROM_DATABASE=3D Rage Pro PCI (Rage Pro Turbo)
+ pci:v00001002d00004752*
+  ID_MODEL_FROM_DATABASE=Rage XL PCI
+ pci:v00001002d00004752sv00000E11sd0000001E*
+- ID_MODEL_FROM_DATABASE=Proliant Rage XL
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (Proliant Rage XL)
+ pci:v00001002d00004752sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Rage XL
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (Rage XL)
+ pci:v00001002d00004752sv00001002sd00004752*
+- ID_MODEL_FROM_DATABASE=Proliant Rage XL
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (Proliant Rage XL)
+ pci:v00001002d00004752sv00001002sd00008008*
+- ID_MODEL_FROM_DATABASE=Rage XL
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (Rage XL)
+ pci:v00001002d00004752sv00001014sd00000240*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (eServer xSeries server mainboard)
+ pci:v00001002d00004752sv00001028sd000000CE*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1400
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PowerEdge 1400)
+ pci:v00001002d00004752sv00001028sd000000D1*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2550
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PowerEdge 2550)
+ pci:v00001002d00004752sv00001028sd000000D9*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2500
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PowerEdge 2500)
+ pci:v00001002d00004752sv00001028sd00000134*
+- ID_MODEL_FROM_DATABASE=PowerEdge 600SC
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PowerEdge 600SC)
+ pci:v00001002d00004752sv00001028sd0000014A*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1750
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PowerEdge 1750)
+ pci:v00001002d00004752sv00001028sd00000165*
+- ID_MODEL_FROM_DATABASE=PowerEdge 750
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PowerEdge 750)
+ pci:v00001002d00004752sv0000103Csd000010E1*
+- ID_MODEL_FROM_DATABASE=NetServer Rage XL
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (NetServer Rage XL)
+ pci:v00001002d00004752sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (ProLiant DL140 G2)
+ pci:v00001002d00004752sv0000107Bsd00006400*
+- ID_MODEL_FROM_DATABASE=6400 Server
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (6400 Server)
+ pci:v00001002d00004752sv00001734sd0000007A*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard VGA
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (PRIMERGY RX/TX series onboard VGA)
+ pci:v00001002d00004752sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (Primergy Econel 200 D2020 mainboard)
+ pci:v00001002d00004752sv00008086sd00003411*
+- ID_MODEL_FROM_DATABASE=SDS2 Mainboard
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (SDS2 Mainboard)
+ pci:v00001002d00004752sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (S875WP1-E mainboard)
+ pci:v00001002d00004752sv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=Rage XL PCI (S845WD1-E mainboard)
+ pci:v00001002d00004753*
+  ID_MODEL_FROM_DATABASE=Rage XC
+@@ -2760,28 +2760,28 @@ pci:v00001002d00004756*
+  ID_MODEL_FROM_DATABASE=3D Rage IIC PCI [Mach64 GT IIC]
+ pci:v00001002d00004756sv00001002sd00004756*
+- ID_MODEL_FROM_DATABASE=Rage IIC
++ ID_MODEL_FROM_DATABASE=3D Rage IIC PCI [Mach64 GT IIC] (Rage IIC)
+ pci:v00001002d00004757*
+  ID_MODEL_FROM_DATABASE=3D Rage IIC AGP
+ pci:v00001002d00004757sv00001002sd00004757*
+- ID_MODEL_FROM_DATABASE=Rage IIC AGP
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage IIC AGP)
+ pci:v00001002d00004757sv00001028sd00000089*
+- ID_MODEL_FROM_DATABASE=Rage 3D IIC
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage 3D IIC)
+ pci:v00001002d00004757sv00001028sd0000008E*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1300 onboard video
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (PowerEdge 1300 onboard video)
+ pci:v00001002d00004757sv00001028sd00004082*
+- ID_MODEL_FROM_DATABASE=Rage 3D IIC
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage 3D IIC)
+ pci:v00001002d00004757sv00001028sd00008082*
+- ID_MODEL_FROM_DATABASE=Rage 3D IIC
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage 3D IIC)
+ pci:v00001002d00004757sv00001028sd0000C082*
+- ID_MODEL_FROM_DATABASE=Rage 3D IIC
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage 3D IIC)
+ pci:v00001002d00004758*
+  ID_MODEL_FROM_DATABASE=210888GX [Mach64 GX PCI]
+@@ -2793,40 +2793,40 @@ pci:v00001002d0000475A*
+  ID_MODEL_FROM_DATABASE=3D Rage IIC AGP
+ pci:v00001002d0000475Asv00001002sd00000084*
+- ID_MODEL_FROM_DATABASE=Rage 3D Pro AGP 2x XPERT 98
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage 3D Pro AGP 2x XPERT 98)
+ pci:v00001002d0000475Asv00001002sd00000087*
+- ID_MODEL_FROM_DATABASE=Rage 3D IIC
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage 3D IIC)
+ pci:v00001002d0000475Asv00001002sd0000475A*
+- ID_MODEL_FROM_DATABASE=Rage IIC AGP
++ ID_MODEL_FROM_DATABASE=3D Rage IIC AGP (Rage IIC AGP)
+ pci:v00001002d00004966*
+  ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series]
+ pci:v00001002d00004966sv000010F1sd00000002*
+- ID_MODEL_FROM_DATABASE=RV250 If [Tachyon G9000 PRO]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [Tachyon G9000 PRO])
+ pci:v00001002d00004966sv0000148Csd00002039*
+- ID_MODEL_FROM_DATABASE=RV250 If [Radeon 9000 Pro "Evil Commando"]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [Radeon 9000 Pro "Evil Commando"])
+ pci:v00001002d00004966sv00001509sd00009A00*
+- ID_MODEL_FROM_DATABASE=RV250 If [Radeon 9000 "AT009"]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [Radeon 9000 "AT009"])
+ pci:v00001002d00004966sv00001681sd00000040*
+- ID_MODEL_FROM_DATABASE=RV250 If [3D prophet 9000]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [3D prophet 9000])
+ pci:v00001002d00004966sv0000174Bsd00007176*
+- ID_MODEL_FROM_DATABASE=Radeon 9000 Pro
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (Radeon 9000 Pro)
+ pci:v00001002d00004966sv0000174Bsd00007192*
+- ID_MODEL_FROM_DATABASE=RV250 If [Radeon 9000 "Atlantis"]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [Radeon 9000 "Atlantis"])
+ pci:v00001002d00004966sv000017AFsd00002005*
+- ID_MODEL_FROM_DATABASE=RV250 If [Excalibur Radeon 9000 Pro]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [Excalibur Radeon 9000 Pro])
+ pci:v00001002d00004966sv000017AFsd00002006*
+- ID_MODEL_FROM_DATABASE=RV250 If [Excalibur Radeon 9000]
++ ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (RV250 If [Excalibur Radeon 9000])
+ pci:v00001002d0000496E*
+  ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000] (Secondary)
+@@ -2835,7 +2835,7 @@ pci:v00001002d00004A49*
+  ID_MODEL_FROM_DATABASE=R420 [Radeon X800 PRO/GTO AGP]
+ pci:v00001002d00004A49sv0000174Bsd00002620*
+- ID_MODEL_FROM_DATABASE=R420 [Radeon X800 GTO AGP]
++ ID_MODEL_FROM_DATABASE=R420 [Radeon X800 PRO/GTO AGP] (R420 [Radeon X800 GTO AGP])
+ pci:v00001002d00004A4A*
+  ID_MODEL_FROM_DATABASE=R420 [Radeon X800 GT AGP]
+@@ -2859,7 +2859,7 @@ pci:v00001002d00004A54*
+  ID_MODEL_FROM_DATABASE=R420 [Radeon X800 VE AGP]
+ pci:v00001002d00004A54sv00001002sd00004422*
+- ID_MODEL_FROM_DATABASE=All-In-Wonder X800 VE AGP
++ ID_MODEL_FROM_DATABASE=R420 [Radeon X800 VE AGP] (All-In-Wonder X800 VE AGP)
+ pci:v00001002d00004A69*
+  ID_MODEL_FROM_DATABASE=R420 [Radeon X800 PRO/GTO] (Secondary)
+@@ -2898,40 +2898,40 @@ pci:v00001002d00004C42*
+  ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X
+ pci:v00001002d00004C42sv00000E11sd0000B0E7*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro (Compaq Presario 5240)
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage LT Pro (Compaq Presario 5240))
+ pci:v00001002d00004C42sv00000E11sd0000B0E8*
+- ID_MODEL_FROM_DATABASE=Rage 3D LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage 3D LT Pro)
+ pci:v00001002d00004C42sv00000E11sd0000B10E*
+- ID_MODEL_FROM_DATABASE=3D Rage LT Pro (Compaq Armada 1750)
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (3D Rage LT Pro (Compaq Armada 1750))
+ pci:v00001002d00004C42sv00001002sd00000040*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage LT Pro AGP 2X)
+ pci:v00001002d00004C42sv00001002sd00000044*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage LT Pro AGP 2X)
+ pci:v00001002d00004C42sv00001002sd00004C42*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage LT Pro AGP 2X)
+ pci:v00001002d00004C42sv00001002sd00008001*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage LT Pro AGP 2X)
+ pci:v00001002d00004C42sv00001028sd00000085*
+- ID_MODEL_FROM_DATABASE=Rage 3D LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X (Rage 3D LT Pro)
+ pci:v00001002d00004C46*
+  ID_MODEL_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3
+ pci:v00001002d00004C46sv00001002sd00000155*
+- ID_MODEL_FROM_DATABASE=IBM Thinkpad A22p
++ ID_MODEL_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3 (IBM Thinkpad A22p)
+ pci:v00001002d00004C46sv00001014sd00000155*
+- ID_MODEL_FROM_DATABASE=IBM Thinkpad A22p
++ ID_MODEL_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3 (IBM Thinkpad A22p)
+ pci:v00001002d00004C46sv00001028sd000000B1*
+- ID_MODEL_FROM_DATABASE=Latitude C600
++ ID_MODEL_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3 (Latitude C600)
+ pci:v00001002d00004C47*
+  ID_MODEL_FROM_DATABASE=3D Rage IIC PCI / Mobility Radeon 7500/7500C
+@@ -2940,55 +2940,55 @@ pci:v00001002d00004C49*
+  ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI
+ pci:v00001002d00004C49sv00001002sd00000004*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI (Rage LT Pro)
+ pci:v00001002d00004C49sv00001002sd00000040*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI (Rage LT Pro)
+ pci:v00001002d00004C49sv00001002sd00000044*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI (Rage LT Pro)
+ pci:v00001002d00004C49sv00001002sd00004C49*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI (Rage LT Pro)
+ pci:v00001002d00004C4D*
+  ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series
+ pci:v00001002d00004C4Dsv00000E11sd0000B111*
+- ID_MODEL_FROM_DATABASE=Armada M700
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (Armada M700)
+ pci:v00001002d00004C4Dsv00000E11sd0000B160*
+- ID_MODEL_FROM_DATABASE=Armada E500
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (Armada E500)
+ pci:v00001002d00004C4Dsv00001002sd00000084*
+- ID_MODEL_FROM_DATABASE=Xpert 98 AGP 2X (Mobility)
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (Xpert 98 AGP 2X (Mobility))
+ pci:v00001002d00004C4Dsv00001014sd00000154*
+- ID_MODEL_FROM_DATABASE=ThinkPad A20m/A21m
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (ThinkPad A20m/A21m)
+ pci:v00001002d00004C4Dsv00001028sd000000AA*
+- ID_MODEL_FROM_DATABASE=Latitude CPt
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (Latitude CPt)
+ pci:v00001002d00004C4Dsv00001028sd000000BB*
+- ID_MODEL_FROM_DATABASE=Latitude CPx
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (Latitude CPx)
+ pci:v00001002d00004C4Dsv00001179sd0000FF00*
+- ID_MODEL_FROM_DATABASE=Satellite 1715XCDS laptop
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (Satellite 1715XCDS laptop)
+ pci:v00001002d00004C4Dsv000013BDsd00001019*
+- ID_MODEL_FROM_DATABASE=PC-AR10
++ ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series (PC-AR10)
+ pci:v00001002d00004C50*
+  ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI
+ pci:v00001002d00004C50sv00001002sd00004C50*
+- ID_MODEL_FROM_DATABASE=Rage LT Pro
++ ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI (Rage LT Pro)
+ pci:v00001002d00004C52*
+  ID_MODEL_FROM_DATABASE=Rage Mobility-M1 PCI
+ pci:v00001002d00004C52sv00001033sd00008112*
+- ID_MODEL_FROM_DATABASE=Versa Note VXi
++ ID_MODEL_FROM_DATABASE=Rage Mobility-M1 PCI (Versa Note VXi)
+ pci:v00001002d00004C54*
+  ID_MODEL_FROM_DATABASE=264LT [Mach64 LT]
+@@ -2997,22 +2997,22 @@ pci:v00001002d00004C57*
+  ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500]
+ pci:v00001002d00004C57sv00001014sd00000517*
+- ID_MODEL_FROM_DATABASE=ThinkPad T30
++ ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] (ThinkPad T30)
+ pci:v00001002d00004C57sv00001014sd00000530*
+- ID_MODEL_FROM_DATABASE=ThinkPad T42 2373-4WU
++ ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] (ThinkPad T42 2373-4WU)
+ pci:v00001002d00004C57sv00001028sd000000E6*
+- ID_MODEL_FROM_DATABASE=Radeon Mobility M7 LW (Dell Inspiron 8100)
++ ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] (Radeon Mobility M7 LW (Dell Inspiron 8100))
+ pci:v00001002d00004C57sv00001028sd0000012A*
+- ID_MODEL_FROM_DATABASE=Latitude C640
++ ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] (Latitude C640)
+ pci:v00001002d00004C57sv00001043sd00001622*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon M7 (L3C/S)
++ ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] (Mobility Radeon M7 (L3C/S))
+ pci:v00001002d00004C57sv0000144Dsd0000C006*
+- ID_MODEL_FROM_DATABASE=Radeon Mobility M7 LW in vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] (Radeon Mobility M7 LW in vpr Matrix 170B4)
+ pci:v00001002d00004C58*
+  ID_MODEL_FROM_DATABASE=RV200/M7 GL [Mobility FireGL 7800]
+@@ -3021,31 +3021,31 @@ pci:v00001002d00004C59*
+  ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series]
+ pci:v00001002d00004C59sv00000E11sd0000B111*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (Evo N600c)
+ pci:v00001002d00004C59sv00001014sd00000235*
+- ID_MODEL_FROM_DATABASE=ThinkPad A30/A30p (2652/2653)
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (ThinkPad A30/A30p (2652/2653))
+ pci:v00001002d00004C59sv00001014sd00000239*
+- ID_MODEL_FROM_DATABASE=ThinkPad X22/X23/X24
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (ThinkPad X22/X23/X24)
+ pci:v00001002d00004C59sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (XE4500 Notebook)
+ pci:v00001002d00004C59sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00001002d00004C59sv0000104Dsd00008140*
+- ID_MODEL_FROM_DATABASE=PCG-Z1SP laptop
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (PCG-Z1SP laptop)
+ pci:v00001002d00004C59sv00001509sd00001930*
+- ID_MODEL_FROM_DATABASE=Medion MD9703
++ ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] (Medion MD9703)
+ pci:v00001002d00004C66*
+  ID_MODEL_FROM_DATABASE=RV250/M9 GL [Mobility FireGL 9000/Radeon 9000]
+ pci:v00001002d00004C66sv00001014sd0000054D*
+- ID_MODEL_FROM_DATABASE=ThinkPad T41
++ ID_MODEL_FROM_DATABASE=RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] (ThinkPad T41)
+ pci:v00001002d00004C6E*
+  ID_MODEL_FROM_DATABASE=RV250/M9 [Mobility Radeon 9000] (Secondary)
+@@ -3063,19 +3063,19 @@ pci:v00001002d00004E44*
+  ID_MODEL_FROM_DATABASE=R300 [Radeon 9700/9700 PRO]
+ pci:v00001002d00004E44sv00001002sd0000515E*
+- ID_MODEL_FROM_DATABASE=Radeon ES1000
++ ID_MODEL_FROM_DATABASE=R300 [Radeon 9700/9700 PRO] (Radeon ES1000)
+ pci:v00001002d00004E44sv00001002sd00005965*
+- ID_MODEL_FROM_DATABASE=Radeon ES1000
++ ID_MODEL_FROM_DATABASE=R300 [Radeon 9700/9700 PRO] (Radeon ES1000)
+ pci:v00001002d00004E45*
+  ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO/9700]
+ pci:v00001002d00004E45sv00001002sd00000002*
+- ID_MODEL_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro]
++ ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO/9700] (Radeon R300 NE [Radeon 9500 Pro])
+ pci:v00001002d00004E45sv00001681sd00000002*
+- ID_MODEL_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro]
++ ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO/9700] (Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro])
+ pci:v00001002d00004E46*
+  ID_MODEL_FROM_DATABASE=R300 [Radeon 9600 TX]
+@@ -3093,7 +3093,7 @@ pci:v00001002d00004E4A*
+  ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XXL/XT]
+ pci:v00001002d00004E4Asv00001002sd00004E4A*
+- ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XT]
++ ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XXL/XT] (R360 [Radeon 9800 XT])
+ pci:v00001002d00004E4B*
+  ID_MODEL_FROM_DATABASE=R350 GL [FireGL X2 AGP Pro]
+@@ -3102,22 +3102,22 @@ pci:v00001002d00004E50*
+  ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo]
+ pci:v00001002d00004E50sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] (TravelMate 290)
+ pci:v00001002d00004E50sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] (NC8000 laptop)
+ pci:v00001002d00004E50sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] (NC6000 laptop)
+ pci:v00001002d00004E50sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P35 notebook
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] (P35 notebook)
+ pci:v00001002d00004E50sv00001462sd00000311*
+- ID_MODEL_FROM_DATABASE=MSI M510A
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] (MSI M510A)
+ pci:v00001002d00004E50sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420W
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] (Amilo M1420W)
+ pci:v00001002d00004E51*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series]
+@@ -3126,7 +3126,7 @@ pci:v00001002d00004E52*
+  ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9500/9700 SE]
+ pci:v00001002d00004E52sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P35 notebook
++ ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9500/9700 SE] (P35 notebook)
+ pci:v00001002d00004E54*
+  ID_MODEL_FROM_DATABASE=RV350/M10 GL [Mobility FireGL T2]
+@@ -3141,10 +3141,10 @@ pci:v00001002d00004E65*
+  ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary)
+ pci:v00001002d00004E65sv00001002sd00000003*
+- ID_MODEL_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro]
++ ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary) (Radeon R300 NE [Radeon 9500 Pro])
+ pci:v00001002d00004E65sv00001681sd00000003*
+- ID_MODEL_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary)
++ ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary) (Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary))
+ pci:v00001002d00004E66*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary)
+@@ -3162,10 +3162,10 @@ pci:v00001002d00004E6A*
+  ID_MODEL_FROM_DATABASE=RV350 [Radeon 9800 XT] (Secondary)
+ pci:v00001002d00004E6Asv00001002sd00004E6A*
+- ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XT] (Secondary)
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9800 XT] (Secondary) (R360 [Radeon 9800 XT] (Secondary))
+ pci:v00001002d00004E6Asv00001002sd00004E71*
+- ID_MODEL_FROM_DATABASE=M10 NQ [Radeon Mobility 9600]
++ ID_MODEL_FROM_DATABASE=RV350 [Radeon 9800 XT] (Secondary) (M10 NQ [Radeon Mobility 9600])
+ pci:v00001002d00004E71*
+  ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600] (Secondary)
+@@ -3180,46 +3180,46 @@ pci:v00001002d00005044*
+  ID_MODEL_FROM_DATABASE=All-In-Wonder 128 PCI
+ pci:v00001002d00005044sv00001002sd00000028*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=All-In-Wonder 128 PCI (Rage 128 AIW)
+ pci:v00001002d00005044sv00001002sd00000029*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=All-In-Wonder 128 PCI (Rage 128 AIW)
+ pci:v00001002d00005046*
+  ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS
+ pci:v00001002d00005046sv00001002sd00000004*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury Pro)
+ pci:v00001002d00005046sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury Pro/Xpert 2000 Pro)
+ pci:v00001002d00005046sv00001002sd00000014*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury Pro)
+ pci:v00001002d00005046sv00001002sd00000018*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury Pro/Xpert 2000 Pro)
+ pci:v00001002d00005046sv00001002sd00000028*
+- ID_MODEL_FROM_DATABASE=Rage 128 Pro AIW AGP
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage 128 Pro AIW AGP)
+ pci:v00001002d00005046sv00001002sd0000002A*
+- ID_MODEL_FROM_DATABASE=Rage 128 Pro AIW AGP
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage 128 Pro AIW AGP)
+ pci:v00001002d00005046sv00001002sd00000048*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury Pro)
+ pci:v00001002d00005046sv00001002sd00002000*
+- ID_MODEL_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (VGA device)
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury MAXX AGP 4x (TMDS) (VGA device))
+ pci:v00001002d00005046sv00001002sd00002001*
+- ID_MODEL_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (Extra device?!)
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS (Rage Fury MAXX AGP 4x (TMDS) (Extra device?!))
+ pci:v00001002d00005050*
+  ID_MODEL_FROM_DATABASE=Rage128 [Xpert 128 PCI]
+ pci:v00001002d00005050sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Xpert 128
++ ID_MODEL_FROM_DATABASE=Rage128 [Xpert 128 PCI] (Xpert 128)
+ pci:v00001002d00005052*
+  ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4X TMDS
+@@ -3228,79 +3228,79 @@ pci:v00001002d00005144*
+  ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon]
+ pci:v00001002d00005144sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon VE)
+ pci:v00001002d00005144sv00001002sd00000009*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd0000000A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd0000001A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd00000029*
+- ID_MODEL_FROM_DATABASE=Radeon AIW
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon AIW)
+ pci:v00001002d00005144sv00001002sd00000038*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd00000039*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd0000008A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd000000BA*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd00000139*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd0000028A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005144sv00001002sd000002AA*
+- ID_MODEL_FROM_DATABASE=Radeon AIW
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon AIW)
+ pci:v00001002d00005144sv00001002sd0000053A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon
++ ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] (Radeon 7000/Radeon)
+ pci:v00001002d00005148*
+  ID_MODEL_FROM_DATABASE=R200 GL [FireGL 8800]
+ pci:v00001002d00005148sv00001002sd0000010A*
+- ID_MODEL_FROM_DATABASE=FireGL 8800 64Mb
++ ID_MODEL_FROM_DATABASE=R200 GL [FireGL 8800] (FireGL 8800 64Mb)
+ pci:v00001002d00005148sv00001002sd00000152*
+- ID_MODEL_FROM_DATABASE=FireGL 8800 128Mb
++ ID_MODEL_FROM_DATABASE=R200 GL [FireGL 8800] (FireGL 8800 128Mb)
+ pci:v00001002d00005148sv00001002sd00000162*
+- ID_MODEL_FROM_DATABASE=FireGL 8700 32Mb
++ ID_MODEL_FROM_DATABASE=R200 GL [FireGL 8800] (FireGL 8700 32Mb)
+ pci:v00001002d00005148sv00001002sd00000172*
+- ID_MODEL_FROM_DATABASE=FireGL 8700 64Mb
++ ID_MODEL_FROM_DATABASE=R200 GL [FireGL 8800] (FireGL 8700 64Mb)
+ pci:v00001002d0000514C*
+  ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE]
+ pci:v00001002d0000514Csv00001002sd0000003A*
+- ID_MODEL_FROM_DATABASE=Radeon R200 QL [Radeon 8500 LE]
++ ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] (Radeon R200 QL [Radeon 8500 LE])
+ pci:v00001002d0000514Csv00001002sd0000013A*
+- ID_MODEL_FROM_DATABASE=Radeon 8500
++ ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] (Radeon 8500)
+ pci:v00001002d0000514Csv0000148Csd00002026*
+- ID_MODEL_FROM_DATABASE=R200 QL [Radeon 8500 Evil Master II Multi Display Edition]
++ ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] (R200 QL [Radeon 8500 Evil Master II Multi Display Edition])
+ pci:v00001002d0000514Csv00001681sd00000010*
+- ID_MODEL_FROM_DATABASE=Radeon 8500 [3D Prophet 8500 128Mb]
++ ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] (Radeon 8500 [3D Prophet 8500 128Mb])
+ pci:v00001002d0000514Csv0000174Bsd00007149*
+- ID_MODEL_FROM_DATABASE=Radeon 8500 LE
++ ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] (Radeon 8500 LE)
+ pci:v00001002d0000514Csv00001787sd00000F08*
+- ID_MODEL_FROM_DATABASE=Radeon R200 QL [PowerMagic Radeon 8500]
++ ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] (Radeon R200 QL [PowerMagic Radeon 8500])
+ pci:v00001002d0000514D*
+  ID_MODEL_FROM_DATABASE=R200 [Radeon 9100]
+@@ -3309,196 +3309,196 @@ pci:v00001002d00005157*
+  ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE]
+ pci:v00001002d00005157sv00001002sd0000013A*
+- ID_MODEL_FROM_DATABASE=Radeon 7500
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (Radeon 7500)
+ pci:v00001002d00005157sv00001002sd00000F2B*
+- ID_MODEL_FROM_DATABASE=ALL-IN-WONDER VE PCI
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (ALL-IN-WONDER VE PCI)
+ pci:v00001002d00005157sv00001002sd0000103A*
+- ID_MODEL_FROM_DATABASE=Dell Optiplex GX260
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (Dell Optiplex GX260)
+ pci:v00001002d00005157sv00001458sd00004000*
+- ID_MODEL_FROM_DATABASE=RV200 QW [RADEON 7500 PRO MAYA AR]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (RV200 QW [RADEON 7500 PRO MAYA AR])
+ pci:v00001002d00005157sv0000148Csd00002024*
+- ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500LE Dual Display]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (RV200 QW [Radeon 7500LE Dual Display])
+ pci:v00001002d00005157sv0000148Csd00002025*
+- ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500 Evil Master Multi Display Edition]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (RV200 QW [Radeon 7500 Evil Master Multi Display Edition])
+ pci:v00001002d00005157sv0000148Csd00002036*
+- ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500 PCI Dual Display]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (RV200 QW [Radeon 7500 PCI Dual Display])
+ pci:v00001002d00005157sv0000174Bsd00007146*
+- ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500 LE]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (RV200 QW [Radeon 7500 LE])
+ pci:v00001002d00005157sv0000174Bsd00007147*
+- ID_MODEL_FROM_DATABASE=Radeon 7500 LE
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (Radeon 7500 LE)
+ pci:v00001002d00005157sv0000174Bsd00007161*
+- ID_MODEL_FROM_DATABASE=Radeon RV200 QW [Radeon 7500 LE]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (Radeon RV200 QW [Radeon 7500 LE])
+ pci:v00001002d00005157sv000017AFsd00000202*
+- ID_MODEL_FROM_DATABASE=RV200 QW [Excalibur Radeon 7500LE]
++ ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] (RV200 QW [Excalibur Radeon 7500LE])
+ pci:v00001002d00005159*
+  ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE]
+ pci:v00001002d00005159sv00001002sd0000000A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000/Radeon VE)
+ pci:v00001002d00005159sv00001002sd0000000B*
+- ID_MODEL_FROM_DATABASE=Radeon 7000
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000)
+ pci:v00001002d00005159sv00001002sd00000038*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000/Radeon VE)
+ pci:v00001002d00005159sv00001002sd0000003A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000/Radeon VE)
+ pci:v00001002d00005159sv00001002sd000000BA*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000/Radeon VE)
+ pci:v00001002d00005159sv00001002sd0000013A*
+- ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000/Radeon VE)
+ pci:v00001002d00005159sv00001002sd00000908*
+- ID_MODEL_FROM_DATABASE=XVR-100 (supplied by Sun)
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (XVR-100 (supplied by Sun))
+ pci:v00001002d00005159sv00001014sd0000029A*
+- ID_MODEL_FROM_DATABASE=Remote Supervisor Adapter II (RSA2)
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Remote Supervisor Adapter II (RSA2))
+ pci:v00001002d00005159sv00001014sd000002C8*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (eServer xSeries server mainboard)
+ pci:v00001002d00005159sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 Embedded Radeon 7000/VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (PowerEdge 1850 Embedded Radeon 7000/VE)
+ pci:v00001002d00005159sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 Embedded Radeon 7000-M
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (PowerEdge 2850 Embedded Radeon 7000-M)
+ pci:v00001002d00005159sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Embedded Radeon 7000/VE
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (PowerEdge 6850 Embedded Radeon 7000/VE)
+ pci:v00001002d00005159sv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (PowerEdge SC1425)
+ pci:v00001002d00005159sv0000103Csd00001292*
+- ID_MODEL_FROM_DATABASE=Radeon 7000
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000)
+ pci:v00001002d00005159sv00001043sd0000C00A*
+- ID_MODEL_FROM_DATABASE=A7000/T/64M
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (A7000/T/64M)
+ pci:v00001002d00005159sv00001458sd00004002*
+- ID_MODEL_FROM_DATABASE=RV100 QY [RADEON 7000 PRO MAYA AV Series]
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV100 QY [RADEON 7000 PRO MAYA AV Series])
+ pci:v00001002d00005159sv0000148Csd00002003*
+- ID_MODEL_FROM_DATABASE=RV100 QY [Radeon 7000 Multi-Display Edition]
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV100 QY [Radeon 7000 Multi-Display Edition])
+ pci:v00001002d00005159sv0000148Csd00002023*
+- ID_MODEL_FROM_DATABASE=RV100 QY [Radeon 7000 Evil Master Multi-Display]
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV100 QY [Radeon 7000 Evil Master Multi-Display])
+ pci:v00001002d00005159sv0000174Bsd00000280*
+- ID_MODEL_FROM_DATABASE=Radeon RV100 QY [Radeon 7000/VE]
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon RV100 QY [Radeon 7000/VE])
+ pci:v00001002d00005159sv0000174Bsd00007112*
+- ID_MODEL_FROM_DATABASE=Radeon VE 7000
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon VE 7000)
+ pci:v00001002d00005159sv0000174Bsd00007C28*
+- ID_MODEL_FROM_DATABASE=Radeon VE 7000 DDR
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon VE 7000 DDR)
+ pci:v00001002d00005159sv00001787sd00000202*
+- ID_MODEL_FROM_DATABASE=RV100 QY [Excalibur Radeon 7000]
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (RV100 QY [Excalibur Radeon 7000])
+ pci:v00001002d00005159sv000017EEsd00001001*
+- ID_MODEL_FROM_DATABASE=Radeon 7000 64MB DDR + DVI
++ ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] (Radeon 7000 64MB DDR + DVI)
+ pci:v00001002d0000515E*
+  ID_MODEL_FROM_DATABASE=ES1000
+ pci:v00001002d0000515Esv00001028sd000001BB*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1955 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge 1955 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge SC440)
+ pci:v00001002d0000515Esv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge 860)
+ pci:v00001002d0000515Esv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge R900 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2970 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge 2970 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd0000020B*
+- ID_MODEL_FROM_DATABASE=PowerEdge T605 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge T605 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge R300 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge T300 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge R805 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd00000223*
+- ID_MODEL_FROM_DATABASE=PowerEdge R905 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge R905 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge T105 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 Embedded ATI ES1000
++ ID_MODEL_FROM_DATABASE=ES1000 (PowerEdge R200 Embedded ATI ES1000)
+ pci:v00001002d0000515Esv0000103Csd00001304*
+- ID_MODEL_FROM_DATABASE=Integrity iLO2 Advanced KVM VGA [AD307A]
++ ID_MODEL_FROM_DATABASE=ES1000 (Integrity iLO2 Advanced KVM VGA [AD307A])
+ pci:v00001002d0000515Esv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=ES1000 (X7DVL-E-O motherboard)
+ pci:v00001002d0000515Esv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=ES1000 (X7DBN Motherboard)
+ pci:v00001002d0000515Esv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=ES1000 (S5000PSLSATA Server Board)
+ pci:v00001002d00005245*
+  ID_MODEL_FROM_DATABASE=Rage 128 GL PCI
+ pci:v00001002d00005245sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Xpert 128
++ ID_MODEL_FROM_DATABASE=Rage 128 GL PCI (Xpert 128)
+ pci:v00001002d00005245sv00001002sd00000028*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=Rage 128 GL PCI (Rage 128 AIW)
+ pci:v00001002d00005245sv00001002sd00000029*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=Rage 128 GL PCI (Rage 128 AIW)
+ pci:v00001002d00005245sv00001002sd00000068*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=Rage 128 GL PCI (Rage 128 AIW)
+ pci:v00001002d00005246*
+  ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x
+ pci:v00001002d00005246sv00001002sd00000004*
+- ID_MODEL_FROM_DATABASE=Magnum/Xpert 128/Xpert 99
++ ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x (Magnum/Xpert 128/Xpert 99)
+ pci:v00001002d00005246sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Magnum/Xpert128/X99/Xpert2000
++ ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x (Magnum/Xpert128/X99/Xpert2000)
+ pci:v00001002d00005246sv00001002sd00000028*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW AGP
++ ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x (Rage 128 AIW AGP)
+ pci:v00001002d00005246sv00001002sd00000044*
+- ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000
++ ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x (Rage Fury/Xpert 128/Xpert 2000)
+ pci:v00001002d00005246sv00001002sd00000068*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW AGP
++ ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x (Rage 128 AIW AGP)
+ pci:v00001002d00005246sv00001002sd00000448*
+- ID_MODEL_FROM_DATABASE=Rage Fury
++ ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x (Rage Fury)
+ pci:v00001002d0000524B*
+  ID_MODEL_FROM_DATABASE=Rage 128 VR PCI
+@@ -3507,73 +3507,73 @@ pci:v00001002d0000524C*
+  ID_MODEL_FROM_DATABASE=Rage 128 VR AGP
+ pci:v00001002d0000524Csv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Xpert 99/Xpert 2000
++ ID_MODEL_FROM_DATABASE=Rage 128 VR AGP (Xpert 99/Xpert 2000)
+ pci:v00001002d0000524Csv00001002sd00000088*
+- ID_MODEL_FROM_DATABASE=Xpert 99
++ ID_MODEL_FROM_DATABASE=Rage 128 VR AGP (Xpert 99)
+ pci:v00001002d00005346*
+  ID_MODEL_FROM_DATABASE=Rage 128 SF/4x AGP 2x
+ pci:v00001002d00005346sv00001002sd00000048*
+- ID_MODEL_FROM_DATABASE=RAGE 128 16MB VGA TVOUT AMC PAL
++ ID_MODEL_FROM_DATABASE=Rage 128 SF/4x AGP 2x (RAGE 128 16MB VGA TVOUT AMC PAL)
+ pci:v00001002d0000534D*
+  ID_MODEL_FROM_DATABASE=Rage 128 4X AGP 4x
+ pci:v00001002d0000534Dsv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Xpert 99/Xpert 2000
++ ID_MODEL_FROM_DATABASE=Rage 128 4X AGP 4x (Xpert 99/Xpert 2000)
+ pci:v00001002d0000534Dsv00001002sd00000018*
+- ID_MODEL_FROM_DATABASE=Xpert 2000
++ ID_MODEL_FROM_DATABASE=Rage 128 4X AGP 4x (Xpert 2000)
+ pci:v00001002d00005354*
+  ID_MODEL_FROM_DATABASE=Mach 64 VT
+ pci:v00001002d00005354sv00001002sd00005654*
+- ID_MODEL_FROM_DATABASE=Mach 64 reference
++ ID_MODEL_FROM_DATABASE=Mach 64 VT (Mach 64 reference)
+ pci:v00001002d00005446*
+  ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x
+ pci:v00001002d00005446sv00001002sd00000004*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage Fury Pro)
+ pci:v00001002d00005446sv00001002sd00000008*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage Fury Pro/Xpert 2000 Pro)
+ pci:v00001002d00005446sv00001002sd00000018*
+- ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage Fury Pro/Xpert 2000 Pro)
+ pci:v00001002d00005446sv00001002sd00000028*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW Pro AGP
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage 128 AIW Pro AGP)
+ pci:v00001002d00005446sv00001002sd00000029*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage 128 AIW)
+ pci:v00001002d00005446sv00001002sd0000002A*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW Pro AGP
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage 128 AIW Pro AGP)
+ pci:v00001002d00005446sv00001002sd0000002B*
+- ID_MODEL_FROM_DATABASE=Rage 128 AIW
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Rage 128 AIW)
+ pci:v00001002d00005446sv00001002sd00000048*
+- ID_MODEL_FROM_DATABASE=Xpert 2000 Pro
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x (Xpert 2000 Pro)
+ pci:v00001002d00005452*
+  ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra4XL VR-R AGP
+ pci:v00001002d00005452sv00001002sd0000001C*
+- ID_MODEL_FROM_DATABASE=Rage 128 Pro 4XL
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra4XL VR-R AGP (Rage 128 Pro 4XL)
+ pci:v00001002d00005452sv0000103Csd00001279*
+- ID_MODEL_FROM_DATABASE=Rage 128 Pro 4XL
++ ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra4XL VR-R AGP (Rage 128 Pro 4XL)
+ pci:v00001002d00005460*
+  ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300]
+ pci:v00001002d00005460sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] (CR11/VR11 Single Board Computer)
+ pci:v00001002d00005461*
+  ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300]
+@@ -3594,16 +3594,16 @@ pci:v00001002d0000554B*
+  ID_MODEL_FROM_DATABASE=R423 [Radeon X800 GT/SE]
+ pci:v00001002d0000554Bsv00001002sd00000302*
+- ID_MODEL_FROM_DATABASE=Radeon X800 SE
++ ID_MODEL_FROM_DATABASE=R423 [Radeon X800 GT/SE] (Radeon X800 SE)
+ pci:v00001002d0000554D*
+  ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL]
+ pci:v00001002d0000554Dsv00001002sd00000322*
+- ID_MODEL_FROM_DATABASE=All-In-Wonder X800 XL
++ ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL] (All-In-Wonder X800 XL)
+ pci:v00001002d0000554Dsv00001458sd00002124*
+- ID_MODEL_FROM_DATABASE=GV-R80L256V-B (AGP)
++ ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL] (GV-R80L256V-B (AGP))
+ pci:v00001002d0000554E*
+  ID_MODEL_FROM_DATABASE=R430 [All-In-Wonder X800 GT]
+@@ -3627,7 +3627,7 @@ pci:v00001002d0000556D*
+  ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL] (Secondary)
+ pci:v00001002d0000556Dsv00001458sd00002125*
+- ID_MODEL_FROM_DATABASE=GV-R80L256V-B (AGP)
++ ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL] (Secondary) (GV-R80L256V-B (AGP))
+ pci:v00001002d0000556F*
+  ID_MODEL_FROM_DATABASE=R430 [Radeon X800] (Secondary)
+@@ -3648,16 +3648,16 @@ pci:v00001002d00005653*
+  ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700]
+ pci:v00001002d00005653sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] (Aspire 5024WLMi)
+ pci:v00001002d00005653sv0000103Csd00000940*
+- ID_MODEL_FROM_DATABASE=HP Compaq NW8240 Mobile Workstation
++ ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] (HP Compaq NW8240 Mobile Workstation)
+ pci:v00001002d00005654*
+  ID_MODEL_FROM_DATABASE=264VT [Mach64 VT]
+ pci:v00001002d00005654sv00001002sd00005654*
+- ID_MODEL_FROM_DATABASE=Mach64VT Reference
++ ID_MODEL_FROM_DATABASE=264VT [Mach64 VT] (Mach64VT Reference)
+ pci:v00001002d00005655*
+  ID_MODEL_FROM_DATABASE=264VT3 [Mach64 VT3]
+@@ -3699,22 +3699,22 @@ pci:v00001002d00005940*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO] (Secondary)
+ pci:v00001002d00005940sv000017AFsd00002021*
+- ID_MODEL_FROM_DATABASE=Excalibur Radeon 9250 (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO] (Secondary) (Excalibur Radeon 9250 (Secondary))
+ pci:v00001002d00005941*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Secondary)
+ pci:v00001002d00005941sv00001458sd00004019*
+- ID_MODEL_FROM_DATABASE=Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Secondary) (Radeon 9200)
+ pci:v00001002d00005941sv0000174Bsd00007C12*
+- ID_MODEL_FROM_DATABASE=Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Secondary) (Radeon 9200)
+ pci:v00001002d00005941sv000017AFsd0000200D*
+- ID_MODEL_FROM_DATABASE=Excalibur Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Secondary) (Excalibur Radeon 9200)
+ pci:v00001002d00005941sv000018BCsd00000050*
+- ID_MODEL_FROM_DATABASE=GC-R9200-C3 (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Secondary) (GC-R9200-C3 (Secondary))
+ pci:v00001002d00005944*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE PCI]
+@@ -3723,22 +3723,22 @@ pci:v00001002d00005950*
+  ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge
+ pci:v00001002d00005950sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi
++ ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge (Aspire 5024WLMMi)
+ pci:v00001002d00005950sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge (DC5750 Microtower)
+ pci:v00001002d00005950sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge (Pavilion t3030.de Desktop PC)
+ pci:v00001002d00005950sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge (MX6125)
+ pci:v00001002d00005950sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge (MS-1013 Notebook)
+ pci:v00001002d00005950sv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge (Aspire L250)
+ pci:v00001002d00005951*
+  ID_MODEL_FROM_DATABASE=RX480/RX482 Host Bridge
+@@ -3750,19 +3750,19 @@ pci:v00001002d00005954*
+  ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 200 Series]
+ pci:v00001002d00005954sv00001002sd00005954*
+- ID_MODEL_FROM_DATABASE=RV370 [Radeon Xpress 200G Series]
++ ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] (RV370 [Radeon Xpress 200G Series])
+ pci:v00001002d00005955*
+  ID_MODEL_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200]
+ pci:v00001002d00005955sv00001002sd00005955*
+- ID_MODEL_FROM_DATABASE=RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)]
++ ID_MODEL_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200] (RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)])
+ pci:v00001002d00005955sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200] (MX6125)
+ pci:v00001002d00005955sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200] (MS-1013 Notebook)
+ pci:v00001002d00005956*
+  ID_MODEL_FROM_DATABASE=RD790 Host Bridge
+@@ -3771,7 +3771,7 @@ pci:v00001002d00005957*
+  ID_MODEL_FROM_DATABASE=RX780/RX790 Host Bridge
+ pci:v00001002d00005957sv00001849sd00005957*
+- ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard
++ ID_MODEL_FROM_DATABASE=RX780/RX790 Host Bridge (A770CrossFire Motherboard)
+ pci:v00001002d00005958*
+  ID_MODEL_FROM_DATABASE=RD780 Host Bridge
+@@ -3780,37 +3780,37 @@ pci:v00001002d00005960*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO]
+ pci:v00001002d00005960sv000017AFsd00002020*
+- ID_MODEL_FROM_DATABASE=Excalibur Radeon 9250
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO] (Excalibur Radeon 9250)
+ pci:v00001002d00005961*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200]
+ pci:v00001002d00005961sv00001002sd00002F72*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 9200 Series
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (All-in-Wonder 9200 Series)
+ pci:v00001002d00005961sv00001019sd00004C30*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 VIVO
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Radeon 9200 VIVO)
+ pci:v00001002d00005961sv000012ABsd00005961*
+- ID_MODEL_FROM_DATABASE=YUAN SMARTVGA Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (YUAN SMARTVGA Radeon 9200)
+ pci:v00001002d00005961sv00001458sd00004018*
+- ID_MODEL_FROM_DATABASE=Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Radeon 9200)
+ pci:v00001002d00005961sv0000174Bsd00007C13*
+- ID_MODEL_FROM_DATABASE=Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Radeon 9200)
+ pci:v00001002d00005961sv000017AFsd0000200C*
+- ID_MODEL_FROM_DATABASE=Excalibur Radeon 9200
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Excalibur Radeon 9200)
+ pci:v00001002d00005961sv000018BCsd00000050*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 Game Buster
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Radeon 9200 Game Buster)
+ pci:v00001002d00005961sv000018BCsd00000051*
+- ID_MODEL_FROM_DATABASE=GC-R9200-C3
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (GC-R9200-C3)
+ pci:v00001002d00005961sv000018BCsd00000053*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 Game Buster VIVO
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Radeon 9200 Game Buster VIVO)
+ pci:v00001002d00005962*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200]
+@@ -3819,37 +3819,37 @@ pci:v00001002d00005964*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE]
+ pci:v00001002d00005964sv00001002sd00005964*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz)
+ pci:v00001002d00005964sv00001043sd0000C006*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE / TD / 128M
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE / TD / 128M)
+ pci:v00001002d00005964sv00001458sd00004018*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE)
+ pci:v00001002d00005964sv00001458sd00004032*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE 128MB
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE 128MB)
+ pci:v00001002d00005964sv0000147Bsd00006191*
+- ID_MODEL_FROM_DATABASE=R9200SE-DT
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (R9200SE-DT)
+ pci:v00001002d00005964sv0000148Csd00002073*
+- ID_MODEL_FROM_DATABASE=CN-AG92E
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (CN-AG92E)
+ pci:v00001002d00005964sv0000174Bsd00007C13*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE)
+ pci:v00001002d00005964sv00001787sd00005964*
+- ID_MODEL_FROM_DATABASE=Excalibur 9200SE VIVO 128M
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Excalibur 9200SE VIVO 128M)
+ pci:v00001002d00005964sv000017AFsd00002012*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE Excalibur
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Radeon 9200 SE Excalibur)
+ pci:v00001002d00005964sv000018BCsd00000170*
+- ID_MODEL_FROM_DATABASE=Sapphire Radeon 9200 SE 128MB Game Buster
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Sapphire Radeon 9200 SE 128MB Game Buster)
+ pci:v00001002d00005964sv000018BCsd00000173*
+- ID_MODEL_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (GC-R9200L(SE)-C3H [Radeon 9200 Game Buster])
+ pci:v00001002d00005965*
+  ID_MODEL_FROM_DATABASE=RV280 GL [FireMV 2200 PCI]
+@@ -3858,10 +3858,10 @@ pci:v00001002d00005974*
+  ID_MODEL_FROM_DATABASE=RS482/RS485 [Radeon Xpress 1100/1150]
+ pci:v00001002d00005974sv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=RS482/RS485 [Radeon Xpress 1100/1150] (DC5750 Microtower)
+ pci:v00001002d00005974sv00001462sd00007141*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=RS482/RS485 [Radeon Xpress 1100/1150] (Aspire L250)
+ pci:v00001002d00005975*
+  ID_MODEL_FROM_DATABASE=RS482M [Mobility Radeon Xpress 200]
+@@ -3870,7 +3870,7 @@ pci:v00001002d00005978*
+  ID_MODEL_FROM_DATABASE=RX780/RD790 PCI to PCI bridge (external gfx0 port A)
+ pci:v00001002d00005978sv00001849sd00005957*
+- ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard
++ ID_MODEL_FROM_DATABASE=RX780/RD790 PCI to PCI bridge (external gfx0 port A) (A770CrossFire Motherboard)
+ pci:v00001002d00005979*
+  ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx0 port B)
+@@ -3891,13 +3891,13 @@ pci:v00001002d0000597E*
+  ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port E)
+ pci:v00001002d0000597Esv00001849sd00005957*
+- ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard
++ ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port E) (A770CrossFire Motherboard)
+ pci:v00001002d0000597F*
+  ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port F)
+ pci:v00001002d0000597Fsv00001849sd00005957*
+- ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard
++ ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port F) (A770CrossFire Motherboard)
+ pci:v00001002d00005980*
+  ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx1 port A)
+@@ -3918,7 +3918,7 @@ pci:v00001002d00005A12*
+  ID_MODEL_FROM_DATABASE=RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part
+ pci:v00001002d00005A12sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part (H8DGU)
+ pci:v00001002d00005A13*
+  ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx0 port A)
+@@ -3939,7 +3939,7 @@ pci:v00001002d00005A18*
+  ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port D)
+ pci:v00001002d00005A18sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port D) (H8DGU)
+ pci:v00001002d00005A19*
+  ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port E)
+@@ -3963,7 +3963,7 @@ pci:v00001002d00005A1F*
+  ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (NB-SB link)
+ pci:v00001002d00005A1Fsv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (NB-SB link) (H8DGU)
+ pci:v00001002d00005A20*
+  ID_MODEL_FROM_DATABASE=RD890S PCI Express bridge for GPP2 port 1
+@@ -3996,7 +3996,7 @@ pci:v00001002d00005A3F*
+  ID_MODEL_FROM_DATABASE=RC4xx/RS4xx PCI Bridge [int gfx]
+ pci:v00001002d00005A3Fsv00001462sd00007217*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=RC4xx/RS4xx PCI Bridge [int gfx] (Aspire L250)
+ pci:v00001002d00005A41*
+  ID_MODEL_FROM_DATABASE=RS400 [Radeon Xpress 200]
+@@ -4014,25 +4014,25 @@ pci:v00001002d00005B60*
+  ID_MODEL_FROM_DATABASE=RV370 [Radeon X300]
+ pci:v00001002d00005B60sv00001043sd0000002A*
+- ID_MODEL_FROM_DATABASE=Extreme AX300SE-X
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (Extreme AX300SE-X)
+ pci:v00001002d00005B60sv00001043sd0000032E*
+- ID_MODEL_FROM_DATABASE=Extreme AX300/TD
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (Extreme AX300/TD)
+ pci:v00001002d00005B60sv00001458sd00002102*
+- ID_MODEL_FROM_DATABASE=GV-RX30S128D (X300SE)
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (GV-RX30S128D (X300SE))
+ pci:v00001002d00005B60sv00001462sd00000400*
+- ID_MODEL_FROM_DATABASE=RX300SE-TD128E (MS-8940 REV:200)
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (RX300SE-TD128E (MS-8940 REV:200))
+ pci:v00001002d00005B60sv00001462sd00000402*
+- ID_MODEL_FROM_DATABASE=RX300SE-TD128E (MS-8940)
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (RX300SE-TD128E (MS-8940))
+ pci:v00001002d00005B60sv0000174Bsd00000500*
+- ID_MODEL_FROM_DATABASE=Radeon X300 (PCIE)
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (Radeon X300 (PCIE))
+ pci:v00001002d00005B60sv0000196Dsd00001086*
+- ID_MODEL_FROM_DATABASE=X300SE HM
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] (X300SE HM)
+ pci:v00001002d00005B62*
+  ID_MODEL_FROM_DATABASE=RV370 [Radeon X600/X600 SE]
+@@ -4053,13 +4053,13 @@ pci:v00001002d00005B70*
+  ID_MODEL_FROM_DATABASE=RV370 [Radeon X300 SE]
+ pci:v00001002d00005B70sv00001462sd00000403*
+- ID_MODEL_FROM_DATABASE=Radeon X300 SE 128MB DDR
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300 SE] (Radeon X300 SE 128MB DDR)
+ pci:v00001002d00005B70sv0000174Bsd00000501*
+- ID_MODEL_FROM_DATABASE=Radeon X300 SE
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300 SE] (Radeon X300 SE)
+ pci:v00001002d00005B70sv0000196Dsd00001087*
+- ID_MODEL_FROM_DATABASE=Radeon X300 SE HyperMemory
++ ID_MODEL_FROM_DATABASE=RV370 [Radeon X300 SE] (Radeon X300 SE HyperMemory)
+ pci:v00001002d00005B72*
+  ID_MODEL_FROM_DATABASE=RV380 [Radeon X300/X550/X1050 Series] (Secondary)
+@@ -4080,37 +4080,37 @@ pci:v00001002d00005C63*
+  ID_MODEL_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP]
+ pci:v00001002d00005C63sv00001002sd00005C63*
+- ID_MODEL_FROM_DATABASE=Apple iBook G4 2004
++ ID_MODEL_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] (Apple iBook G4 2004)
+ pci:v00001002d00005C63sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30 notebook
++ ID_MODEL_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] (P30 notebook)
+ pci:v00001002d00005D44*
+  ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary)
+ pci:v00001002d00005D44sv00001458sd00004019*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE (Secondary))
+ pci:v00001002d00005D44sv00001458sd00004032*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE 128MB
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE 128MB)
+ pci:v00001002d00005D44sv0000147Bsd00006190*
+- ID_MODEL_FROM_DATABASE=R9200SE-DT (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (R9200SE-DT (Secondary))
+ pci:v00001002d00005D44sv0000174Bsd00007C12*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE (Secondary))
+ pci:v00001002d00005D44sv00001787sd00005965*
+- ID_MODEL_FROM_DATABASE=Excalibur 9200SE VIVO 128M (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Excalibur 9200SE VIVO 128M (Secondary))
+ pci:v00001002d00005D44sv000017AFsd00002013*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE Excalibur (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE Excalibur (Secondary))
+ pci:v00001002d00005D44sv000018BCsd00000171*
+- ID_MODEL_FROM_DATABASE=Radeon 9200 SE 128MB Game Buster (Secondary)
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (Radeon 9200 SE 128MB Game Buster (Secondary))
+ pci:v00001002d00005D44sv000018BCsd00000172*
+- ID_MODEL_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster]
++ ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) (GC-R9200L(SE)-C3H [Radeon 9200 Game Buster])
+ pci:v00001002d00005D45*
+  ID_MODEL_FROM_DATABASE=RV280 GL [FireMV 2200 PCI] (Secondary)
+@@ -4140,7 +4140,7 @@ pci:v00001002d00005D52*
+  ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT]
+ pci:v00001002d00005D52sv00001002sd00000B12*
+- ID_MODEL_FROM_DATABASE=PowerColor X850XT PCIe (Primary)
++ ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT] (PowerColor X850XT PCIe (Primary))
+ pci:v00001002d00005D57*
+  ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT]
+@@ -4155,7 +4155,7 @@ pci:v00001002d00005D72*
+  ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT] (Secondary)
+ pci:v00001002d00005D72sv00001002sd00000B13*
+- ID_MODEL_FROM_DATABASE=PowerColor X850XT PCIe (Secondary)
++ ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT] (Secondary) (PowerColor X850XT PCIe (Secondary))
+ pci:v00001002d00005D77*
+  ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT] (Secondary)
+@@ -4179,13 +4179,13 @@ pci:v00001002d00005E4D*
+  ID_MODEL_FROM_DATABASE=RV410 [Radeon X700]
+ pci:v00001002d00005E4Dsv0000148Csd00002116*
+- ID_MODEL_FROM_DATABASE=Bravo X700
++ ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] (Bravo X700)
+ pci:v00001002d00005E4F*
+  ID_MODEL_FROM_DATABASE=RV410 [Radeon X700]
+ pci:v00001002d00005E4Fsv00001569sd00001E4F*
+- ID_MODEL_FROM_DATABASE=Radeon X550 XT
++ ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] (Radeon X550 XT)
+ pci:v00001002d00005E6B*
+  ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 PRO] (Secondary)
+@@ -4194,7 +4194,7 @@ pci:v00001002d00005E6D*
+  ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] (Secondary)
+ pci:v00001002d00005E6Dsv0000148Csd00002117*
+- ID_MODEL_FROM_DATABASE=Bravo X700 (Secondary)
++ ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] (Secondary) (Bravo X700 (Secondary))
+ pci:v00001002d00005F57*
+  ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT]
+@@ -4206,7 +4206,7 @@ pci:v00001002d00006601*
+  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M]
+ pci:v00001002d00006601sv0000103Csd00002100*
+- ID_MODEL_FROM_DATABASE=FirePro M4100
++ ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M] (FirePro M4100)
+ pci:v00001002d00006602*
+  ID_MODEL_FROM_DATABASE=Mars
+@@ -4230,40 +4230,40 @@ pci:v00001002d00006610*
+  ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250]
+ pci:v00001002d00006610sv00001019sd00000030*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8670
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon HD 8670)
+ pci:v00001002d00006610sv00001028sd00002120*
+- ID_MODEL_FROM_DATABASE=Radeon R7 250
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon R7 250)
+ pci:v00001002d00006610sv00001028sd00002322*
+- ID_MODEL_FROM_DATABASE=Radeon R7 250
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon R7 250)
+ pci:v00001002d00006610sv00001462sd00002910*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8670
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon HD 8670)
+ pci:v00001002d00006610sv00001462sd00002911*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8670
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon HD 8670)
+ pci:v00001002d00006610sv00001642sd00003C81*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8670
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon HD 8670)
+ pci:v00001002d00006610sv00001642sd00003C91*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8670
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250] (Radeon HD 8670)
+ pci:v00001002d00006611*
+  ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM]
+ pci:v00001002d00006611sv00001028sd0000210B*
+- ID_MODEL_FROM_DATABASE=Radeon R5 240 OEM
++ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM] (Radeon R5 240 OEM)
+ pci:v00001002d00006611sv0000174Bsd00004248*
+- ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
++ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM] (Radeon R7 240 OEM)
+ pci:v00001002d00006611sv0000174Bsd0000A240*
+- ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
++ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM] (Radeon R7 240 OEM)
+ pci:v00001002d00006611sv00001B0Asd000090D3*
+- ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
++ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM] (Radeon R7 240 OEM)
+ pci:v00001002d00006613*
+  ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240]
+@@ -4302,28 +4302,28 @@ pci:v00001002d0000665C*
+  ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM]
+ pci:v00001002d0000665Csv00001043sd00000452*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7790 DirectCU II OC
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon HD 7790 DirectCU II OC)
+ pci:v00001002d0000665Csv00001462sd00002930*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7790 OC
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon HD 7790 OC)
+ pci:v00001002d0000665Csv00001462sd00002932*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8770
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon HD 8770)
+ pci:v00001002d0000665Csv00001462sd00002934*
+- ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon R9 260 OEM)
+ pci:v00001002d0000665Csv0000148Csd00009260*
+- ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon R9 260 OEM)
+ pci:v00001002d0000665Csv00001682sd00003310*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7790 Black Edition 2 GB
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon HD 7790 Black Edition 2 GB)
+ pci:v00001002d0000665Csv0000174Bsd0000E253*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7790 Dual-X OC
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon HD 7790 Dual-X OC)
+ pci:v00001002d0000665Csv00001787sd00002329*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM] (Radeon HD 7790 TurboDuo)
+ pci:v00001002d0000665D*
+  ID_MODEL_FROM_DATABASE=Bonaire [Radeon R7 200 Series]
+@@ -4335,7 +4335,7 @@ pci:v00001002d00006663*
+  ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M]
+ pci:v00001002d00006663sv00001025sd00000846*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8570A
++ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M] (Radeon HD 8570A)
+ pci:v00001002d00006664*
+  ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M240]
+@@ -4377,34 +4377,34 @@ pci:v00001002d00006720*
+  ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M]
+ pci:v00001002d00006720sv00001028sd0000048F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6990M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6990M)
+ pci:v00001002d00006720sv00001028sd00000490*
+- ID_MODEL_FROM_DATABASE=Alienware M17x R3 Radeon HD 6970M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Alienware M17x R3 Radeon HD 6970M)
+ pci:v00001002d00006720sv00001028sd000004A4*
+- ID_MODEL_FROM_DATABASE=FirePro M8900
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (FirePro M8900)
+ pci:v00001002d00006720sv00001028sd000004BA*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6990M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6990M)
+ pci:v00001002d00006720sv00001028sd0000053F*
+- ID_MODEL_FROM_DATABASE=FirePro M8900
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (FirePro M8900)
+ pci:v00001002d00006720sv0000106Bsd00000B00*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6970M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6970M)
+ pci:v00001002d00006720sv00001558sd00005102*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6970M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6970M)
+ pci:v00001002d00006720sv00001558sd00005104*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6990M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6990M)
+ pci:v00001002d00006720sv00001558sd00007201*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6990M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6990M)
+ pci:v00001002d00006720sv0000174Bsd0000E188*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6970M
++ ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] (Radeon HD 6970M)
+ pci:v00001002d00006724*
+  ID_MODEL_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series]
+@@ -4416,511 +4416,511 @@ pci:v00001002d00006738*
+  ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870]
+ pci:v00001002d00006738sv00001682sd00003103*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8670
++ ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870] (Radeon HD 8670)
+ pci:v00001002d00006738sv00001787sd0000201A*
+- ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870 X2]
++ ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870] (Barts XT [Radeon HD 6870 X2])
+ pci:v00001002d00006738sv00001787sd0000201B*
+- ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870 X2]
++ ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870] (Barts XT [Radeon HD 6870 X2])
+ pci:v00001002d00006739*
+  ID_MODEL_FROM_DATABASE=Barts PRO [Radeon HD 6850]
+ pci:v00001002d00006739sv00001043sd000003B4*
+- ID_MODEL_FROM_DATABASE=EAH6850 [Radeon HD 6850]
++ ID_MODEL_FROM_DATABASE=Barts PRO [Radeon HD 6850] (EAH6850 [Radeon HD 6850])
+ pci:v00001002d0000673E*
+  ID_MODEL_FROM_DATABASE=Barts LE [Radeon HD 6790]
+ pci:v00001002d0000673Esv0000148Csd00007720*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7720 OEM
++ ID_MODEL_FROM_DATABASE=Barts LE [Radeon HD 6790] (Radeon HD 7720 OEM)
+ pci:v00001002d00006740*
+  ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT]
+ pci:v00001002d00006740sv00001019sd0000238C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv00001019sd0000238E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv00001019sd00002391*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv00001019sd00002392*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Precision M4600)
+ pci:v00001002d00006740sv00001028sd0000053E*
+- ID_MODEL_FROM_DATABASE=FirePro M5950
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (FirePro M5950)
+ pci:v00001002d00006740sv0000103Csd00001630*
+- ID_MODEL_FROM_DATABASE=FirePro M5950
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (FirePro M5950)
+ pci:v00001002d00006740sv0000103Csd00001631*
+- ID_MODEL_FROM_DATABASE=FirePro M5950
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (FirePro M5950)
+ pci:v00001002d00006740sv0000103Csd0000164B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000103Csd0000164E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000103Csd00001657*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd00001658*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd0000165A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd0000165B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd00001688*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd00001689*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd0000168A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd0000185E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7690M XT
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 7690M XT)
+ pci:v00001002d00006740sv0000103Csd00003388*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd00003389*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd00003582*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6770M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6770M)
+ pci:v00001002d00006740sv0000103Csd0000366C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv00001043sd00001D02*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv00001043sd00001D12*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000104Dsd00009084*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000104Dsd00009085*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000144Dsd0000B074*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000144Dsd0000B077*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000144Dsd0000B084*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv0000144Dsd0000B088*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006740sv000017AAsd00003982*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6730M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] (Radeon HD 6730M)
+ pci:v00001002d00006741*
+  ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M]
+ pci:v00001002d00006741sv00001019sd0000238E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001019sd0000238F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000379*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000037B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000037E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000382*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000384*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000385*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000386*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000387*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000388*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000442*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000451*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000489*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000048B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000048C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000050A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000050B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000050C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000050E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000050F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000513*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000514*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000515*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000516*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000051E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000051F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000520*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000521*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000052A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000555*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000556*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000055D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000055E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000056D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000059A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000059B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000059E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd0000059F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000600*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000605*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000606*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001025sd00000619*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001028sd000004C1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv00001028sd000004C5*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv00001028sd000004CD*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv00001028sd000004D7*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv00001028sd000004D9*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv00001028sd0000052D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000103Csd00001617*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv0000103Csd00001646*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd00001647*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv0000103Csd0000164B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv0000103Csd0000164E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv0000103Csd00001688*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd00001689*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd0000168A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd00001860*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7690M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 7690M)
+ pci:v00001002d00006741sv0000103Csd00003385*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000103Csd00003560*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd0000358D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd00003590*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd00003593*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000103Csd0000366C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001043sd00001CD2*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001043sd00002121*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001043sd00002122*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001043sd00002123*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001043sd00002125*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 7670M)
+ pci:v00001002d00006741sv00001043sd00002127*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 7670M)
+ pci:v00001002d00006741sv0000104Dsd0000907B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000104Dsd00009080*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000104Dsd00009081*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000106Bsd000000E2*
+- ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", Late 2011]
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (MacBookPro8,2 [Core i7, 15", Late 2011])
+ pci:v00001002d00006741sv00001179sd0000FD63*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv00001179sd0000FD65*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000144Dsd0000C093*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv0000144Dsd0000C0AC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv0000144Dsd0000C0B3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6750M)
+ pci:v00001002d00006741sv0000144Dsd0000C539*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000144Dsd0000C609*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv0000152Dsd00000914*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv000017AAsd000021E1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6630M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6630M)
+ pci:v00001002d00006741sv000017AAsd00003970*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv000017AAsd00003976*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006741sv00001854sd00000907*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650M
++ ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6630M/6650M/6750M/7670M/7690M] (Radeon HD 6650M)
+ pci:v00001002d00006742*
+  ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M]
+ pci:v00001002d00006742sv00001002sd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv00001019sd00002393*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 6610M)
+ pci:v00001002d00006742sv00001043sd00001D82*
+- ID_MODEL_FROM_DATABASE=K53SK Laptop Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (K53SK Laptop Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB22*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB23*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB27*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB2A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB2C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB30*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB31*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB32*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB38*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB39*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB3A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB3B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB40*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB41*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB47*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB48*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB49*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB51*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB52*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB53*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB56*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB81*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB82*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FB83*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FC56*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FCD4*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001179sd0000FCEE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7610M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 7610M)
+ pci:v00001002d00006742sv00001458sd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv00001462sd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv0000148Csd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv00001682sd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv0000174Bsd00005570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 5570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 5570])
+ pci:v00001002d00006742sv0000174Bsd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv0000174Bsd00007570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 7570])
+ pci:v00001002d00006742sv0000174Bsd00008510*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8510]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 8510])
+ pci:v00001002d00006742sv0000174Bsd00008570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 8570])
+ pci:v00001002d00006742sv00001787sd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv000017AFsd00006570*
+- ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Turks [Radeon HD 6570])
+ pci:v00001002d00006742sv00008086sd00002111*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6625M
++ ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] (Radeon HD 6625M)
+ pci:v00001002d00006743*
+  ID_MODEL_FROM_DATABASE=Whistler [Radeon E6760]
+@@ -4935,133 +4935,133 @@ pci:v00001002d00006750*
+  ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A]
+ pci:v00001002d00006750sv00001462sd00002670*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6670A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 6670A)
+ pci:v00001002d00006750sv000017AAsd00003079*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 7650A)
+ pci:v00001002d00006750sv000017AAsd0000307A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 6650A)
+ pci:v00001002d00006750sv000017AAsd00003087*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 7650A)
+ pci:v00001002d00006750sv000017AAsd00003618*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 6650A)
+ pci:v00001002d00006750sv000017AAsd00003623*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 6650A)
+ pci:v00001002d00006750sv000017AAsd00003627*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6650A
++ ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A/7650A] (Radeon HD 6650A)
+ pci:v00001002d00006751*
+  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A]
+ pci:v00001002d00006751sv00001028sd00000548*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650A
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A] (Radeon HD 7650A)
+ pci:v00001002d00006751sv00001462sd00002671*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670A
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A] (Radeon HD 7670A)
+ pci:v00001002d00006751sv00001462sd00002672*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670A
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A] (Radeon HD 7670A)
+ pci:v00001002d00006751sv00001462sd00002680*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650A
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A] (Radeon HD 7650A)
+ pci:v00001002d00006751sv00001462sd00002681*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650A
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A] (Radeon HD 7650A)
+ pci:v00001002d00006751sv000017AAsd00003087*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650A
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7650A/7670A] (Radeon HD 7650A)
+ pci:v00001002d00006758*
+  ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670]
+ pci:v00001002d00006758sv00001028sd00000B0E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 6670)
+ pci:v00001002d00006758sv0000103Csd00006882*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 6670)
+ pci:v00001002d00006758sv00001462sd0000250A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 7670)
+ pci:v00001002d00006758sv0000148Csd00007670*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 7670)
+ pci:v00001002d00006758sv00001545sd00007670*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 7670)
+ pci:v00001002d00006758sv00001682sd00003300*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 7670)
+ pci:v00001002d00006758sv0000174Bsd00007670*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 7670)
+ pci:v00001002d00006758sv0000174Bsd0000E181*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 6670)
+ pci:v00001002d00006758sv00001787sd00002309*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6670
++ ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670/7670] (Radeon HD 6670)
+ pci:v00001002d00006759*
+  ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550]
+ pci:v00001002d00006759sv0000103Csd00003130*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001043sd00000403*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001462sd00002500*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001462sd00002509*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 7570)
+ pci:v00001002d00006759sv0000148Csd00007570*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 7570)
+ pci:v00001002d00006759sv00001642sd00003A67*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001682sd00003280*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 7570)
+ pci:v00001002d00006759sv00001682sd00003530*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8550
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 8550)
+ pci:v00001002d00006759sv0000174Bsd00007570*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 7570)
+ pci:v00001002d00006759sv0000174Bsd0000E142*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv0000174Bsd0000E181*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001B0Asd0000908F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001B0Asd00009090*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001B0Asd00009091*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001B0Asd00009092*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001B0Asd0000909E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 6570)
+ pci:v00001002d00006759sv00001B0Asd000090B5*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 7570)
+ pci:v00001002d00006759sv00001B0Asd000090B6*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550] (Radeon HD 7570)
+ pci:v00001002d0000675B*
+  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7600 Series]
+@@ -5073,526 +5073,526 @@ pci:v00001002d0000675F*
+  ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510]
+ pci:v00001002d0000675Fsv0000148Csd00006510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 6510)
+ pci:v00001002d0000675Fsv0000148Csd00006530*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6530
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 6530)
+ pci:v00001002d0000675Fsv0000148Csd00007510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7510
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 7510)
+ pci:v00001002d0000675Fsv00001545sd00007570*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 7570)
+ pci:v00001002d0000675Fsv0000174Bsd00006510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 6510)
+ pci:v00001002d0000675Fsv0000174Bsd00007510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7510
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 7510)
+ pci:v00001002d0000675Fsv0000174Bsd00008510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8510
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 8510)
+ pci:v00001002d0000675Fsv00001787sd00002012*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570 2GB GDDR3
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 5570 2GB GDDR3)
+ pci:v00001002d0000675Fsv00001787sd00002314*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570 1GB DDR2/GDDR3
++ ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510/8510] (Radeon HD 5570 1GB DDR2/GDDR3)
+ pci:v00001002d00006760*
+  ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series]
+ pci:v00001002d00006760sv00001002sd00000124*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001002sd00000134*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001019sd0000238B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001019sd0000238E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001019sd00002390*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001019sd00009985*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004C1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004C3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004CA*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004CB*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004CC*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Vostro 3350)
+ pci:v00001002d00006760sv00001028sd000004D1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004D3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd000004D7*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd00000502*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd00000503*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd00000506*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd00000507*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd00000514*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001028sd0000051C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv00001028sd0000051D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv0000103Csd0000161A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000161B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000161E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000161F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001622*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv0000103Csd00001623*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv0000103Csd0000164A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000164D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001651*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001656*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00001658*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00001659*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000165B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000165D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000165F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001661*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001663*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001665*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001667*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001669*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000166B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000166C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000166E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001670*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001672*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000167A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000167B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000167D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000167F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000168C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000168F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001694*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001696*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00001698*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000169A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000169C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00001855*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv0000103Csd00001859*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv0000103Csd0000185C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv0000103Csd0000185D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv0000103Csd0000185F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv0000103Csd00001863*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv0000103Csd0000355C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000355F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00003563*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00003565*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00003567*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00003569*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00003581*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00003584*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd0000358C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000358F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00003592*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd00003596*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000103Csd0000366B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000103Csd00003671*
+- ID_MODEL_FROM_DATABASE=FirePro M3900
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (FirePro M3900)
+ pci:v00001002d00006760sv0000103Csd00003673*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd0000100A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd0000100C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd0000101B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd0000101C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd0000102A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv00001043sd0000102C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd0000104B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd0000105D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd0000106B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd0000106D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd0000107D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd00001CB2*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd00001D22*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd00001D32*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd00002001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd00002002*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd00002107*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd00002108*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd00002109*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd000084A0*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd000084E9*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001043sd00008515*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd00008517*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001043sd0000855A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv0000104Dsd0000907B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000104Dsd00009081*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000104Dsd00009084*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000104Dsd00009085*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv00001179sd00000003*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv00001179sd00000004*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6450M)
+ pci:v00001002d00006760sv00001179sd0000FB22*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB23*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB2C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB31*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB32*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB33*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB38*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB39*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB3A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB40*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB41*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB42*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB47*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB48*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB51*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB52*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB53*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB81*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB82*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FB83*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FC51*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001179sd0000FC52*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FC56*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FCD3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FCD4*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FCEE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv00001179sd0000FDEE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv0000144Dsd0000B074*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000144Dsd0000B084*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000144Dsd0000C095*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000144Dsd0000C0B3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6490M)
+ pci:v00001002d00006760sv0000144Dsd0000C538*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000144Dsd0000C581*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000144Dsd0000C589*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000144Dsd0000C609*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv0000144Dsd0000C625*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv0000144Dsd0000C636*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv00001462sd000010AC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv0000152Dsd00000916*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv000017AAsd000021E5*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv000017AAsd00003900*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv000017AAsd00003902*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv000017AAsd00003969*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv000017AAsd00003970*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv000017AAsd00003976*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv000017AAsd0000397B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv000017AAsd0000397D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv000017AAsd00005101*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7470M)
+ pci:v00001002d00006760sv000017AAsd00005102*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv000017AAsd00005103*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv000017AAsd00005106*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 7450M)
+ pci:v00001002d00006760sv00001854sd00000897*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001854sd00000900*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001854sd00000908*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006760sv00001854sd00002015*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6470M
++ ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] (Radeon HD 6470M)
+ pci:v00001002d00006761*
+  ID_MODEL_FROM_DATABASE=Seymour LP [Radeon HD 6430M]
+@@ -5619,22 +5619,22 @@ pci:v00001002d00006770*
+  ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A]
+ pci:v00001002d00006770sv000017AAsd0000308D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] (Radeon HD 7450A)
+ pci:v00001002d00006770sv000017AAsd00003623*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] (Radeon HD 6450A)
+ pci:v00001002d00006770sv000017AAsd00003627*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] (Radeon HD 6450A)
+ pci:v00001002d00006770sv000017AAsd00003629*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] (Radeon HD 6450A)
+ pci:v00001002d00006770sv000017AAsd0000363C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] (Radeon HD 6450A)
+ pci:v00001002d00006770sv000017AAsd00003658*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] (Radeon HD 7470A)
+ pci:v00001002d00006771*
+  ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490 / R5 235X OEM]
+@@ -5646,133 +5646,133 @@ pci:v00001002d00006778*
+  ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM]
+ pci:v00001002d00006778sv00001019sd00000024*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 7470)
+ pci:v00001002d00006778sv00001019sd00000027*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470)
+ pci:v00001002d00006778sv00001028sd00002120*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 7470)
+ pci:v00001002d00006778sv00001462sd0000B491*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470)
+ pci:v00001002d00006778sv00001462sd0000B492*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470)
+ pci:v00001002d00006778sv00001462sd0000B493*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470 OEM
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470 OEM)
+ pci:v00001002d00006778sv00001642sd00003C65*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470)
+ pci:v00001002d00006778sv00001642sd00003C75*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470)
+ pci:v00001002d00006778sv0000174Bsd00008145*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 8470)
+ pci:v00001002d00006778sv0000174Bsd0000E145*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM] (Radeon HD 7470)
+ pci:v00001002d00006779*
+  ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
+ pci:v00001002d00006779sv00001019sd00000016*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001019sd00000017*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001019sd00000018*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001028sd00002120*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv0000103Csd00002128*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv0000103Csd00002AEE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450A)
+ pci:v00001002d00006779sv00001462sd00002125*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001462sd00002346*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv00001462sd00002490*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001462sd00002494*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001462sd00002496*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv0000148Csd00007450*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv0000148Csd00008450*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8450 OEM
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 8450 OEM)
+ pci:v00001002d00006779sv00001545sd00007470*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7470
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7470)
+ pci:v00001002d00006779sv00001642sd00003A65*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001642sd00003A66*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv00001642sd00003A75*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001642sd00003A76*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv00001682sd00003200*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv0000174Bsd00007450*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450)
+ pci:v00001002d00006779sv0000174Bsd0000E127*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv0000174Bsd0000E153*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv0000174Bsd0000E164*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450 1 GB DDR3
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450 1 GB DDR3)
+ pci:v00001002d00006779sv0000174Bsd0000E180*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv0000174Bsd0000E201*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv000017AFsd00008450*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8450 OEM
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 8450 OEM)
+ pci:v00001002d00006779sv00001B0Asd00009096*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001B0Asd00009097*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001B0Asd000090A8*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450A)
+ pci:v00001002d00006779sv00001B0Asd000090B1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 6450)
+ pci:v00001002d00006779sv00001B0Asd000090B3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450A)
+ pci:v00001002d00006779sv00001B0Asd000090BB*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7450A
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM] (Radeon HD 7450A)
+ pci:v00001002d0000677B*
+  ID_MODEL_FROM_DATABASE=Caicos PRO [Radeon HD 7450]
+@@ -5790,25 +5790,25 @@ pci:v00001002d0000678A*
+  ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series]
+ pci:v00001002d0000678Asv00001002sd0000030C*
+- ID_MODEL_FROM_DATABASE=FirePro W8000
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (FirePro W8000)
+ pci:v00001002d0000678Asv00001002sd00000310*
+- ID_MODEL_FROM_DATABASE=FirePro S9000
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (FirePro S9000)
+ pci:v00001002d0000678Asv00001002sd00000420*
+- ID_MODEL_FROM_DATABASE=Radeon Sky 700
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (Radeon Sky 700)
+ pci:v00001002d0000678Asv00001002sd00000422*
+- ID_MODEL_FROM_DATABASE=Radeon Sky 900
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (Radeon Sky 900)
+ pci:v00001002d0000678Asv00001002sd00000B0E*
+- ID_MODEL_FROM_DATABASE=FirePro S10000 Passive
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (FirePro S10000 Passive)
+ pci:v00001002d0000678Asv00001002sd00000B2A*
+- ID_MODEL_FROM_DATABASE=FirePro S10000
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (FirePro S10000)
+ pci:v00001002d0000678Asv00001028sd0000030C*
+- ID_MODEL_FROM_DATABASE=FirePro W8000
++ ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] (FirePro W8000)
+ pci:v00001002d00006790*
+  ID_MODEL_FROM_DATABASE=Tahiti
+@@ -5823,67 +5823,67 @@ pci:v00001002d00006798*
+  ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]
+ pci:v00001002d00006798sv00001002sd00003000*
+- ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XT2 [Radeon HD 7970 GHz Edition])
+ pci:v00001002d00006798sv00001002sd00003001*
+- ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XTL [Radeon R9 280X])
+ pci:v00001002d00006798sv00001002sd00004000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8970 OEM
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Radeon HD 8970 OEM)
+ pci:v00001002d00006798sv00001043sd0000041C*
+- ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (HD 7970 DirectCU II)
+ pci:v00001002d00006798sv00001043sd00000420*
+- ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II TOP
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (HD 7970 DirectCU II TOP)
+ pci:v00001002d00006798sv00001043sd00000444*
+- ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II TOP
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (HD 7970 DirectCU II TOP)
+ pci:v00001002d00006798sv00001043sd00000448*
+- ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II TOP
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (HD 7970 DirectCU II TOP)
+ pci:v00001002d00006798sv00001043sd0000044A*
+- ID_MODEL_FROM_DATABASE=Tahiti XT2 [Matrix HD 7970]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XT2 [Matrix HD 7970])
+ pci:v00001002d00006798sv00001043sd0000044C*
+- ID_MODEL_FROM_DATABASE=Tahiti XT2 [Matrix HD 7970 Platinum]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XT2 [Matrix HD 7970 Platinum])
+ pci:v00001002d00006798sv00001043sd00003001*
+- ID_MODEL_FROM_DATABASE=Tahiti XTL [ROG Matrix R9 280X]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XTL [ROG Matrix R9 280X])
+ pci:v00001002d00006798sv00001043sd00003006*
+- ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X DirectCU II TOP]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XTL [Radeon R9 280X DirectCU II TOP])
+ pci:v00001002d00006798sv00001043sd00009999*
+- ID_MODEL_FROM_DATABASE=ARES II
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (ARES II)
+ pci:v00001002d00006798sv00001092sd00003000*
+- ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XT2 [Radeon HD 7970 GHz Edition])
+ pci:v00001002d00006798sv00001458sd00002261*
+- ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition OC]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XT2 [Radeon HD 7970 GHz Edition OC])
+ pci:v00001002d00006798sv00001462sd00002774*
+- ID_MODEL_FROM_DATABASE=MSI R7970 TF 3GD5/OC BE
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (MSI R7970 TF 3GD5/OC BE)
+ pci:v00001002d00006798sv00001682sd00003211*
+- ID_MODEL_FROM_DATABASE=Double D HD 7970 Black Edition
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Double D HD 7970 Black Edition)
+ pci:v00001002d00006798sv00001682sd00003213*
+- ID_MODEL_FROM_DATABASE=HD 7970 Black Edition
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (HD 7970 Black Edition)
+ pci:v00001002d00006798sv00001682sd00003214*
+- ID_MODEL_FROM_DATABASE=Double D HD 7970
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Double D HD 7970)
+ pci:v00001002d00006798sv00001787sd0000201C*
+- ID_MODEL_FROM_DATABASE=HD 7970 IceQ X²
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (HD 7970 IceQ X²)
+ pci:v00001002d00006798sv00001787sd00002317*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7990
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Radeon HD 7990)
+ pci:v00001002d00006798sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (Tahiti XT2 [Radeon HD 7970 GHz Edition])
+ pci:v00001002d00006799*
+  ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7900 Series]
+@@ -5892,28 +5892,28 @@ pci:v00001002d0000679A*
+  ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280]
+ pci:v00001002d0000679Asv00001002sd00000B01*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM
++ ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] (Radeon HD 8950 OEM)
+ pci:v00001002d0000679Asv00001002sd00003000*
+- ID_MODEL_FROM_DATABASE=Tahiti PRO2 [Radeon HD 7950 Boost]
++ ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] (Tahiti PRO2 [Radeon HD 7950 Boost])
+ pci:v00001002d0000679Asv00001462sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM
++ ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] (Radeon HD 8950 OEM)
+ pci:v00001002d0000679B*
+  ID_MODEL_FROM_DATABASE=Malta [Radeon HD 7990]
+ pci:v00001002d0000679Bsv00001002sd00000B28*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
++ ID_MODEL_FROM_DATABASE=Malta [Radeon HD 7990] (Radeon HD 8990 OEM)
+ pci:v00001002d0000679Bsv00001002sd00000B2A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7990
++ ID_MODEL_FROM_DATABASE=Malta [Radeon HD 7990] (Radeon HD 7990)
+ pci:v00001002d0000679Bsv00001462sd00008036*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
++ ID_MODEL_FROM_DATABASE=Malta [Radeon HD 7990] (Radeon HD 8990 OEM)
+ pci:v00001002d0000679Bsv0000148Csd00008990*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
++ ID_MODEL_FROM_DATABASE=Malta [Radeon HD 7990] (Radeon HD 8990 OEM)
+ pci:v00001002d0000679E*
+  ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT]
+@@ -5955,28 +5955,28 @@ pci:v00001002d00006800*
+  ID_MODEL_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M]
+ pci:v00001002d00006800sv00001002sd00000124*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7970M
++ ID_MODEL_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] (Radeon HD 7970M)
+ pci:v00001002d00006800sv00008086sd00002110*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7970M
++ ID_MODEL_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] (Radeon HD 7970M)
+ pci:v00001002d00006800sv00008086sd00002111*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7970M
++ ID_MODEL_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] (Radeon HD 7970M)
+ pci:v00001002d00006801*
+  ID_MODEL_FROM_DATABASE=Neptune XT [Radeon HD 8970M]
+ pci:v00001002d00006801sv00001002sd00000124*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8970M
++ ID_MODEL_FROM_DATABASE=Neptune XT [Radeon HD 8970M] (Radeon HD 8970M)
+ pci:v00001002d00006801sv00001462sd00001117*
+- ID_MODEL_FROM_DATABASE=Radeon R9 M290X
++ ID_MODEL_FROM_DATABASE=Neptune XT [Radeon HD 8970M] (Radeon R9 M290X)
+ pci:v00001002d00006801sv00008086sd00002110*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8970M
++ ID_MODEL_FROM_DATABASE=Neptune XT [Radeon HD 8970M] (Radeon HD 8970M)
+ pci:v00001002d00006801sv00008086sd00002111*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8970M
++ ID_MODEL_FROM_DATABASE=Neptune XT [Radeon HD 8970M] (Radeon HD 8970M)
+ pci:v00001002d00006802*
+  ID_MODEL_FROM_DATABASE=Wimbledon
+@@ -5988,10 +5988,10 @@ pci:v00001002d00006808*
+  ID_MODEL_FROM_DATABASE=Pitcairn XT GL [FirePro W7000]
+ pci:v00001002d00006808sv00001002sd00000310*
+- ID_MODEL_FROM_DATABASE=FirePro S7000
++ ID_MODEL_FROM_DATABASE=Pitcairn XT GL [FirePro W7000] (FirePro S7000)
+ pci:v00001002d00006808sv00001002sd00000420*
+- ID_MODEL_FROM_DATABASE=Radeon Sky 500
++ ID_MODEL_FROM_DATABASE=Pitcairn XT GL [FirePro W7000] (Radeon Sky 500)
+ pci:v00001002d00006809*
+  ID_MODEL_FROM_DATABASE=Pitcairn LE GL [FirePro W5000]
+@@ -6012,37 +6012,37 @@ pci:v00001002d00006818*
+  ID_MODEL_FROM_DATABASE=Pitcairn XT [Radeon HD 7870 GHz Edition]
+ pci:v00001002d00006818sv00001002sd00000B05*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8870 OEM
++ ID_MODEL_FROM_DATABASE=Pitcairn XT [Radeon HD 7870 GHz Edition] (Radeon HD 8870 OEM)
+ pci:v00001002d00006818sv0000174Bsd00008B04*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8860
++ ID_MODEL_FROM_DATABASE=Pitcairn XT [Radeon HD 7870 GHz Edition] (Radeon HD 8860)
+ pci:v00001002d00006819*
+  ID_MODEL_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850]
+ pci:v00001002d00006819sv0000174Bsd0000E221*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP
++ ID_MODEL_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850] (Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP)
+ pci:v00001002d00006820*
+  ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M]
+ pci:v00001002d00006820sv0000103Csd00001851*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7750M
++ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M] (Radeon HD 7750M)
+ pci:v00001002d00006820sv000017AAsd00003801*
+- ID_MODEL_FROM_DATABASE=Radeon R9 M275
++ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M] (Radeon R9 M275)
+ pci:v00001002d00006821*
+  ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M]
+ pci:v00001002d00006821sv00001002sd0000031E*
+- ID_MODEL_FROM_DATABASE=FirePro SX4000
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] (FirePro SX4000)
+ pci:v00001002d00006821sv00001028sd000005CC*
+- ID_MODEL_FROM_DATABASE=FirePro M5100
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] (FirePro M5100)
+ pci:v00001002d00006821sv00001028sd000015CC*
+- ID_MODEL_FROM_DATABASE=FirePro M5100
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] (FirePro M5100)
+ pci:v00001002d00006822*
+  ID_MODEL_FROM_DATABASE=Venus PRO [Radeon E8860]
+@@ -6054,7 +6054,7 @@ pci:v00001002d00006825*
+  ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M]
+ pci:v00001002d00006825sv00008086sd00002111*
+- ID_MODEL_FROM_DATABASE=Chelsea PRO
++ ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M] (Chelsea PRO)
+ pci:v00001002d00006826*
+  ID_MODEL_FROM_DATABASE=Chelsea LP [Radeon HD 7700M Series]
+@@ -6081,7 +6081,7 @@ pci:v00001002d0000682F*
+  ID_MODEL_FROM_DATABASE=Chelsea LP [Radeon HD 7730M]
+ pci:v00001002d0000682Fsv0000103Csd00001851*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7750M
++ ID_MODEL_FROM_DATABASE=Chelsea LP [Radeon HD 7730M] (Radeon HD 7750M)
+ pci:v00001002d00006830*
+  ID_MODEL_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series]
+@@ -6096,16 +6096,16 @@ pci:v00001002d00006837*
+  ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730]
+ pci:v00001002d00006837sv00001462sd00002796*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8730
++ ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730] (Radeon HD 8730)
+ pci:v00001002d00006837sv00001462sd00008092*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8730
++ ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730] (Radeon HD 8730)
+ pci:v00001002d00006837sv0000148Csd00008730*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8730
++ ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730] (Radeon HD 8730)
+ pci:v00001002d00006837sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730] (Radeon HD 6570)
+ pci:v00001002d00006838*
+  ID_MODEL_FROM_DATABASE=Cape Verde
+@@ -6120,19 +6120,19 @@ pci:v00001002d0000683D*
+  ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X]
+ pci:v00001002d0000683Dsv00001002sd00000030*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
+ pci:v00001002d0000683Dsv00001019sd00000030*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
+ pci:v00001002d0000683Dsv0000103Csd00006890*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
+ pci:v00001002d0000683Dsv00001043sd00008760*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
+ pci:v00001002d0000683Dsv0000174Bsd00008304*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
+ pci:v00001002d0000683F*
+  ID_MODEL_FROM_DATABASE=Cape Verde PRO [Radeon HD 7750 / R7 250E]
+@@ -6141,322 +6141,322 @@ pci:v00001002d00006840*
+  ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series]
+ pci:v00001002d00006840sv00001025sd0000050E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd0000050F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd00000513*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd00000514*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd0000056D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd0000059A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd0000059B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd0000059E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd00000600*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd00000606*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001025sd00000696*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7650M)
+ pci:v00001002d00006840sv00001025sd00000697*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7650M)
+ pci:v00001002d00006840sv00001025sd00000698*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7650M)
+ pci:v00001002d00006840sv00001025sd00000699*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7650M)
+ pci:v00001002d00006840sv00001025sd00000757*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd0000056A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd0000056E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd00000598*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd0000059D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd000005A3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd000005B9*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001028sd000005BB*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd000017F1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7570M)
+ pci:v00001002d00006840sv0000103Csd000017F4*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7650M)
+ pci:v00001002d00006840sv0000103Csd00001813*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7590M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7590M)
+ pci:v00001002d00006840sv0000103Csd0000182F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001830*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001835*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd0000183A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd0000183C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd0000183E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001840*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001842*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001844*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001848*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd0000184A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd0000184C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001895*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd00001897*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd000018A5*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd000018A7*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000103Csd000018F4*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd0000100A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd0000104B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd000010DC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd00002121*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd00002122*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd00002123*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd00002125*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001043sd00002127*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB11*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB22*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB23*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB2C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB31*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB32*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB38*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB39*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB3A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB40*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB41*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB47*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB48*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB51*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB52*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB53*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB81*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB82*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FB83*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FC56*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FCD4*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv00001179sd0000FCEE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000144Dsd0000C0C5*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7690M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7690M)
+ pci:v00001002d00006840sv0000144Dsd0000C0CE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv0000144Dsd0000C0DA*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv000017AAsd00003970*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv000017AAsd0000397B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv000017AAsd00005101*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv000017AAsd00005102*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006840sv000017AAsd00005103*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7670M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series] (Radeon HD 7670M)
+ pci:v00001002d00006841*
+  ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M]
+ pci:v00001002d00006841sv00001028sd00000561*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001028sd0000056C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001028sd0000057F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7570M)
+ pci:v00001002d00006841sv0000103Csd000017F1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7570M)
+ pci:v00001002d00006841sv0000103Csd000017F4*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv0000103Csd00001813*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7570M)
+ pci:v00001002d00006841sv0000103Csd0000183A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv0000103Csd0000183C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv0000103Csd0000183E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv0000103Csd00001840*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv0000103Csd00001842*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv0000103Csd00001844*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001043sd0000100A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001043sd0000104B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001043sd000010DC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001043sd00002134*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7650M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7650M)
+ pci:v00001002d00006841sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7570M)
+ pci:v00001002d00006841sv00001179sd00000002*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7570M)
+ pci:v00001002d00006841sv00001179sd0000FB43*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006841sv00001179sd0000FB91*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006841sv00001179sd0000FB92*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006841sv00001179sd0000FB93*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006841sv00001179sd0000FBA2*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006841sv00001179sd0000FBA3*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006841sv0000144Dsd0000C0C7*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7550M
++ ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7550M/7570M/7650M] (Radeon HD 7550M)
+ pci:v00001002d00006842*
+  ID_MODEL_FROM_DATABASE=Thames LE [Radeon HD 7000M Series]
+@@ -6471,13 +6471,13 @@ pci:v00001002d00006889*
+  ID_MODEL_FROM_DATABASE=Cypress PRO [FirePro V7800]
+ pci:v00001002d00006889sv00001002sd00000301*
+- ID_MODEL_FROM_DATABASE=FirePro V7800P
++ ID_MODEL_FROM_DATABASE=Cypress PRO [FirePro V7800] (FirePro V7800P)
+ pci:v00001002d0000688A*
+  ID_MODEL_FROM_DATABASE=Cypress XT [FirePro V9800]
+ pci:v00001002d0000688Asv00001002sd0000030C*
+- ID_MODEL_FROM_DATABASE=FirePro V9800P
++ ID_MODEL_FROM_DATABASE=Cypress XT [FirePro V9800] (FirePro V9800P)
+ pci:v00001002d0000688C*
+  ID_MODEL_FROM_DATABASE=Cypress XT GL [FireStream 9370]
+@@ -6489,28 +6489,28 @@ pci:v00001002d00006898*
+  ID_MODEL_FROM_DATABASE=Cypress XT [Radeon HD 5870]
+ pci:v00001002d00006898sv00001002sd00000B00*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5870 Eyefinity⁶ Edition
++ ID_MODEL_FROM_DATABASE=Cypress XT [Radeon HD 5870] (Radeon HD 5870 Eyefinity⁶ Edition)
+ pci:v00001002d00006898sv0000106Bsd000000D0*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5870 Mac Edition
++ ID_MODEL_FROM_DATABASE=Cypress XT [Radeon HD 5870] (Radeon HD 5870 Mac Edition)
+ pci:v00001002d00006898sv00001462sd00008032*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5870 1 GB GDDR5
++ ID_MODEL_FROM_DATABASE=Cypress XT [Radeon HD 5870] (Radeon HD 5870 1 GB GDDR5)
+ pci:v00001002d00006898sv0000174Bsd00006870*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6870 1600SP Edition
++ ID_MODEL_FROM_DATABASE=Cypress XT [Radeon HD 5870] (Radeon HD 6870 1600SP Edition)
+ pci:v00001002d00006899*
+  ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 5850]
+ pci:v00001002d00006899sv00001043sd00000330*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5850
++ ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 5850] (Radeon HD 5850)
+ pci:v00001002d00006899sv0000174Bsd0000237B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5850 X2
++ ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 5850] (Radeon HD 5850 X2)
+ pci:v00001002d00006899sv0000174Bsd00006850*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850 1440SP Edition
++ ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 5850] (Radeon HD 6850 1440SP Edition)
+ pci:v00001002d0000689B*
+  ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 6800 Series]
+@@ -6519,7 +6519,7 @@ pci:v00001002d0000689C*
+  ID_MODEL_FROM_DATABASE=Hemlock [Radeon HD 5970]
+ pci:v00001002d0000689Csv00001043sd00000352*
+- ID_MODEL_FROM_DATABASE=ARES
++ ID_MODEL_FROM_DATABASE=Hemlock [Radeon HD 5970] (ARES)
+ pci:v00001002d0000689D*
+  ID_MODEL_FROM_DATABASE=Hemlock [Radeon HD 5970]
+@@ -6531,79 +6531,79 @@ pci:v00001002d000068A0*
+  ID_MODEL_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5870]
+ pci:v00001002d000068A0sv00001028sd000012EF*
+- ID_MODEL_FROM_DATABASE=FirePro M7820
++ ID_MODEL_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5870] (FirePro M7820)
+ pci:v00001002d000068A0sv0000103Csd00001520*
+- ID_MODEL_FROM_DATABASE=FirePro M7820
++ ID_MODEL_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5870] (FirePro M7820)
+ pci:v00001002d000068A1*
+  ID_MODEL_FROM_DATABASE=Broadway PRO [Mobility Radeon HD 5850]
+ pci:v00001002d000068A1sv0000106Bsd000000CC*
+- ID_MODEL_FROM_DATABASE=iMac MC511 Mobility Radeon HD 5850 MXM Module
++ ID_MODEL_FROM_DATABASE=Broadway PRO [Mobility Radeon HD 5850] (iMac MC511 Mobility Radeon HD 5850 MXM Module)
+ pci:v00001002d000068A8*
+  ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M]
+ pci:v00001002d000068A8sv00001025sd00000442*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000451*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd0000050A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd0000050B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd0000050C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd0000050E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd0000050F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000513*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000514*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000515*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000516*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000525*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd00000526*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001025sd0000056D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv00001028sd0000048F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6870M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6870M)
+ pci:v00001002d000068A8sv00001028sd00000490*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6870M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6870M)
+ pci:v00001002d000068A8sv00001028sd000004B9*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6870M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6870M)
+ pci:v00001002d000068A8sv00001028sd000004BA*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6870M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6870M)
+ pci:v00001002d000068A8sv0000103Csd0000159B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A8sv0000144Dsd0000C0AD*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6850M
++ ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] (Radeon HD 6850M)
+ pci:v00001002d000068A9*
+  ID_MODEL_FROM_DATABASE=Juniper XT [FirePro V5800]
+@@ -6612,7 +6612,7 @@ pci:v00001002d000068B8*
+  ID_MODEL_FROM_DATABASE=Juniper XT [Radeon HD 5770]
+ pci:v00001002d000068B8sv0000106Bsd000000CF*
+- ID_MODEL_FROM_DATABASE=MacPro5,1 [Mac Pro 2.8GHz DDR3]
++ ID_MODEL_FROM_DATABASE=Juniper XT [Radeon HD 5770] (MacPro5,1 [Mac Pro 2.8GHz DDR3])
+ pci:v00001002d000068B9*
+  ID_MODEL_FROM_DATABASE=Juniper LE [Radeon HD 5670 640SP Edition]
+@@ -6624,466 +6624,466 @@ pci:v00001002d000068BE*
+  ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 5750]
+ pci:v00001002d000068BEsv0000148Csd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750
++ ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 5750] (Radeon HD 6750)
+ pci:v00001002d000068BF*
+  ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 6750]
+ pci:v00001002d000068BFsv0000174Bsd00006750*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6750
++ ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 6750] (Radeon HD 6750)
+ pci:v00001002d000068C0*
+  ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M]
+ pci:v00001002d000068C0sv00001019sd00002383*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv00001028sd000002A2*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv00001028sd000002FE*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv00001028sd00000419*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv0000103Csd0000147D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv0000103Csd00001521*
+- ID_MODEL_FROM_DATABASE=Madison XT [FirePro M5800]
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Madison XT [FirePro M5800])
+ pci:v00001002d000068C0sv0000103Csd00001593*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 6570)
+ pci:v00001002d000068C0sv0000103Csd00001596*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 6570)
+ pci:v00001002d000068C0sv0000103Csd00001599*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 6570)
+ pci:v00001002d000068C0sv00001043sd00001C22*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv000017AAsd00003927*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv000017AAsd00003952*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Mobility Radeon HD 5730)
+ pci:v00001002d000068C0sv000017AAsd00003978*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6570M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] (Radeon HD 6570M)
+ pci:v00001002d000068C1*
+  ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M]
+ pci:v00001002d000068C1sv00001025sd00000205*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000293*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000294*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000296*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000308*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000030A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000311*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000312*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000031C*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000031D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000033D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000033E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000033F*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000346*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Aspire 7740G)
+ pci:v00001002d000068C1sv00001025sd00000348*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000356*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000357*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000358*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000359*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000035A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000035B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000035C*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000035D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000035E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000360*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000362*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000364*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000365*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000366*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000367*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000368*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000036C*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000036D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000036E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000036F*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000372*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000373*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000377*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000378*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000379*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000037A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000037B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000037E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000037F*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000382*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000383*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000384*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000385*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000386*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000387*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000388*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000038B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000038C*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000039A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000411*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000412*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000418*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000419*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000420*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000421*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000425*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000042A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000042E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000042F*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000432*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000433*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000442*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000044C*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd0000044E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000451*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000454*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000455*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000475*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000476*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000487*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000489*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000498*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001025sd00000517*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000051A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000051B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000051C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000051D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd00000525*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd00000526*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000052B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000052C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000053C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000053D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000053E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd0000053F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001025sd00000607*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C1sv00001028sd0000041B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001028sd00000447*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001028sd00000448*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001028sd00000456*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001028sd00000457*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd00001436*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd00001437*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd00001440*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd00001448*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd00001449*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd0000144A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd0000144B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd0000147B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd0000149C*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd0000149E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000103Csd00001521*
+- ID_MODEL_FROM_DATABASE=Madison Pro [FirePro M5800]
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Madison Pro [FirePro M5800])
+ pci:v00001002d000068C1sv00001043sd00001BC2*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000104Dsd00009071*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000104Dsd00009077*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000104Dsd00009081*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD00*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD12*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD1A*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD30*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD31*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD50*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FD52*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6530M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6530M)
+ pci:v00001002d000068C1sv00001179sd0000FD63*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6530M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6530M)
+ pci:v00001002d000068C1sv00001179sd0000FD65*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6530M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6530M)
+ pci:v00001002d000068C1sv00001179sd0000FDD0*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv00001179sd0000FDD2*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6530M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6530M)
+ pci:v00001002d000068C1sv0000144Dsd0000C07E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv0000144Dsd0000C085*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv000014C0sd00000043*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv000014C0sd0000004D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv000017AAsd00003928*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv000017AAsd00003951*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Mobility Radeon HD 5650)
+ pci:v00001002d000068C1sv000017AAsd00003977*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550M
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6530M/6550M] (Radeon HD 6550M)
+ pci:v00001002d000068C7*
+  ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A]
+ pci:v00001002d000068C7sv00001462sd00002241*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] (Mobility Radeon HD 5570)
+ pci:v00001002d000068C7sv00001462sd00002243*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] (Mobility Radeon HD 5570)
+ pci:v00001002d000068C7sv00001462sd00002244*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] (Mobility Radeon HD 5570)
+ pci:v00001002d000068C7sv00001462sd00002245*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550A
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] (Radeon HD 6550A)
+ pci:v00001002d000068C7sv00001462sd00002246*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6550A
++ ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] (Radeon HD 6550A)
+ pci:v00001002d000068C8*
+  ID_MODEL_FROM_DATABASE=Redwood XT GL [FirePro V4800]
+@@ -7095,115 +7095,115 @@ pci:v00001002d000068D8*
+  ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730]
+ pci:v00001002d000068D8sv00001028sd000068E0*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5670
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5670)
+ pci:v00001002d000068D8sv0000174Bsd00005690*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5690
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5690)
+ pci:v00001002d000068D8sv0000174Bsd00005730*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5730)
+ pci:v00001002d000068D8sv0000174Bsd0000E151*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5670
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5670)
+ pci:v00001002d000068D8sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5730)
+ pci:v00001002d000068D8sv000017AFsd00003010*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5730
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5730)
+ pci:v00001002d000068D8sv000017AFsd00003011*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5690
++ ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670/5690/5730] (Radeon HD 5690)
+ pci:v00001002d000068D9*
+  ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570]
+ pci:v00001002d000068D9sv0000103Csd00006870*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv0000103Csd00006872*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv00001043sd000003CE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5550
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5550)
+ pci:v00001002d000068D9sv00001462sd00002151*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv00001462sd00002240*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv0000148Csd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6510)
+ pci:v00001002d000068D9sv0000148Csd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6610
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6610)
+ pci:v00001002d000068D9sv00001545sd00005550*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5550
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5550)
+ pci:v00001002d000068D9sv00001545sd00007570*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 7570)
+ pci:v00001002d000068D9sv00001642sd00003985*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv00001642sd00003996*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv0000174Bsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6510)
+ pci:v00001002d000068D9sv0000174Bsd00006510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6510)
+ pci:v00001002d000068D9sv0000174Bsd00006610*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6610
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6610)
+ pci:v00001002d000068D9sv0000174Bsd0000E142*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5570)
+ pci:v00001002d000068D9sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6510)
+ pci:v00001002d000068D9sv000017AFsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6510
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 6510)
+ pci:v00001002d000068D9sv000017AFsd00003010*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5630
++ ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5550/5570/5630/6510/6610/7570] (Radeon HD 5630)
+ pci:v00001002d000068DA*
+  ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570]
+ pci:v00001002d000068DAsv0000148Csd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6390
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 6390)
+ pci:v00001002d000068DAsv0000148Csd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 6490)
+ pci:v00001002d000068DAsv00001545sd00007570*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7570
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 7570)
+ pci:v00001002d000068DAsv0000174Bsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6390
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 6390)
+ pci:v00001002d000068DAsv0000174Bsd00005570*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5570
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 5570)
+ pci:v00001002d000068DAsv0000174Bsd00005630*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5630
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 5630)
+ pci:v00001002d000068DAsv0000174Bsd00006490*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6490
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 6490)
+ pci:v00001002d000068DAsv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5630
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 5630)
+ pci:v00001002d000068DAsv000017AFsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6390
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 6390)
+ pci:v00001002d000068DAsv000017AFsd00003010*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5630
++ ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550/5570/5630/6390/6490/7570] (Radeon HD 5630)
+ pci:v00001002d000068DE*
+  ID_MODEL_FROM_DATABASE=Redwood
+@@ -7212,349 +7212,349 @@ pci:v00001002d000068E0*
+  ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470]
+ pci:v00001002d000068E0sv00001028sd00000404*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv00001028sd00000414*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv00001028sd00000434*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd00001433*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd00001434*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd00001469*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd0000146B*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd00001486*
+- ID_MODEL_FROM_DATABASE=TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450)
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450))
+ pci:v00001002d000068E0sv0000103Csd00001622*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd00001623*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000103Csd0000EEEE*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv0000104Dsd00009076*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Mobility Radeon HD 5450)
+ pci:v00001002d000068E0sv00001682sd0000304E*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E0sv00001682sd00006000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E0sv000017AAsd00009E52*
+- ID_MODEL_FROM_DATABASE=FirePro M3800
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (FirePro M3800)
+ pci:v00001002d000068E0sv000017AAsd00009E53*
+- ID_MODEL_FROM_DATABASE=FirePro M3800
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] (FirePro M3800)
+ pci:v00001002d000068E1*
+  ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430]
+ pci:v00001002d000068E1sv00001043sd0000041F*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 7350])
+ pci:v00001002d000068E1sv00001043sd00003000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv0000148Csd00003000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv0000148Csd00003001*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6230]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6230])
+ pci:v00001002d000068E1sv0000148Csd00003002*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6250]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6250])
+ pci:v00001002d000068E1sv0000148Csd00003003*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6350])
+ pci:v00001002d000068E1sv0000148Csd00007350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 7350])
+ pci:v00001002d000068E1sv0000148Csd00008350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 8350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 8350])
+ pci:v00001002d000068E1sv00001545sd00005450*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv00001545sd00007350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 7350])
+ pci:v00001002d000068E1sv00001682sd00003000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv00001682sd00006000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv00001682sd00007350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 7350])
+ pci:v00001002d000068E1sv0000174Bsd00003000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv0000174Bsd00005470*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5470]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5470])
+ pci:v00001002d000068E1sv0000174Bsd00006000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv0000174Bsd00006230*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6230]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6230])
+ pci:v00001002d000068E1sv0000174Bsd00006350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6350])
+ pci:v00001002d000068E1sv0000174Bsd00007350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 7350])
+ pci:v00001002d000068E1sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv000017AFsd00003000*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 5450])
+ pci:v00001002d000068E1sv000017AFsd00003001*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6230]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6230])
+ pci:v00001002d000068E1sv000017AFsd00003014*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 6350])
+ pci:v00001002d000068E1sv000017AFsd00003015*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 7350])
+ pci:v00001002d000068E1sv000017AFsd00008350*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 8350 OEM]
++ ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] (Caicos [Radeon HD 8350 OEM])
+ pci:v00001002d000068E4*
+  ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M]
+ pci:v00001002d000068E4sv00001019sd00002386*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6350M)
+ pci:v00001002d000068E4sv00001019sd00002387*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6350M)
+ pci:v00001002d000068E4sv00001019sd0000238D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001019sd0000238E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001025sd00000382*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001025sd00000489*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001025sd0000048A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001025sd0000048B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001025sd0000048C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001028sd000004C1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001028sd000004CA*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001028sd000004CC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001028sd000004CD*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001028sd000004D7*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001411*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001421*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001426*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001428*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000142A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000142B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000143A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000143C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001445*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000162C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000162D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000162E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000162F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001639*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000163A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000163B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000163C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000163D*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000163E*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000163F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001641*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00001643*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00003578*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd0000357A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00003673*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000103Csd00003675*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001043sd00001C92*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001043sd000084A1*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001043sd000084AD*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000104Dsd00009081*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001545sd00007350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Cedar [Radeon HD 7350])
+ pci:v00001002d000068E4sv00001558sd00004510*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv00001558sd00005505*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv0000174Bsd00005450*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Cedar [Radeon HD 5450])
+ pci:v00001002d000068E4sv000017AAsd000021DD*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv000017AAsd000021E9*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv000017AAsd00003971*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M)
+ pci:v00001002d000068E4sv000017AAsd00003972*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 7370M)
+ pci:v00001002d000068E4sv000017AAsd0000397A*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M/7370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M/7370M)
+ pci:v00001002d000068E4sv000017AAsd0000397B*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6370M/7370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 6370M/7370M)
+ pci:v00001002d000068E4sv000017AAsd0000397F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7370M
++ ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] (Radeon HD 7370M)
+ pci:v00001002d000068E5*
+  ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M]
+ pci:v00001002d000068E5sv00001179sd0000FD3C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FD50*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FD52*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FD63*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FD65*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FD73*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FD75*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FDD0*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FDD2*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FDEA*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv00001179sd0000FDF8*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6330M
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Radeon HD 6330M)
+ pci:v00001002d000068E5sv0000148Csd00005450*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5450]
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Cedar [Radeon HD 5450])
+ pci:v00001002d000068E5sv0000148Csd00006350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 6350]
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Cedar [Radeon HD 6350])
+ pci:v00001002d000068E5sv0000148Csd00007350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Cedar [Radeon HD 7350])
+ pci:v00001002d000068E5sv0000148Csd00008350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 8350]
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Cedar [Radeon HD 8350])
+ pci:v00001002d000068E5sv00001545sd00007350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350]
++ ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] (Cedar [Radeon HD 7350])
+ pci:v00001002d000068E8*
+  ID_MODEL_FROM_DATABASE=Cedar
+@@ -7575,259 +7575,259 @@ pci:v00001002d000068F9*
+  ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series]
+ pci:v00001002d000068F9sv00001019sd00000001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001019sd00000002*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001019sd00000019*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv00001025sd00000518*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001025sd00000519*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001028sd0000010E*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (XPS 8300)
+ pci:v00001002d000068F9sv00001028sd00002126*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv0000103Csd00002126*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv0000103Csd00002AAC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv0000103Csd00002AAE*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv0000103Csd00003580*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001043sd00000386*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001043sd000003C2*
+- ID_MODEL_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (EAH5450 SILENT/DI/512MD2 (LP))
+ pci:v00001002d000068F9sv00001462sd00002130*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001462sd00002131*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001462sd00002133*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv00001462sd00002180*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001462sd00002181*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001462sd00002182*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv00001462sd00002183*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv00001462sd00002230*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001462sd00002231*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001462sd00002495*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv0000148Csd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5530/6250
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5530/6250)
+ pci:v00001002d000068F9sv0000148Csd00003002*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6290
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6290)
+ pci:v00001002d000068F9sv0000148Csd00003003*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6230
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6230)
+ pci:v00001002d000068F9sv0000148Csd00003004*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv0000148Csd00007350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 7350)
+ pci:v00001002d000068F9sv0000148Csd00008350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 8350)
+ pci:v00001002d000068F9sv00001545sd00007350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 7350)
+ pci:v00001002d000068F9sv00001642sd00003983*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001642sd00003984*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv00001642sd00003987*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv00001642sd00003997*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001642sd00003A05*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001642sd00003B31*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350A
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350A)
+ pci:v00001002d000068F9sv00001682sd00003270*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 7350)
+ pci:v00001002d000068F9sv0000174Bsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6230
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6230)
+ pci:v00001002d000068F9sv0000174Bsd00003987*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv0000174Bsd00005470*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5470
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5470)
+ pci:v00001002d000068F9sv0000174Bsd00005490*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5490
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5490)
+ pci:v00001002d000068F9sv0000174Bsd00005530*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5530
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5530)
+ pci:v00001002d000068F9sv0000174Bsd00006230*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6230
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6230)
+ pci:v00001002d000068F9sv0000174Bsd00006250*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6250
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6250)
+ pci:v00001002d000068F9sv0000174Bsd00006290*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6290
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6290)
+ pci:v00001002d000068F9sv0000174Bsd00006350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068F9sv0000174Bsd00007350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 7350)
+ pci:v00001002d000068F9sv0000174Bsd00008350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 8350)
+ pci:v00001002d000068F9sv0000174Bsd0000E127*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv0000174Bsd0000E145*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv0000174Bsd0000E153*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5470
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5470)
+ pci:v00001002d000068F9sv00001787sd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5530
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5530)
+ pci:v00001002d000068F9sv00001787sd00003002*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5490
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5490)
+ pci:v00001002d000068F9sv000017AAsd00003602*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv000017AAsd00003603*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv000017AAsd0000360F*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv000017AAsd00003619*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5450
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5450)
+ pci:v00001002d000068F9sv000017AFsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6250
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6250)
+ pci:v00001002d000068F9sv000017AFsd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6230
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6230)
+ pci:v00001002d000068F9sv000017AFsd00003002*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6290
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6290)
+ pci:v00001002d000068F9sv000017AFsd00003011*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5470
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5470)
+ pci:v00001002d000068F9sv000017AFsd00003012*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5490
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5490)
+ pci:v00001002d000068F9sv000017AFsd00003013*
+- ID_MODEL_FROM_DATABASE=Radeon HD 5470
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 5470)
+ pci:v00001002d000068F9sv000017AFsd00003014*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068FA*
+  ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350]
+ pci:v00001002d000068FAsv00001019sd00000019*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001019sd00000021*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001019sd00000022*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001019sd00000026*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 8350)
+ pci:v00001002d000068FAsv0000103Csd00002ADF*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350A
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350A)
+ pci:v00001002d000068FAsv0000103Csd00002AE8*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350A
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350A)
+ pci:v00001002d000068FAsv00001043sd00008350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 8350)
+ pci:v00001002d000068FAsv00001462sd00002128*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd00002184*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd00002186*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd00002495*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd0000B490*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001642sd00003985*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd00007350*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd00008153*
+- ID_MODEL_FROM_DATABASE=Radeon HD 8350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 8350)
+ pci:v00001002d000068FAsv0000174Bsd0000E127*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd0000E153*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd0000E180*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FAsv000017AFsd00003015*
+- ID_MODEL_FROM_DATABASE=Radeon HD 7350
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
+ pci:v00001002d000068FE*
+  ID_MODEL_FROM_DATABASE=Cedar LE
+@@ -7863,16 +7863,16 @@ pci:v00001002d00007109*
+  ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 XL]
+ pci:v00001002d00007109sv00001002sd00000322*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder X1800XL
++ ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 XL] (All-in-Wonder X1800XL)
+ pci:v00001002d00007109sv00001002sd00000D02*
+- ID_MODEL_FROM_DATABASE=Radeon X1800 CrossFire Edition
++ ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 XL] (Radeon X1800 CrossFire Edition)
+ pci:v00001002d0000710A*
+  ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 GTO]
+ pci:v00001002d0000710Asv00001002sd00000B12*
+- ID_MODEL_FROM_DATABASE=Radeon X1800 GTO²
++ ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 GTO] (Radeon X1800 GTO²)
+ pci:v00001002d0000710B*
+  ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 GTO]
+@@ -7887,10 +7887,10 @@ pci:v00001002d00007129*
+  ID_MODEL_FROM_DATABASE=R520 [Radeon X1800] (Secondary)
+ pci:v00001002d00007129sv00001002sd00000323*
+- ID_MODEL_FROM_DATABASE=All-In-Wonder X1800 XL (Secondary)
++ ID_MODEL_FROM_DATABASE=R520 [Radeon X1800] (Secondary) (All-In-Wonder X1800 XL (Secondary))
+ pci:v00001002d00007129sv00001002sd00000D03*
+- ID_MODEL_FROM_DATABASE=Radeon X1800 CrossFire Edition (Secondary)
++ ID_MODEL_FROM_DATABASE=R520 [Radeon X1800] (Secondary) (Radeon X1800 CrossFire Edition (Secondary))
+ pci:v00001002d00007140*
+  ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550/X1600 Series]
+@@ -7899,10 +7899,10 @@ pci:v00001002d00007142*
+  ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series]
+ pci:v00001002d00007142sv00001002sd00000322*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition
++ ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] (All-in-Wonder 2006 PCI-E Edition)
+ pci:v00001002d00007142sv00001043sd00000142*
+- ID_MODEL_FROM_DATABASE=EAX1300PRO/TD/256M
++ ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] (EAX1300PRO/TD/256M)
+ pci:v00001002d00007143*
+  ID_MODEL_FROM_DATABASE=RV505 [Radeon X1300/X1550 Series]
+@@ -7911,16 +7911,16 @@ pci:v00001002d00007145*
+  ID_MODEL_FROM_DATABASE=RV515/M54 [Mobility Radeon X1400]
+ pci:v00001002d00007145sv000017AAsd00002006*
+- ID_MODEL_FROM_DATABASE=Thinkpad T60 model 2007
++ ID_MODEL_FROM_DATABASE=RV515/M54 [Mobility Radeon X1400] (Thinkpad T60 model 2007)
+ pci:v00001002d00007146*
+  ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550]
+ pci:v00001002d00007146sv00001002sd00000322*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition
++ ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550] (All-in-Wonder 2006 PCI-E Edition)
+ pci:v00001002d00007146sv00001545sd00001996*
+- ID_MODEL_FROM_DATABASE=Radeon X1300 512MB PCI-e
++ ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550] (Radeon X1300 512MB PCI-e)
+ pci:v00001002d00007147*
+  ID_MODEL_FROM_DATABASE=RV505 [Radeon X1550 64-bit]
+@@ -7944,7 +7944,7 @@ pci:v00001002d00007162*
+  ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] (Secondary)
+ pci:v00001002d00007162sv00001002sd00000323*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary)
++ ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] (Secondary) (All-in-Wonder 2006 PCI-E Edition (Secondary))
+ pci:v00001002d00007163*
+  ID_MODEL_FROM_DATABASE=RV505 [Radeon X1550 Series] (Secondary)
+@@ -7953,10 +7953,10 @@ pci:v00001002d00007166*
+  ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550 Series] (Secondary)
+ pci:v00001002d00007166sv00001002sd00000323*
+- ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary)
++ ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550 Series] (Secondary) (All-in-Wonder 2006 PCI-E Edition (Secondary))
+ pci:v00001002d00007166sv00001545sd00001997*
+- ID_MODEL_FROM_DATABASE=Radeon X1300 512MB PCI-e (Secondary)
++ ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550 Series] (Secondary) (Radeon X1300 512MB PCI-e (Secondary))
+ pci:v00001002d00007167*
+  ID_MODEL_FROM_DATABASE=RV515 [Radeon X1550 64-bit] (Secondary)
+@@ -7983,7 +7983,7 @@ pci:v00001002d00007188*
+  ID_MODEL_FROM_DATABASE=RV516/M64-S [Mobility Radeon X2300]
+ pci:v00001002d00007188sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=6910p
++ ID_MODEL_FROM_DATABASE=RV516/M64-S [Mobility Radeon X2300] (6910p)
+ pci:v00001002d0000718A*
+  ID_MODEL_FROM_DATABASE=RV516/M64 [Mobility Radeon X2300]
+@@ -8028,16 +8028,16 @@ pci:v00001002d000071C0*
+  ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO]
+ pci:v00001002d000071C0sv00001002sd0000E160*
+- ID_MODEL_FROM_DATABASE=Radeon X1650 GTO
++ ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO] (Radeon X1650 GTO)
+ pci:v00001002d000071C0sv0000174Bsd0000E160*
+- ID_MODEL_FROM_DATABASE=Radeon X1650 GTO
++ ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO] (Radeon X1650 GTO)
+ pci:v00001002d000071C1*
+  ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO]
+ pci:v00001002d000071C1sv0000174Bsd00000880*
+- ID_MODEL_FROM_DATABASE=Radeon X1700 FSC
++ ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Radeon X1700 FSC)
+ pci:v00001002d000071C2*
+  ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 PRO]
+@@ -8046,22 +8046,22 @@ pci:v00001002d000071C4*
+  ID_MODEL_FROM_DATABASE=RV530/M56 GL [Mobility FireGL V5200]
+ pci:v00001002d000071C4sv000017AAsd00002007*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60p
++ ID_MODEL_FROM_DATABASE=RV530/M56 GL [Mobility FireGL V5200] (ThinkPad T60p)
+ pci:v00001002d000071C5*
+  ID_MODEL_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600]
+ pci:v00001002d000071C5sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] (Compaq nx9420 Notebook)
+ pci:v00001002d000071C5sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq NW8440
++ ID_MODEL_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] (Compaq NW8440)
+ pci:v00001002d000071C5sv00001043sd000010B2*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] (A6J-Q008)
+ pci:v00001002d000071C5sv0000106Bsd00000080*
+- ID_MODEL_FROM_DATABASE=MacBook Pro
++ ID_MODEL_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] (MacBook Pro)
+ pci:v00001002d000071C6*
+  ID_MODEL_FROM_DATABASE=RV530LE [Radeon X1600/X1650 PRO]
+@@ -8070,7 +8070,7 @@ pci:v00001002d000071C7*
+  ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO]
+ pci:v00001002d000071C7sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=PowerColor X1650 PRO AGP
++ ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (PowerColor X1650 PRO AGP)
+ pci:v00001002d000071CE*
+  ID_MODEL_FROM_DATABASE=RV530 [Radeon X1300 XT/X1600 PRO]
+@@ -8094,13 +8094,13 @@ pci:v00001002d000071E0*
+  ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600] (Secondary)
+ pci:v00001002d000071E0sv0000174Bsd0000E161*
+- ID_MODEL_FROM_DATABASE=Radeon X1600 GTO (Secondary)
++ ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) (Radeon X1600 GTO (Secondary))
+ pci:v00001002d000071E1*
+  ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary)
+ pci:v00001002d000071E1sv0000174Bsd00000881*
+- ID_MODEL_FROM_DATABASE=Radeon X1700 FSC (Secondary)
++ ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) (Radeon X1700 FSC (Secondary))
+ pci:v00001002d000071E2*
+  ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600] (Secondary)
+@@ -8112,7 +8112,7 @@ pci:v00001002d000071E7*
+  ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary)
+ pci:v00001002d000071E7sv00001787sd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon X1650 PRO AGP
++ ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) (Radeon X1650 PRO AGP)
+ pci:v00001002d000071F2*
+  ID_MODEL_FROM_DATABASE=RV530 GL [FireGL V3400] (Secondary)
+@@ -8127,7 +8127,7 @@ pci:v00001002d00007240*
+  ID_MODEL_FROM_DATABASE=R580+ [Radeon X1950 XTX]
+ pci:v00001002d00007240sv00001002sd00000D02*
+- ID_MODEL_FROM_DATABASE=Radeon X1950 CrossFire Edition
++ ID_MODEL_FROM_DATABASE=R580+ [Radeon X1950 XTX] (Radeon X1950 CrossFire Edition)
+ pci:v00001002d00007244*
+  ID_MODEL_FROM_DATABASE=R580+ [Radeon X1950 XT]
+@@ -8139,25 +8139,25 @@ pci:v00001002d00007249*
+  ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT]
+ pci:v00001002d00007249sv00001002sd00000412*
+- ID_MODEL_FROM_DATABASE=All-In-Wonder X1900
++ ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] (All-In-Wonder X1900)
+ pci:v00001002d00007249sv00001002sd00000B12*
+- ID_MODEL_FROM_DATABASE=Radeon X1900 XT/XTX
++ ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] (Radeon X1900 XT/XTX)
+ pci:v00001002d00007249sv00001002sd00000D02*
+- ID_MODEL_FROM_DATABASE=Radeon X1900 CrossFire Edition
++ ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] (Radeon X1900 CrossFire Edition)
+ pci:v00001002d00007249sv00001043sd00000160*
+- ID_MODEL_FROM_DATABASE=Radeon X1900 XTX 512 MB GDDR3
++ ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] (Radeon X1900 XTX 512 MB GDDR3)
+ pci:v00001002d0000724B*
+  ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 GT]
+ pci:v00001002d0000724Bsv00001002sd00000B12*
+- ID_MODEL_FROM_DATABASE=Radeon X1900 (Primary)
++ ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 GT] (Radeon X1900 (Primary))
+ pci:v00001002d0000724Bsv00001002sd00000B13*
+- ID_MODEL_FROM_DATABASE=Radeon X1900 (Secondary)
++ ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 GT] (Radeon X1900 (Secondary))
+ pci:v00001002d0000724E*
+  ID_MODEL_FROM_DATABASE=R580 GL [FireGL V7350]
+@@ -8181,7 +8181,7 @@ pci:v00001002d00007291*
+  ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 XT]
+ pci:v00001002d00007291sv00001462sd00000810*
+- ID_MODEL_FROM_DATABASE=Radeon X1700 SE
++ ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 XT] (Radeon X1700 SE)
+ pci:v00001002d00007293*
+  ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 GT]
+@@ -8214,10 +8214,10 @@ pci:v00001002d00007910*
+  ID_MODEL_FROM_DATABASE=RS690 Host Bridge
+ pci:v00001002d00007910sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=RS690 Host Bridge (Satellite P305D-S8995E)
+ pci:v00001002d00007910sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=RS690 Host Bridge (KI690-AM2 Motherboard)
+ pci:v00001002d00007911*
+  ID_MODEL_FROM_DATABASE=RS690 Host Bridge
+@@ -8238,31 +8238,31 @@ pci:v00001002d00007917*
+  ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 3)
+ pci:v00001002d00007917sv00001002sd00007910*
+- ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge
++ ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 3) (RS690 PCI to PCI Bridge)
+ pci:v00001002d00007919*
+  ID_MODEL_FROM_DATABASE=RS690 HDMI Audio [Radeon Xpress 1200 Series]
+ pci:v00001002d00007919sv00001179sd00007919*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=RS690 HDMI Audio [Radeon Xpress 1200 Series] (Satellite P305D-S8995E)
+ pci:v00001002d00007919sv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=RS690 HDMI Audio [Radeon Xpress 1200 Series] (KI690-AM2 Motherboard)
+ pci:v00001002d0000791E*
+  ID_MODEL_FROM_DATABASE=RS690 [Radeon X1200]
+ pci:v00001002d0000791Esv00001462sd00007327*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=RS690 [Radeon X1200] (K9AG Neo2)
+ pci:v00001002d0000791Esv000017F2sd00005000*
+- ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard
++ ID_MODEL_FROM_DATABASE=RS690 [Radeon X1200] (KI690-AM2 Motherboard)
+ pci:v00001002d0000791F*
+  ID_MODEL_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270]
+ pci:v00001002d0000791Fsv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] (Satellite P305D-S8995E)
+ pci:v00001002d00007930*
+  ID_MODEL_FROM_DATABASE=RS600 Host Bridge
+@@ -8301,13 +8301,13 @@ pci:v00001002d00009400*
+  ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 PRO/XT]
+ pci:v00001002d00009400sv00001002sd00002552*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2900 XT
++ ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 PRO/XT] (Radeon HD 2900 XT)
+ pci:v00001002d00009400sv00001002sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2900 PRO
++ ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 PRO/XT] (Radeon HD 2900 PRO)
+ pci:v00001002d00009400sv00001002sd00003142*
+- ID_MODEL_FROM_DATABASE=HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe
++ ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 PRO/XT] (HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe)
+ pci:v00001002d00009401*
+  ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 XT]
+@@ -8337,10 +8337,10 @@ pci:v00001002d00009442*
+  ID_MODEL_FROM_DATABASE=RV770 [Radeon HD 4850]
+ pci:v00001002d00009442sv00001002sd00000502*
+- ID_MODEL_FROM_DATABASE=MSI Radeon HD 4850 512MB GDDR3
++ ID_MODEL_FROM_DATABASE=RV770 [Radeon HD 4850] (MSI Radeon HD 4850 512MB GDDR3)
+ pci:v00001002d00009442sv0000174Bsd0000E810*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4850 512MB GDDR3
++ ID_MODEL_FROM_DATABASE=RV770 [Radeon HD 4850] (Radeon HD 4850 512MB GDDR3)
+ pci:v00001002d00009443*
+  ID_MODEL_FROM_DATABASE=R700 [Radeon HD 4850 X2]
+@@ -8364,7 +8364,7 @@ pci:v00001002d0000944E*
+  ID_MODEL_FROM_DATABASE=RV770 CE [Radeon HD 4710]
+ pci:v00001002d0000944Esv0000174Bsd00003261*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4810
++ ID_MODEL_FROM_DATABASE=RV770 CE [Radeon HD 4710] (Radeon HD 4810)
+ pci:v00001002d00009450*
+  ID_MODEL_FROM_DATABASE=RV770 GL [FireStream 9270]
+@@ -8391,7 +8391,7 @@ pci:v00001002d00009480*
+  ID_MODEL_FROM_DATABASE=RV730/M96 [Mobility Radeon HD 4650/5165]
+ pci:v00001002d00009480sv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4650 [dv6-1190en]
++ ID_MODEL_FROM_DATABASE=RV730/M96 [Mobility Radeon HD 4650/5165] (Mobility Radeon HD 4650 [dv6-1190en])
+ pci:v00001002d00009488*
+  ID_MODEL_FROM_DATABASE=RV730/M96-XT [Mobility Radeon HD 4670]
+@@ -8403,7 +8403,7 @@ pci:v00001002d00009490*
+  ID_MODEL_FROM_DATABASE=RV730 XT [Radeon HD 4670]
+ pci:v00001002d00009490sv0000174Bsd0000E880*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO
++ ID_MODEL_FROM_DATABASE=RV730 XT [Radeon HD 4670] (Radeon HD 4670 512MB GDDR3 Dual DVI-I/TVO)
+ pci:v00001002d00009491*
+  ID_MODEL_FROM_DATABASE=RV730/M96-CSP [Radeon E4690]
+@@ -8412,19 +8412,19 @@ pci:v00001002d00009495*
+  ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series]
+ pci:v00001002d00009495sv00001002sd00000028*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4650/4670 AGP
++ ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] (Radeon HD 4650/4670 AGP)
+ pci:v00001002d00009495sv00001092sd00000028*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4670 AGP 512MB DDR2
++ ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] (Radeon HD 4670 AGP 512MB DDR2)
+ pci:v00001002d00009495sv00001458sd00000028*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4650 AGP
++ ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] (Radeon HD 4650 AGP)
+ pci:v00001002d00009495sv00001682sd00000028*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4650 AGP
++ ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] (Radeon HD 4650 AGP)
+ pci:v00001002d00009495sv0000174Bsd00000028*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4650 AGP DDR2
++ ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] (Radeon HD 4650 AGP DDR2)
+ pci:v00001002d00009498*
+  ID_MODEL_FROM_DATABASE=RV730 PRO [Radeon HD 4650]
+@@ -8457,22 +8457,22 @@ pci:v00001002d000094C1*
+  ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT]
+ pci:v00001002d000094C1sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT] (Optiplex 755)
+ pci:v00001002d000094C1sv00001028sd00000D02*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT] (Optiplex 755)
+ pci:v00001002d000094C3*
+  ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO]
+ pci:v00001002d000094C3sv00001028sd00000302*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2400 Pro
++ ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] (Radeon HD 2400 Pro)
+ pci:v00001002d000094C3sv0000174Bsd0000E400*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2400 PRO
++ ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] (Radeon HD 2400 PRO)
+ pci:v00001002d000094C3sv000018BCsd00003550*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2400 PRO
++ ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] (Radeon HD 2400 PRO)
+ pci:v00001002d000094C4*
+  ID_MODEL_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO AGP]
+@@ -8490,7 +8490,7 @@ pci:v00001002d000094C9*
+  ID_MODEL_FROM_DATABASE=RV610/M72-S [Mobility Radeon HD 2400]
+ pci:v00001002d000094C9sv00001002sd000094C9*
+- ID_MODEL_FROM_DATABASE=Radeon HD2400
++ ID_MODEL_FROM_DATABASE=RV610/M72-S [Mobility Radeon HD 2400] (Radeon HD2400)
+ pci:v00001002d000094CB*
+  ID_MODEL_FROM_DATABASE=RV610 [Radeon E2400]
+@@ -8505,7 +8505,7 @@ pci:v00001002d00009501*
+  ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3870]
+ pci:v00001002d00009501sv0000174Bsd0000E620*
+- ID_MODEL_FROM_DATABASE=Radeon HD 3870
++ ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3870] (Radeon HD 3870)
+ pci:v00001002d00009504*
+  ID_MODEL_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850]
+@@ -8514,13 +8514,13 @@ pci:v00001002d00009505*
+  ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3690/3850]
+ pci:v00001002d00009505sv0000148Csd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 3850
++ ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3690/3850] (Radeon HD 3850)
+ pci:v00001002d00009505sv0000174Bsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 3690/3850
++ ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3690/3850] (Radeon HD 3690/3850)
+ pci:v00001002d00009505sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 3690
++ ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3690/3850] (Radeon HD 3690)
+ pci:v00001002d00009506*
+  ID_MODEL_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850 X2]
+@@ -8556,76 +8556,76 @@ pci:v00001002d0000954F*
+  ID_MODEL_FROM_DATABASE=RV710 [Radeon HD 4350/4550]
+ pci:v00001002d0000954Fsv00001462sd00001618*
+- ID_MODEL_FROM_DATABASE=R4350 MD512H (MS-V161)
++ ID_MODEL_FROM_DATABASE=RV710 [Radeon HD 4350/4550] (R4350 MD512H (MS-V161))
+ pci:v00001002d00009552*
+  ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550]
+ pci:v00001002d00009552sv00001028sd00001103*
+- ID_MODEL_FROM_DATABASE=M92 [Mobility Radeon HD 4330]
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (M92 [Mobility Radeon HD 4330])
+ pci:v00001002d00009552sv00001458sd000021AC*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4350
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (Radeon HD 4350)
+ pci:v00001002d00009552sv00001458sd000021ED*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4550
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (Radeon HD 4550)
+ pci:v00001002d00009552sv0000148Csd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4350 Go! Green 512MB GDDR3
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (Radeon HD 4350 Go! Green 512MB GDDR3)
+ pci:v00001002d00009552sv0000174Bsd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4350/4550 HyperMemory DDR2
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] (Radeon HD 4350/4550 HyperMemory DDR2)
+ pci:v00001002d00009553*
+  ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v]
+ pci:v00001002d00009553sv00001025sd0000015E*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001025sd0000017D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001025sd00000205*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001025sd00000206*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001025sd00000237*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001028sd000002BE*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001028sd000002E8*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ pci:v00001002d00009553sv0000103Csd00003624*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ pci:v00001002d00009553sv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ pci:v00001002d00009553sv0000103Csd00003636*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4530
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4530)
+ pci:v00001002d00009553sv00001043sd00001B32*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001043sd00001B42*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv0000104Dsd00009056*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Mobility Radeon HD 4570)
+ pci:v00001002d00009553sv00001179sd0000FF82*
+- ID_MODEL_FROM_DATABASE=Satellite L505-13T GPU (Mobility Radeon HD 5145)
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] (Satellite L505-13T GPU (Mobility Radeon HD 5145))
+ pci:v00001002d00009555*
+  ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550]
+ pci:v00001002d00009555sv0000103Csd00001411*
+- ID_MODEL_FROM_DATABASE=ProBook 4720s GPU (Mobility Radeon HD 4350)
++ ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550] (ProBook 4720s GPU (Mobility Radeon HD 4350))
+ pci:v00001002d00009557*
+  ID_MODEL_FROM_DATABASE=RV711 GL [FirePro RG220]
+@@ -8643,10 +8643,10 @@ pci:v00001002d00009583*
+  ID_MODEL_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT/2700]
+ pci:v00001002d00009583sv0000106Bsd00000083*
+- ID_MODEL_FROM_DATABASE=iMac 7,1
++ ID_MODEL_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT/2700] (iMac 7,1)
+ pci:v00001002d00009583sv00001734sd00001107*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 2700
++ ID_MODEL_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT/2700] (Mobility Radeon HD 2700)
+ pci:v00001002d00009586*
+  ID_MODEL_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT AGP]
+@@ -8658,13 +8658,13 @@ pci:v00001002d00009588*
+  ID_MODEL_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT]
+ pci:v00001002d00009588sv00001458sd0000216C*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H)
++ ID_MODEL_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT] (Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H))
+ pci:v00001002d00009589*
+  ID_MODEL_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO]
+ pci:v00001002d00009589sv00001787sd00003000*
+- ID_MODEL_FROM_DATABASE=Radeon HD 3610
++ ID_MODEL_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO] (Radeon HD 3610)
+ pci:v00001002d0000958A*
+  ID_MODEL_FROM_DATABASE=RV630 [Radeon HD 2600 X2]
+@@ -8682,7 +8682,7 @@ pci:v00001002d00009591*
+  ID_MODEL_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3650]
+ pci:v00001002d00009591sv00001002sd00009591*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3650
++ ID_MODEL_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3650] (Mobility Radeon HD 3650)
+ pci:v00001002d00009593*
+  ID_MODEL_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3670]
+@@ -8694,7 +8694,7 @@ pci:v00001002d00009596*
+  ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP]
+ pci:v00001002d00009596sv00001043sd00000028*
+- ID_MODEL_FROM_DATABASE=EAH3650 SILENT/HTDI/512M/A
++ ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP] (EAH3650 SILENT/HTDI/512M/A)
+ pci:v00001002d00009597*
+  ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP]
+@@ -8703,19 +8703,19 @@ pci:v00001002d00009598*
+  ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580]
+ pci:v00001002d00009598sv00001002sd00009598*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3600
++ ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580] (Mobility Radeon HD 3600)
+ pci:v00001002d00009598sv00001043sd000001D6*
+- ID_MODEL_FROM_DATABASE=EAH3650 Silent
++ ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580] (EAH3650 Silent)
+ pci:v00001002d00009598sv00001043sd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4570
++ ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580] (Radeon HD 4570)
+ pci:v00001002d00009598sv0000174Bsd00003001*
+- ID_MODEL_FROM_DATABASE=Radeon HD 3750
++ ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580] (Radeon HD 3750)
+ pci:v00001002d00009598sv0000174Bsd00004580*
+- ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 4580]
++ ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580] (RV635 PRO [Radeon HD 4580])
+ pci:v00001002d00009599*
+  ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP]
+@@ -8724,7 +8724,7 @@ pci:v00001002d000095C0*
+  ID_MODEL_FROM_DATABASE=RV620 PRO [Radeon HD 3470]
+ pci:v00001002d000095C0sv00001002sd000095C0*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3470
++ ID_MODEL_FROM_DATABASE=RV620 PRO [Radeon HD 3470] (Mobility Radeon HD 3470)
+ pci:v00001002d000095C2*
+  ID_MODEL_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3410/3430]
+@@ -8733,13 +8733,13 @@ pci:v00001002d000095C4*
+  ID_MODEL_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3450/3470]
+ pci:v00001002d000095C4sv00001002sd000095C4*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3400
++ ID_MODEL_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3450/3470] (Mobility Radeon HD 3400)
+ pci:v00001002d000095C5*
+  ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450]
+ pci:v00001002d000095C5sv00001028sd00000342*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450] (OptiPlex 980)
+ pci:v00001002d000095C6*
+  ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450 AGP]
+@@ -8760,7 +8760,7 @@ pci:v00001002d00009610*
+  ID_MODEL_FROM_DATABASE=RS780 [Radeon HD 3200]
+ pci:v00001002d00009610sv00001458sd0000D000*
+- ID_MODEL_FROM_DATABASE=GA-MA78GM-S2H Motherboard
++ ID_MODEL_FROM_DATABASE=RS780 [Radeon HD 3200] (GA-MA78GM-S2H Motherboard)
+ pci:v00001002d00009611*
+  ID_MODEL_FROM_DATABASE=RS780C [Radeon 3100]
+@@ -8823,22 +8823,22 @@ pci:v00001002d0000970F*
+  ID_MODEL_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series]
+ pci:v00001002d0000970Fsv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] (A785GM-M)
+ pci:v00001002d0000970Fsv00001043sd000083A2*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] (M4A785TD Motherboard)
+ pci:v00001002d0000970Fsv00001043sd0000843E*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] (M5A88-V EVO)
+ pci:v00001002d00009710*
+  ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4200]
+ pci:v00001002d00009710sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4200] (A785GM-M)
+ pci:v00001002d00009710sv00001043sd000083A2*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4200] (M4A785TD Motherboard)
+ pci:v00001002d00009712*
+  ID_MODEL_FROM_DATABASE=RS880M [Mobility Radeon HD 4225/4250]
+@@ -8853,13 +8853,13 @@ pci:v00001002d00009715*
+  ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4250]
+ pci:v00001002d00009715sv00001043sd0000843E*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4250] (M5A88-V EVO)
+ pci:v00001002d00009802*
+  ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6310]
+ pci:v00001002d00009802sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6310] (PURE Fusion Mini)
+ pci:v00001002d00009803*
+  ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6310]
+@@ -8991,16 +8991,16 @@ pci:v00001002d00009902*
+  ID_MODEL_FROM_DATABASE=Trinity HDMI Audio Controller
+ pci:v00001002d00009902sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=Trinity HDMI Audio Controller (ProBook 455 G1 Notebook)
+ pci:v00001002d00009903*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G]
+ pci:v00001002d00009903sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G] (ProBook 455 G1 Notebook)
+ pci:v00001002d00009903sv0000103Csd00001952*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G] (ProBook 455 G1 Notebook)
+ pci:v00001002d00009904*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7560D]
+@@ -9114,10 +9114,10 @@ pci:v00001002d0000AA10*
+  ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series]
+ pci:v00001002d0000AA10sv0000174Bsd0000AA10*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2400 PRO
++ ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] (Radeon HD 2400 PRO)
+ pci:v00001002d0000AA10sv000018BCsd0000AA10*
+- ID_MODEL_FROM_DATABASE=Radeon HD 2400 PRO
++ ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] (Radeon HD 2400 PRO)
+ pci:v00001002d0000AA18*
+  ID_MODEL_FROM_DATABASE=RV670/680 HDMI Audio [Radeon HD 3690/3800 Series]
+@@ -9132,13 +9132,13 @@ pci:v00001002d0000AA30*
+  ID_MODEL_FROM_DATABASE=RV770 HDMI Audio [Radeon HD 4850/4870]
+ pci:v00001002d0000AA30sv0000174Bsd0000AA30*
+- ID_MODEL_FROM_DATABASE=Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink
++ ID_MODEL_FROM_DATABASE=RV770 HDMI Audio [Radeon HD 4850/4870] (Radeon HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink)
+ pci:v00001002d0000AA38*
+  ID_MODEL_FROM_DATABASE=RV710/730 HDMI Audio [Radeon HD 4000 series]
+ pci:v00001002d0000AA38sv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=dv6-1190en
++ ID_MODEL_FROM_DATABASE=RV710/730 HDMI Audio [Radeon HD 4000 series] (dv6-1190en)
+ pci:v00001002d0000AA50*
+  ID_MODEL_FROM_DATABASE=Cypress HDMI Audio [Radeon HD 5800 Series]
+@@ -9150,16 +9150,16 @@ pci:v00001002d0000AA60*
+  ID_MODEL_FROM_DATABASE=Redwood HDMI Audio [Radeon HD 5000 Series]
+ pci:v00001002d0000AA60sv00001025sd0000033D*
+- ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650
++ ID_MODEL_FROM_DATABASE=Redwood HDMI Audio [Radeon HD 5000 Series] (Mobility Radeon HD 5650)
+ pci:v00001002d0000AA60sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=Redwood HDMI Audio [Radeon HD 5000 Series] (Aspire 7740G)
+ pci:v00001002d0000AA68*
+  ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300 Series]
+ pci:v00001002d0000AA68sv00001028sd0000AA68*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300 Series] (XPS 8300)
+ pci:v00001002d0000AA80*
+  ID_MODEL_FROM_DATABASE=Cayman/Antilles HDMI Audio [Radeon HD 6900 Series]
+@@ -9171,13 +9171,13 @@ pci:v00001002d0000AA90*
+  ID_MODEL_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series]
+ pci:v00001002d0000AA90sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series] (Precision M4600)
+ pci:v00001002d0000AA98*
+  ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series]
+ pci:v00001002d0000AA98sv0000174Bsd0000AA98*
+- ID_MODEL_FROM_DATABASE=Radeon HD 6450 1GB DDR3
++ ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series] (Radeon HD 6450 1GB DDR3)
+ pci:v00001002d0000AAA0*
+  ID_MODEL_FROM_DATABASE=Tahiti XT HDMI Audio [Radeon HD 7970 Series]
+@@ -9264,10 +9264,10 @@ pci:v00001004d00000304sv00001004sd00000304*
+  ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio
+ pci:v00001004d00000304sv0000122Dsd00001206*
+- ID_MODEL_FROM_DATABASE=DSP368 Audio
++ ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio (DSP368 Audio)
+ pci:v00001004d00000304sv00001483sd00005020*
+- ID_MODEL_FROM_DATABASE=XWave Thunder 3D Audio
++ ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio (XWave Thunder 3D Audio)
+ pci:v00001004d00000305*
+  ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport
+@@ -9276,10 +9276,10 @@ pci:v00001004d00000305sv00001004sd00000305*
+  ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport
+ pci:v00001004d00000305sv0000122Dsd00001207*
+- ID_MODEL_FROM_DATABASE=DSP368 Audio Gameport
++ ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport (DSP368 Audio Gameport)
+ pci:v00001004d00000305sv00001483sd00005021*
+- ID_MODEL_FROM_DATABASE=XWave Thunder 3D Audio Gameport
++ ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport (XWave Thunder 3D Audio Gameport)
+ pci:v00001004d00000306*
+  ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers
+@@ -9288,22 +9288,22 @@ pci:v00001004d00000306sv00001004sd00000306*
+  ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers
+ pci:v00001004d00000306sv0000122Dsd00001208*
+- ID_MODEL_FROM_DATABASE=DSP368 Audio Support Registers
++ ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers (DSP368 Audio Support Registers)
+ pci:v00001004d00000306sv00001483sd00005022*
+- ID_MODEL_FROM_DATABASE=XWave Thunder 3D Audio Support Registers
++ ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers (XWave Thunder 3D Audio Support Registers)
+ pci:v00001004d00000307*
+  ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio
+ pci:v00001004d00000307sv00001004sd00000703*
+- ID_MODEL_FROM_DATABASE=Philips Rhythmic Edge PSC703
++ ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio (Philips Rhythmic Edge PSC703)
+ pci:v00001004d00000307sv00001004sd00000705*
+- ID_MODEL_FROM_DATABASE=Philips Seismic Edge PSC705
++ ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio (Philips Seismic Edge PSC705)
+ pci:v00001004d00000307sv00001004sd00000706*
+- ID_MODEL_FROM_DATABASE=Philips Acoustic Edge PSC706
++ ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio (Philips Acoustic Edge PSC706)
+ pci:v00001004d00000308*
+  ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio Gameport
+@@ -9375,16 +9375,16 @@ pci:v0000100Bd00000020*
+  ID_MODEL_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller
+ pci:v0000100Bd00000020sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Network
++ ID_MODEL_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller (Pavilion ze4400 builtin Network)
+ pci:v0000100Bd00000020sv000012D9sd0000000C*
+- ID_MODEL_FROM_DATABASE=Aculab E1/T1 PMXc cPCI carrier card
++ ID_MODEL_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller (Aculab E1/T1 PMXc cPCI carrier card)
+ pci:v0000100Bd00000020sv00001385sd0000F311*
+- ID_MODEL_FROM_DATABASE=FA311 / FA312 (FA311 with WoL HW)
++ ID_MODEL_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller (FA311 / FA312 (FA311 with WoL HW))
+ pci:v0000100Bd00000020sv00001385sd0000F312*
+- ID_MODEL_FROM_DATABASE=FA312 (rev. A1) Fast Ethernet PCI Adapter
++ ID_MODEL_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller (FA312 (rev. A1) Fast Ethernet PCI Adapter)
+ pci:v0000100Bd00000021*
+  ID_MODEL_FROM_DATABASE=PC87200 PCI to ISA Bridge
+@@ -9393,13 +9393,13 @@ pci:v0000100Bd00000022*
+  ID_MODEL_FROM_DATABASE=DP83820 10/100/1000 Ethernet Controller
+ pci:v0000100Bd00000022sv00001186sd00004900*
+- ID_MODEL_FROM_DATABASE=DGE-500T
++ ID_MODEL_FROM_DATABASE=DP83820 10/100/1000 Ethernet Controller (DGE-500T)
+ pci:v0000100Bd00000022sv00001385sd0000621A*
+- ID_MODEL_FROM_DATABASE=GA621
++ ID_MODEL_FROM_DATABASE=DP83820 10/100/1000 Ethernet Controller (GA621)
+ pci:v0000100Bd00000022sv00001385sd0000622A*
+- ID_MODEL_FROM_DATABASE=GA622T
++ ID_MODEL_FROM_DATABASE=DP83820 10/100/1000 Ethernet Controller (GA622T)
+ pci:v0000100Bd00000028*
+  ID_MODEL_FROM_DATABASE=Geode GX2 Host Bridge
+@@ -9435,13 +9435,13 @@ pci:v0000100Bd00000502*
+  ID_MODEL_FROM_DATABASE=SCx200, SC1100 IDE controller
+ pci:v0000100Bd00000502sv0000100Bsd00000502*
+- ID_MODEL_FROM_DATABASE=IDE Controller
++ ID_MODEL_FROM_DATABASE=SCx200, SC1100 IDE controller (IDE Controller)
+ pci:v0000100Bd00000503*
+  ID_MODEL_FROM_DATABASE=SCx200, SC1100 Audio Controller
+ pci:v0000100Bd00000503sv0000100Bsd00000503*
+- ID_MODEL_FROM_DATABASE=XpressAudio controller
++ ID_MODEL_FROM_DATABASE=SCx200, SC1100 Audio Controller (XpressAudio controller)
+ pci:v0000100Bd00000504*
+  ID_MODEL_FROM_DATABASE=SCx200 Video
+@@ -9453,19 +9453,19 @@ pci:v0000100Bd00000510*
+  ID_MODEL_FROM_DATABASE=SC1100 Bridge
+ pci:v0000100Bd00000510sv0000100Bsd00000500*
+- ID_MODEL_FROM_DATABASE=GPIO and LPC support bridge
++ ID_MODEL_FROM_DATABASE=SC1100 Bridge (GPIO and LPC support bridge)
+ pci:v0000100Bd00000511*
+  ID_MODEL_FROM_DATABASE=SC1100 SMI & ACPI
+ pci:v0000100Bd00000511sv0000100Bsd00000501*
+- ID_MODEL_FROM_DATABASE=SC1100 SMI & ACPI bridge
++ ID_MODEL_FROM_DATABASE=SC1100 SMI & ACPI (bridge)
+ pci:v0000100Bd00000515*
+  ID_MODEL_FROM_DATABASE=SC1100 XBus
+ pci:v0000100Bd00000515sv0000100Bsd00000505*
+- ID_MODEL_FROM_DATABASE=SC1100 PCI to XBus bridge
++ ID_MODEL_FROM_DATABASE=SC1100 XBus (SC1100 PCI to XBus bridge)
+ pci:v0000100Bd0000D001*
+  ID_MODEL_FROM_DATABASE=87410 IDE
+@@ -9534,55 +9534,55 @@ pci:v00001011d00000009*
+  ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet]
+ pci:v00001011d00000009sv00001025sd00000310*
+- ID_MODEL_FROM_DATABASE=21140 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (21140 Fast Ethernet)
+ pci:v00001011d00000009sv000010B8sd00002001*
+- ID_MODEL_FROM_DATABASE=SMC9332BDT EtherPower 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (SMC9332BDT EtherPower 10/100)
+ pci:v00001011d00000009sv000010B8sd00002002*
+- ID_MODEL_FROM_DATABASE=SMC9332BVT EtherPower T4 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (SMC9332BVT EtherPower T4 10/100)
+ pci:v00001011d00000009sv000010B8sd00002003*
+- ID_MODEL_FROM_DATABASE=SMC9334BDT EtherPower 10/100 (1-port)
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (SMC9334BDT EtherPower 10/100 (1-port))
+ pci:v00001011d00000009sv00001109sd00002400*
+- ID_MODEL_FROM_DATABASE=ANA-6944A/TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (ANA-6944A/TX Fast Ethernet)
+ pci:v00001011d00000009sv00001112sd00002300*
+- ID_MODEL_FROM_DATABASE=RNS2300 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (RNS2300 Fast Ethernet)
+ pci:v00001011d00000009sv00001112sd00002320*
+- ID_MODEL_FROM_DATABASE=RNS2320 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (RNS2320 Fast Ethernet)
+ pci:v00001011d00000009sv00001112sd00002340*
+- ID_MODEL_FROM_DATABASE=RNS2340 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (RNS2340 Fast Ethernet)
+ pci:v00001011d00000009sv00001113sd00001207*
+- ID_MODEL_FROM_DATABASE=EN-1207-TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (EN-1207-TX Fast Ethernet)
+ pci:v00001011d00000009sv00001186sd00001100*
+- ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (DFE-500TX Fast Ethernet)
+ pci:v00001011d00000009sv00001186sd00001112*
+- ID_MODEL_FROM_DATABASE=DFE-570TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (DFE-570TX Fast Ethernet)
+ pci:v00001011d00000009sv00001186sd00001140*
+- ID_MODEL_FROM_DATABASE=DFE-660 Cardbus Ethernet 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (DFE-660 Cardbus Ethernet 10/100)
+ pci:v00001011d00000009sv00001186sd00001142*
+- ID_MODEL_FROM_DATABASE=DFE-660 Cardbus Ethernet 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (DFE-660 Cardbus Ethernet 10/100)
+ pci:v00001011d00000009sv000011F6sd00000503*
+- ID_MODEL_FROM_DATABASE=Freedomline Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (Freedomline Fast Ethernet)
+ pci:v00001011d00000009sv00001282sd00009100*
+- ID_MODEL_FROM_DATABASE=AEF-380TXD Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (AEF-380TXD Fast Ethernet)
+ pci:v00001011d00000009sv00001385sd00001100*
+- ID_MODEL_FROM_DATABASE=FA310TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (FA310TX Fast Ethernet)
+ pci:v00001011d00000009sv00002646sd00000001*
+- ID_MODEL_FROM_DATABASE=KNE100TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] (KNE100TX Fast Ethernet)
+ pci:v00001011d0000000A*
+  ID_MODEL_FROM_DATABASE=21230 Video Codec
+@@ -9594,16 +9594,16 @@ pci:v00001011d0000000F*
+  ID_MODEL_FROM_DATABASE=DEFPA FDDI PCI-to-PDQ Interface Chip [PFI]
+ pci:v00001011d0000000Fsv00001011sd0000DEF1*
+- ID_MODEL_FROM_DATABASE=FDDI controller (DEFPA)
++ ID_MODEL_FROM_DATABASE=DEFPA FDDI PCI-to-PDQ Interface Chip [PFI] (FDDI controller (DEFPA))
+ pci:v00001011d0000000Fsv0000103Csd0000DEF1*
+- ID_MODEL_FROM_DATABASE=FDDI controller (3X-DEFPA)
++ ID_MODEL_FROM_DATABASE=DEFPA FDDI PCI-to-PDQ Interface Chip [PFI] (FDDI controller (3X-DEFPA))
+ pci:v00001011d00000014*
+  ID_MODEL_FROM_DATABASE=DECchip 21041 [Tulip Pass 3]
+ pci:v00001011d00000014sv00001186sd00000100*
+- ID_MODEL_FROM_DATABASE=DE-530+
++ ID_MODEL_FROM_DATABASE=DECchip 21041 [Tulip Pass 3] (DE-530+)
+ pci:v00001011d00000016*
+  ID_MODEL_FROM_DATABASE=DGLPB [OPPO]
+@@ -9618,133 +9618,133 @@ pci:v00001011d00000019*
+  ID_MODEL_FROM_DATABASE=DECchip 21142/43
+ pci:v00001011d00000019sv00001011sd0000500A*
+- ID_MODEL_FROM_DATABASE=DE500A Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (DE500A Fast Ethernet)
+ pci:v00001011d00000019sv00001011sd0000500B*
+- ID_MODEL_FROM_DATABASE=DE500B Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (DE500B Fast Ethernet)
+ pci:v00001011d00000019sv00001014sd00000001*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (10/100 EtherJet Cardbus)
+ pci:v00001011d00000019sv00001025sd00000315*
+- ID_MODEL_FROM_DATABASE=ALN315 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (ALN315 Fast Ethernet)
+ pci:v00001011d00000019sv00001033sd0000800C*
+- ID_MODEL_FROM_DATABASE=PC-9821-CS01 100BASE-TX Interface Card
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (PC-9821-CS01 100BASE-TX Interface Card)
+ pci:v00001011d00000019sv00001033sd0000800D*
+- ID_MODEL_FROM_DATABASE=PC-9821NR-B06 100BASE-TX Interface Card
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (PC-9821NR-B06 100BASE-TX Interface Card)
+ pci:v00001011d00000019sv0000103Csd0000125A*
+- ID_MODEL_FROM_DATABASE=10/100Base-TX (PCI) [A5506B]
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (10/100Base-TX (PCI) [A5506B])
+ pci:v00001011d00000019sv0000108Dsd00000016*
+- ID_MODEL_FROM_DATABASE=Rapidfire 2327 10/100 Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Rapidfire 2327 10/100 Ethernet)
+ pci:v00001011d00000019sv0000108Dsd00000017*
+- ID_MODEL_FROM_DATABASE=GoCard 2250 Ethernet 10/100 Cardbus
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (GoCard 2250 Ethernet 10/100 Cardbus)
+ pci:v00001011d00000019sv000010B8sd00002005*
+- ID_MODEL_FROM_DATABASE=SMC8032DT Extreme Ethernet 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (SMC8032DT Extreme Ethernet 10/100)
+ pci:v00001011d00000019sv000010B8sd00008034*
+- ID_MODEL_FROM_DATABASE=SMC8034 Extreme Ethernet 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (SMC8034 Extreme Ethernet 10/100)
+ pci:v00001011d00000019sv000010EFsd00008169*
+- ID_MODEL_FROM_DATABASE=Cardbus Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Fast Ethernet)
+ pci:v00001011d00000019sv00001109sd00002A00*
+- ID_MODEL_FROM_DATABASE=ANA-6911A/TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (ANA-6911A/TX Fast Ethernet)
+ pci:v00001011d00000019sv00001109sd00002B00*
+- ID_MODEL_FROM_DATABASE=ANA-6911A/TXC Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (ANA-6911A/TXC Fast Ethernet)
+ pci:v00001011d00000019sv00001109sd00003000*
+- ID_MODEL_FROM_DATABASE=ANA-6922/TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (ANA-6922/TX Fast Ethernet)
+ pci:v00001011d00000019sv00001113sd00001207*
+- ID_MODEL_FROM_DATABASE=Cheetah Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cheetah Fast Ethernet)
+ pci:v00001011d00000019sv00001113sd00002220*
+- ID_MODEL_FROM_DATABASE=Cardbus Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Fast Ethernet)
+ pci:v00001011d00000019sv0000115Dsd00000002*
+- ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Ethernet 10/100)
+ pci:v00001011d00000019sv00001179sd00000203*
+- ID_MODEL_FROM_DATABASE=Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Fast Ethernet)
+ pci:v00001011d00000019sv00001179sd00000204*
+- ID_MODEL_FROM_DATABASE=Cardbus Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Fast Ethernet)
+ pci:v00001011d00000019sv00001186sd00001100*
+- ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (DFE-500TX Fast Ethernet)
+ pci:v00001011d00000019sv00001186sd00001101*
+- ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (DFE-500TX Fast Ethernet)
+ pci:v00001011d00000019sv00001186sd00001102*
+- ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (DFE-500TX Fast Ethernet)
+ pci:v00001011d00000019sv00001186sd00001112*
+- ID_MODEL_FROM_DATABASE=DFE-570TX Quad Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (DFE-570TX Quad Fast Ethernet)
+ pci:v00001011d00000019sv000011F0sd00004235*
+- ID_MODEL_FROM_DATABASE=21143 [FASTLine-II UTP 10/100]
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (21143 [FASTLine-II UTP 10/100])
+ pci:v00001011d00000019sv00001259sd00002800*
+- ID_MODEL_FROM_DATABASE=AT-2800Tx Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (AT-2800Tx Fast Ethernet)
+ pci:v00001011d00000019sv00001266sd00000004*
+- ID_MODEL_FROM_DATABASE=Eagle Fast EtherMAX
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Eagle Fast EtherMAX)
+ pci:v00001011d00000019sv000012AFsd00000019*
+- ID_MODEL_FROM_DATABASE=NetFlyer Cardbus Fast Ethernet
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (NetFlyer Cardbus Fast Ethernet)
+ pci:v00001011d00000019sv00001374sd00000001*
+- ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Ethernet Card 10/100)
+ pci:v00001011d00000019sv00001374sd00000002*
+- ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Ethernet Card 10/100)
+ pci:v00001011d00000019sv00001374sd00000007*
+- ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Ethernet Card 10/100)
+ pci:v00001011d00000019sv00001374sd00000008*
+- ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (Cardbus Ethernet Card 10/100)
+ pci:v00001011d00000019sv00001385sd00002100*
+- ID_MODEL_FROM_DATABASE=FA510
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (FA510)
+ pci:v00001011d00000019sv00001395sd00000001*
+- ID_MODEL_FROM_DATABASE=10/100 Ethernet CardBus PC Card
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (10/100 Ethernet CardBus PC Card)
+ pci:v00001011d00000019sv000013D1sd0000AB01*
+- ID_MODEL_FROM_DATABASE=EtherFast 10/100 Cardbus (PCMPC200)
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (EtherFast 10/100 Cardbus (PCMPC200))
+ pci:v00001011d00000019sv00001498sd0000000A*
+- ID_MODEL_FROM_DATABASE=TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter)
+ pci:v00001011d00000019sv00001498sd0000000B*
+- ID_MODEL_FROM_DATABASE=TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter)
+ pci:v00001011d00000019sv00001498sd0000000C*
+- ID_MODEL_FROM_DATABASE=TPMC880-12 Single 10Base2 PMC Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (TPMC880-12 Single 10Base2 PMC Ethernet Adapter)
+ pci:v00001011d00000019sv000014CBsd00000100*
+- ID_MODEL_FROM_DATABASE=LNDL-100N 100Base-TX Ethernet PC Card
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (LNDL-100N 100Base-TX Ethernet PC Card)
+ pci:v00001011d00000019sv00001668sd00002000*
+- ID_MODEL_FROM_DATABASE=FastNet Pro (PE2000)
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (FastNet Pro (PE2000))
+ pci:v00001011d00000019sv00002646sd00000001*
+- ID_MODEL_FROM_DATABASE=KNE100TX
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (KNE100TX)
+ pci:v00001011d00000019sv00002646sd00000002*
+- ID_MODEL_FROM_DATABASE=KNE-CB4TX
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (KNE-CB4TX)
+ pci:v00001011d00000019sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32
++ ID_MODEL_FROM_DATABASE=DECchip 21142/43 (EtherExpress PRO/100 Mobile CardBus 32)
+ pci:v00001011d0000001A*
+  ID_MODEL_FROM_DATABASE=Farallon PN9000SX Gigabit Ethernet
+@@ -9780,46 +9780,46 @@ pci:v00001011d00000046*
+  ID_MODEL_FROM_DATABASE=DECchip 21554
+ pci:v00001011d00000046sv00000E11sd00004050*
+- ID_MODEL_FROM_DATABASE=Smart Array 4200 Controller
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (Smart Array 4200 Controller)
+ pci:v00001011d00000046sv00000E11sd00004051*
+- ID_MODEL_FROM_DATABASE=Smart Array 4250ES Controller
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (Smart Array 4250ES Controller)
+ pci:v00001011d00000046sv00000E11sd00004058*
+- ID_MODEL_FROM_DATABASE=Smart Array 431 Controller
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (Smart Array 431 Controller)
+ pci:v00001011d00000046sv0000103Csd000010C2*
+- ID_MODEL_FROM_DATABASE=NetRAID-4M
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (NetRAID-4M)
+ pci:v00001011d00000046sv000012D9sd0000000A*
+- ID_MODEL_FROM_DATABASE=IP Telephony card
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (IP Telephony card)
+ pci:v00001011d00000046sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (CT7 mainboard)
+ pci:v00001011d00000046sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (CE7 mainboard)
+ pci:v00001011d00000046sv00009005sd00000364*
+- ID_MODEL_FROM_DATABASE=5400S (Mustang)
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (5400S (Mustang))
+ pci:v00001011d00000046sv00009005sd00000365*
+- ID_MODEL_FROM_DATABASE=5400S (Mustang)
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (5400S (Mustang))
+ pci:v00001011d00000046sv00009005sd00001364*
+- ID_MODEL_FROM_DATABASE=Dell PowerEdge RAID Controller 2
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (Dell PowerEdge RAID Controller 2)
+ pci:v00001011d00000046sv00009005sd00001365*
+- ID_MODEL_FROM_DATABASE=Dell PowerEdge RAID Controller 2
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (Dell PowerEdge RAID Controller 2)
+ pci:v00001011d00000046sv0000E4BFsd00001000*
+- ID_MODEL_FROM_DATABASE=CC8-1-BLUES
++ ID_MODEL_FROM_DATABASE=DECchip 21554 (CC8-1-BLUES)
+ pci:v00001011d00001065*
+  ID_MODEL_FROM_DATABASE=StrongARM DC21285
+ pci:v00001011d00001065sv00001069sd00000020*
+- ID_MODEL_FROM_DATABASE=DAC960P / DAC1164P
++ ID_MODEL_FROM_DATABASE=StrongARM DC21285 (DAC960P / DAC1164P)
+ pci:v00001012*
+  ID_VENDOR_FROM_DATABASE=Micronics Computers Inc
+@@ -9858,13 +9858,13 @@ pci:v00001013d000000B8*
+  ID_MODEL_FROM_DATABASE=GD 5446
+ pci:v00001013d000000B8sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=GD 5446 (QEMU Virtual Machine)
+ pci:v00001013d000000BC*
+  ID_MODEL_FROM_DATABASE=GD 5480
+ pci:v00001013d000000BCsv00001013sd000000BC*
+- ID_MODEL_FROM_DATABASE=CL-GD5480
++ ID_MODEL_FROM_DATABASE=GD 5480 (CL-GD5480)
+ pci:v00001013d000000D0*
+  ID_MODEL_FROM_DATABASE=GD 5462
+@@ -9882,10 +9882,10 @@ pci:v00001013d000000D6*
+  ID_MODEL_FROM_DATABASE=GD 5465 [Laguna]
+ pci:v00001013d000000D6sv000013CEsd00008031*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 2 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=GD 5465 [Laguna] (Barco Metheus 2 Megapixel, Dual Head)
+ pci:v00001013d000000D6sv000013CFsd00008031*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 2 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=GD 5465 [Laguna] (Barco Metheus 2 Megapixel, Dual Head)
+ pci:v00001013d000000E8*
+  ID_MODEL_FROM_DATABASE=GD 5436U
+@@ -9921,34 +9921,34 @@ pci:v00001013d00006001*
+  ID_MODEL_FROM_DATABASE=CS 4610/11 [CrystalClear SoundFusion Audio Accelerator]
+ pci:v00001013d00006001sv00001014sd00001010*
+- ID_MODEL_FROM_DATABASE=CS4610 SoundFusion Audio Accelerator
++ ID_MODEL_FROM_DATABASE=CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] (CS4610 SoundFusion Audio Accelerator)
+ pci:v00001013d00006003*
+  ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator]
+ pci:v00001013d00006003sv00001013sd00004280*
+- ID_MODEL_FROM_DATABASE=Crystal SoundFusion PCI Audio Accelerator
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (Crystal SoundFusion PCI Audio Accelerator)
+ pci:v00001013d00006003sv00001014sd00000153*
+- ID_MODEL_FROM_DATABASE=ThinkPad 600X/A20m
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (ThinkPad 600X/A20m)
+ pci:v00001013d00006003sv0000153Bsd0000112E*
+- ID_MODEL_FROM_DATABASE=DMX XFire 1024
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (DMX XFire 1024)
+ pci:v00001013d00006003sv0000153Bsd00001136*
+- ID_MODEL_FROM_DATABASE=SiXPack 5.1+
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (SiXPack 5.1+)
+ pci:v00001013d00006003sv00001681sd00000050*
+- ID_MODEL_FROM_DATABASE=Game Theater XP
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (Game Theater XP)
+ pci:v00001013d00006003sv00001681sd0000A010*
+- ID_MODEL_FROM_DATABASE=Gamesurround Fortissimo II
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (Gamesurround Fortissimo II)
+ pci:v00001013d00006003sv00001681sd0000A011*
+- ID_MODEL_FROM_DATABASE=Gamesurround Fortissimo III 7.1
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (Gamesurround Fortissimo III 7.1)
+ pci:v00001013d00006003sv00005053sd00003357*
+- ID_MODEL_FROM_DATABASE=Santa Cruz
++ ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] (Santa Cruz)
+ pci:v00001013d00006004*
+  ID_MODEL_FROM_DATABASE=CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator]
+@@ -10029,16 +10029,16 @@ pci:v00001014d0000002E*
+  ID_MODEL_FROM_DATABASE=SCSI RAID Adapter [ServeRAID]
+ pci:v00001014d0000002Esv00001014sd0000002E*
+- ID_MODEL_FROM_DATABASE=ServeRAID-3x
++ ID_MODEL_FROM_DATABASE=SCSI RAID Adapter [ServeRAID] (ServeRAID-3x)
+ pci:v00001014d0000002Esv00001014sd0000022E*
+- ID_MODEL_FROM_DATABASE=ServeRAID-4H
++ ID_MODEL_FROM_DATABASE=SCSI RAID Adapter [ServeRAID] (ServeRAID-4H)
+ pci:v00001014d00000031*
+  ID_MODEL_FROM_DATABASE=2 Port Serial Adapter
+ pci:v00001014d00000031sv00001014sd00000031*
+- ID_MODEL_FROM_DATABASE=2721 WAN IOA - 2 Port Sync Serial Adapter
++ ID_MODEL_FROM_DATABASE=2 Port Serial Adapter (2721 WAN IOA - 2 Port Sync Serial Adapter)
+ pci:v00001014d00000036*
+  ID_MODEL_FROM_DATABASE=PCI to 32-bit LocalBus Bridge [Miami]
+@@ -10056,25 +10056,25 @@ pci:v00001014d0000003E*
+  ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller
+ pci:v00001014d0000003Esv00001014sd0000003E*
+- ID_MODEL_FROM_DATABASE=Token-Ring Adapter
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (Token-Ring Adapter)
+ pci:v00001014d0000003Esv00001014sd000000CD*
+- ID_MODEL_FROM_DATABASE=Token-Ring Adapter + Wake-On-LAN
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (Token-Ring Adapter + Wake-On-LAN)
+ pci:v00001014d0000003Esv00001014sd000000CE*
+- ID_MODEL_FROM_DATABASE=16/4 Token-Ring Adapter 2
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (16/4 Token-Ring Adapter 2)
+ pci:v00001014d0000003Esv00001014sd000000CF*
+- ID_MODEL_FROM_DATABASE=16/4 Token-Ring Adapter Special
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (16/4 Token-Ring Adapter Special)
+ pci:v00001014d0000003Esv00001014sd000000E4*
+- ID_MODEL_FROM_DATABASE=High-Speed 100/16/4 Token-Ring Adapter
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (High-Speed 100/16/4 Token-Ring Adapter)
+ pci:v00001014d0000003Esv00001014sd000000E5*
+- ID_MODEL_FROM_DATABASE=16/4 Token-Ring Adapter 2 + Wake-On-LAN
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (16/4 Token-Ring Adapter 2 + Wake-On-LAN)
+ pci:v00001014d0000003Esv00001014sd0000016D*
+- ID_MODEL_FROM_DATABASE=iSeries 2744 Card
++ ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller (iSeries 2744 Card)
+ pci:v00001014d00000045*
+  ID_MODEL_FROM_DATABASE=SSA Adapter
+@@ -10131,7 +10131,7 @@ pci:v00001014d00000090*
+  ID_MODEL_FROM_DATABASE=GXT 3000P
+ pci:v00001014d00000090sv00001014sd0000008E*
+- ID_MODEL_FROM_DATABASE=GXT-3000P
++ ID_MODEL_FROM_DATABASE=GXT 3000P (GXT-3000P)
+ pci:v00001014d00000091*
+  ID_MODEL_FROM_DATABASE=SSA Adapter
+@@ -10143,13 +10143,13 @@ pci:v00001014d00000096*
+  ID_MODEL_FROM_DATABASE=Chukar chipset SCSI controller
+ pci:v00001014d00000096sv00001014sd00000097*
+- ID_MODEL_FROM_DATABASE=iSeries 2778 DASD IOA
++ ID_MODEL_FROM_DATABASE=Chukar chipset SCSI controller (iSeries 2778 DASD IOA)
+ pci:v00001014d00000096sv00001014sd00000098*
+- ID_MODEL_FROM_DATABASE=iSeries 2763 DASD IOA
++ ID_MODEL_FROM_DATABASE=Chukar chipset SCSI controller (iSeries 2763 DASD IOA)
+ pci:v00001014d00000096sv00001014sd00000099*
+- ID_MODEL_FROM_DATABASE=iSeries 2748 DASD IOA
++ ID_MODEL_FROM_DATABASE=Chukar chipset SCSI controller (iSeries 2748 DASD IOA)
+ pci:v00001014d0000009F*
+  ID_MODEL_FROM_DATABASE=PCI 4758 Cryptographic Accelerator
+@@ -10164,7 +10164,7 @@ pci:v00001014d000000B7*
+  ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1]
+ pci:v00001014d000000B7sv00001092sd000000B8*
+- ID_MODEL_FROM_DATABASE=FireGL1 AGP 32Mb
++ ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1] (FireGL1 AGP 32Mb)
+ pci:v00001014d000000B8*
+  ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter
+@@ -10188,13 +10188,13 @@ pci:v00001014d00000142*
+  ID_MODEL_FROM_DATABASE=Yotta Video Compositor Input
+ pci:v00001014d00000142sv00001014sd00000143*
+- ID_MODEL_FROM_DATABASE=Yotta Input Controller (ytin)
++ ID_MODEL_FROM_DATABASE=Yotta Video Compositor Input (Yotta Input Controller (ytin))
+ pci:v00001014d00000144*
+  ID_MODEL_FROM_DATABASE=Yotta Video Compositor Output
+ pci:v00001014d00000144sv00001014sd00000145*
+- ID_MODEL_FROM_DATABASE=Yotta Output Controller (ytout)
++ ID_MODEL_FROM_DATABASE=Yotta Video Compositor Output (Yotta Output Controller (ytout))
+ pci:v00001014d00000156*
+  ID_MODEL_FROM_DATABASE=405GP PLB to PCI Bridge
+@@ -10218,10 +10218,10 @@ pci:v00001014d00000180*
+  ID_MODEL_FROM_DATABASE=Snipe chipset SCSI controller
+ pci:v00001014d00000180sv00001014sd00000241*
+- ID_MODEL_FROM_DATABASE=iSeries 2757 DASD IOA
++ ID_MODEL_FROM_DATABASE=Snipe chipset SCSI controller (iSeries 2757 DASD IOA)
+ pci:v00001014d00000180sv00001014sd00000264*
+- ID_MODEL_FROM_DATABASE=Quad Channel PCI-X U320 SCSI RAID Adapter (2780)
++ ID_MODEL_FROM_DATABASE=Snipe chipset SCSI controller (Quad Channel PCI-X U320 SCSI RAID Adapter (2780))
+ pci:v00001014d00000188*
+  ID_MODEL_FROM_DATABASE=EADS-X PCI-X to PCI-X Bridge
+@@ -10233,28 +10233,28 @@ pci:v00001014d000001BD*
+  ID_MODEL_FROM_DATABASE=ServeRAID Controller
+ pci:v00001014d000001BDsv00001014sd000001BD*
+- ID_MODEL_FROM_DATABASE=ServeRAID 4Lx
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID 4Lx)
+ pci:v00001014d000001BDsv00001014sd000001BE*
+- ID_MODEL_FROM_DATABASE=ServeRAID-4M
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-4M)
+ pci:v00001014d000001BDsv00001014sd000001BF*
+- ID_MODEL_FROM_DATABASE=ServeRAID-4L
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-4L)
+ pci:v00001014d000001BDsv00001014sd00000208*
+- ID_MODEL_FROM_DATABASE=ServeRAID-4Mx
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-4Mx)
+ pci:v00001014d000001BDsv00001014sd0000020E*
+- ID_MODEL_FROM_DATABASE=ServeRAID-4Lx
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-4Lx)
+ pci:v00001014d000001BDsv00001014sd0000022E*
+- ID_MODEL_FROM_DATABASE=ServeRAID-4H
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-4H)
+ pci:v00001014d000001BDsv00001014sd00000258*
+- ID_MODEL_FROM_DATABASE=ServeRAID-5i
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-5i)
+ pci:v00001014d000001BDsv00001014sd00000259*
+- ID_MODEL_FROM_DATABASE=ServeRAID-5i
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID-5i)
+ pci:v00001014d000001C1*
+  ID_MODEL_FROM_DATABASE=64bit/66MHz PCI ATM 155 UTP
+@@ -10266,10 +10266,10 @@ pci:v00001014d000001EF*
+  ID_MODEL_FROM_DATABASE=PowerPC 440GP PCI Bridge
+ pci:v00001014d000001EFsv00001734sd0000102B*
+- ID_MODEL_FROM_DATABASE=PCEAS PCI-X Dual Port ESCON Adapter
++ ID_MODEL_FROM_DATABASE=PowerPC 440GP PCI Bridge (PCEAS PCI-X Dual Port ESCON Adapter)
+ pci:v00001014d000001EFsv00001734sd000010F8*
+- ID_MODEL_FROM_DATABASE=PCEAT PCI-Express Dual Port ESCON Adapter
++ ID_MODEL_FROM_DATABASE=PowerPC 440GP PCI Bridge (PCEAT PCI-Express Dual Port ESCON Adapter)
+ pci:v00001014d000001FF*
+  ID_MODEL_FROM_DATABASE=10/100 Mbps Ethernet
+@@ -10278,13 +10278,13 @@ pci:v00001014d00000219*
+  ID_MODEL_FROM_DATABASE=Multiport Serial Adapter
+ pci:v00001014d00000219sv00001014sd0000021A*
+- ID_MODEL_FROM_DATABASE=Dual RVX
++ ID_MODEL_FROM_DATABASE=Multiport Serial Adapter (Dual RVX)
+ pci:v00001014d00000219sv00001014sd00000251*
+- ID_MODEL_FROM_DATABASE=Internal Modem/RVX
++ ID_MODEL_FROM_DATABASE=Multiport Serial Adapter (Internal Modem/RVX)
+ pci:v00001014d00000219sv00001014sd00000252*
+- ID_MODEL_FROM_DATABASE=Quad Internal Modem
++ ID_MODEL_FROM_DATABASE=Multiport Serial Adapter (Quad Internal Modem)
+ pci:v00001014d0000021B*
+  ID_MODEL_FROM_DATABASE=GXT6500P Graphics Adapter
+@@ -10299,16 +10299,16 @@ pci:v00001014d0000028C*
+  ID_MODEL_FROM_DATABASE=Citrine chipset SCSI controller
+ pci:v00001014d0000028Csv00001014sd0000028D*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X DDR SAS RAID Adapter (572E)
++ ID_MODEL_FROM_DATABASE=Citrine chipset SCSI controller (Dual Channel PCI-X DDR SAS RAID Adapter (572E))
+ pci:v00001014d0000028Csv00001014sd000002BE*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B)
++ ID_MODEL_FROM_DATABASE=Citrine chipset SCSI controller (Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B))
+ pci:v00001014d0000028Csv00001014sd000002C0*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X DDR U320 SCSI Adapter (571A)
++ ID_MODEL_FROM_DATABASE=Citrine chipset SCSI controller (Dual Channel PCI-X DDR U320 SCSI Adapter (571A))
+ pci:v00001014d0000028Csv00001014sd0000030D*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR Auxiliary Cache Adapter (575B)
++ ID_MODEL_FROM_DATABASE=Citrine chipset SCSI controller (PCI-X DDR Auxiliary Cache Adapter (575B))
+ pci:v00001014d000002A1*
+  ID_MODEL_FROM_DATABASE=Calgary PCI-X Host Bridge
+@@ -10317,13 +10317,13 @@ pci:v00001014d000002BD*
+  ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller
+ pci:v00001014d000002BDsv00001014sd000002C1*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS Adapter (572A/572C)
++ ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller (PCI-X DDR 3Gb SAS Adapter (572A/572C))
+ pci:v00001014d000002BDsv00001014sd000002C2*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572B/571D)
++ ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller (PCI-X DDR 3Gb SAS RAID Adapter (572B/571D))
+ pci:v00001014d000002BDsv00001014sd00000338*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR Auxiliary Cache Adapter (575C)
++ ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller (PCI-X DDR Auxiliary Cache Adapter (575C))
+ pci:v00001014d00000302*
+  ID_MODEL_FROM_DATABASE=Winnipeg PCI-X Host Bridge
+@@ -10338,88 +10338,88 @@ pci:v00001014d0000032D*
+  ID_MODEL_FROM_DATABASE=Axon - Cell Companion Chip
+ pci:v00001014d0000032Dsv00001014sd000003A1*
+- ID_MODEL_FROM_DATABASE=PCIe PowerXCell 8i Cell Accelerator Board
++ ID_MODEL_FROM_DATABASE=Axon - Cell Companion Chip (PCIe PowerXCell 8i Cell Accelerator Board)
+ pci:v00001014d00000339*
+  ID_MODEL_FROM_DATABASE=Obsidian-E PCI-E SCSI controller
+ pci:v00001014d00000339sv00001014sd0000030A*
+- ID_MODEL_FROM_DATABASE=PCIe 3Gb SAS RAID Adapter (574E)
++ ID_MODEL_FROM_DATABASE=Obsidian-E PCI-E SCSI controller (PCIe 3Gb SAS RAID Adapter (574E))
+ pci:v00001014d00000339sv00001014sd0000033A*
+- ID_MODEL_FROM_DATABASE=PCIe 3Gb SAS Adapter (57B3)
++ ID_MODEL_FROM_DATABASE=Obsidian-E PCI-E SCSI controller (PCIe 3Gb SAS Adapter (57B3))
+ pci:v00001014d00000339sv00001014sd0000035C*
+- ID_MODEL_FROM_DATABASE=PCIe x8 Internal 3Gb SAS adapter (57CC)
++ ID_MODEL_FROM_DATABASE=Obsidian-E PCI-E SCSI controller (PCIe x8 Internal 3Gb SAS adapter (57CC))
+ pci:v00001014d00000339sv00001014sd00000360*
+- ID_MODEL_FROM_DATABASE=PCI-E Auxiliary Cache Adapter (57B7)
++ ID_MODEL_FROM_DATABASE=Obsidian-E PCI-E SCSI controller (PCI-E Auxiliary Cache Adapter (57B7))
+ pci:v00001014d0000033D*
+  ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA)
+ pci:v00001014d0000033Dsv00001014sd0000033C*
+- ID_MODEL_FROM_DATABASE=PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) (PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5))
+ pci:v00001014d0000033Dsv00001014sd00000353*
+- ID_MODEL_FROM_DATABASE=PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) (PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3))
+ pci:v00001014d0000033Dsv00001014sd00000354*
+- ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS Adapter Dual-port (57C4)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) (PCIe2 6Gb SAS Adapter Dual-port (57C4))
+ pci:v00001014d0000033Dsv00001014sd00000356*
+- ID_MODEL_FROM_DATABASE=PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) (PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D))
+ pci:v00001014d0000033Dsv00001014sd0000035F*
+- ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS Adapter Quad-port (57B2)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) (PCIe2 6Gb SAS Adapter Quad-port (57B2))
+ pci:v00001014d0000034A*
+  ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC)
+ pci:v00001014d0000034Asv00001014sd0000033B*
+- ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS RAID Adapter Quad-port (57B4)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe2 6Gb SAS RAID Adapter Quad-port (57B4))
+ pci:v00001014d0000034Asv00001014sd00000355*
+- ID_MODEL_FROM_DATABASE=PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1))
+ pci:v00001014d0000034Asv00001014sd00000357*
+- ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS Adapter Quad-port (57C6)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe2 6Gb SAS Adapter Quad-port (57C6))
+ pci:v00001014d0000034Asv00001014sd0000035D*
+- ID_MODEL_FROM_DATABASE=PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8))
+ pci:v00001014d0000034Asv00001014sd0000035E*
+- ID_MODEL_FROM_DATABASE=PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE))
+ pci:v00001014d0000034Asv00001014sd000003FB*
+- ID_MODEL_FROM_DATABASE=PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5))
+ pci:v00001014d0000034Asv00001014sd000003FE*
+- ID_MODEL_FROM_DATABASE=PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x8 Cache SAS RAID Internal Adapter 6Gb (57D8))
+ pci:v00001014d0000034Asv00001014sd000003FF*
+- ID_MODEL_FROM_DATABASE=PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x8 SAS RAID Internal Adapter 6Gb (57D7))
+ pci:v00001014d0000034Asv00001014sd00000474*
+- ID_MODEL_FROM_DATABASE=PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57EB))
+ pci:v00001014d0000034Asv00001014sd00000475*
+- ID_MODEL_FROM_DATABASE=PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EC))
+ pci:v00001014d0000034Asv00001014sd00000499*
+- ID_MODEL_FROM_DATABASE=PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x16 Cache SAS RAID Internal Adapter 6Gb (57ED))
+ pci:v00001014d0000034Asv00001014sd0000049A*
+- ID_MODEL_FROM_DATABASE=PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE))
+ pci:v00001014d0000034Asv00001014sd000004C7*
+- ID_MODEL_FROM_DATABASE=PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA))
+ pci:v00001014d0000034Asv00001014sd000004C8*
+- ID_MODEL_FROM_DATABASE=PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2))
+ pci:v00001014d0000034Asv00001014sd00000C49*
+- ID_MODEL_FROM_DATABASE=PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD)
++ ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) (PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD))
+ pci:v00001014d000004AA*
+  ID_MODEL_FROM_DATABASE=Flash Adapter 90 (PCIe2 0.9TB)
+@@ -10461,13 +10461,13 @@ pci:v0000101Ad00000007*
+  ID_MODEL_FROM_DATABASE=BYNET BIC4G/2C/2G
+ pci:v0000101Ad00000007sv0000101Asd00000019*
+- ID_MODEL_FROM_DATABASE=BYNET BIC2C
++ ID_MODEL_FROM_DATABASE=BYNET BIC4G/2C/2G (BYNET BIC2C)
+ pci:v0000101Ad00000007sv0000101Asd0000001C*
+- ID_MODEL_FROM_DATABASE=BYNET BIC2G
++ ID_MODEL_FROM_DATABASE=BYNET BIC4G/2C/2G (BYNET BIC2G)
+ pci:v0000101Ad00000007sv0000101Asd0000001F*
+- ID_MODEL_FROM_DATABASE=BYNET BIC4G
++ ID_MODEL_FROM_DATABASE=BYNET BIC4G/2C/2G (BYNET BIC4G)
+ pci:v0000101Ad00000009*
+  ID_MODEL_FROM_DATABASE=PQS Memory Controller
+@@ -10488,19 +10488,19 @@ pci:v0000101Ad00001DC1*
+  ID_MODEL_FROM_DATABASE=BYNET BIC2M/BIC4M/BYA4M
+ pci:v0000101Ad00001DC1sv0000101Asd00000019*
+- ID_MODEL_FROM_DATABASE=BIC2M
++ ID_MODEL_FROM_DATABASE=BYNET BIC2M/BIC4M/BYA4M (BIC2M)
+ pci:v0000101Ad00001DC1sv0000101Asd0000001F*
+- ID_MODEL_FROM_DATABASE=BIC4M
++ ID_MODEL_FROM_DATABASE=BYNET BIC2M/BIC4M/BYA4M (BIC4M)
+ pci:v0000101Ad00001DC1sv0000101Asd00000ECE*
+- ID_MODEL_FROM_DATABASE=BYA4M
++ ID_MODEL_FROM_DATABASE=BYNET BIC2M/BIC4M/BYA4M (BYA4M)
+ pci:v0000101Ad00001FA8*
+  ID_MODEL_FROM_DATABASE=BYNET Multi-port BIC Adapter (XBIC Based)
+ pci:v0000101Ad00001FA8sv0000101Asd000000C3*
+- ID_MODEL_FROM_DATABASE=BYNET BIC2SE
++ ID_MODEL_FROM_DATABASE=BYNET Multi-port BIC Adapter (XBIC Based) (BYNET BIC2SE)
+ pci:v0000101B*
+  ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor
+@@ -10557,46 +10557,46 @@ pci:v0000101Ed00001960*
+  ID_MODEL_FROM_DATABASE=MegaRAID
+ pci:v0000101Ed00001960sv0000101Esd00000471*
+- ID_MODEL_FROM_DATABASE=MegaRAID 471 Enterprise 1600 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (471 Enterprise 1600 RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000475*
+- ID_MODEL_FROM_DATABASE=MegaRAID 475 Express 500/500LC RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (475 Express 500/500LC RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000477*
+- ID_MODEL_FROM_DATABASE=MegaRAID 477 Elite 3100 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (477 Elite 3100 RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000493*
+- ID_MODEL_FROM_DATABASE=MegaRAID 493 Elite 1600 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (493 Elite 1600 RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000494*
+- ID_MODEL_FROM_DATABASE=MegaRAID 494 Elite 1650 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (494 Elite 1650 RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000503*
+- ID_MODEL_FROM_DATABASE=MegaRAID 503 Enterprise 1650 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (503 Enterprise 1650 RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000511*
+- ID_MODEL_FROM_DATABASE=MegaRAID 511 i4 IDE RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (511 i4 IDE RAID Controller)
+ pci:v0000101Ed00001960sv0000101Esd00000522*
+- ID_MODEL_FROM_DATABASE=MegaRAID 522 i4133 RAID Controller
++ ID_MODEL_FROM_DATABASE=MegaRAID (522 i4133 RAID Controller)
+ pci:v0000101Ed00001960sv00001028sd00000471*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller 3/QC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller 3/QC)
+ pci:v0000101Ed00001960sv00001028sd00000475*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller 3/SC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller 3/SC)
+ pci:v0000101Ed00001960sv00001028sd00000493*
+- ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller 3/DC
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge RAID Controller 3/DC)
+ pci:v0000101Ed00001960sv00001028sd00000511*
+- ID_MODEL_FROM_DATABASE=PowerEdge Cost Effective RAID Controller ATA100/4Ch
++ ID_MODEL_FROM_DATABASE=MegaRAID (PowerEdge Cost Effective RAID Controller ATA100/4Ch)
+ pci:v0000101Ed00001960sv0000103Csd000060E7*
+- ID_MODEL_FROM_DATABASE=NetRAID-1M
++ ID_MODEL_FROM_DATABASE=MegaRAID (NetRAID-1M)
+ pci:v0000101Ed00001960sv0000103Csd000060E8*
+- ID_MODEL_FROM_DATABASE=NetRaid 2M [AMI MegaRaid 493]
++ ID_MODEL_FROM_DATABASE=MegaRAID (NetRaid 2M [AMI MegaRaid 493])
+ pci:v0000101Ed00009010*
+  ID_MODEL_FROM_DATABASE=MegaRAID 428 Ultra RAID Controller
+@@ -10623,7 +10623,7 @@ pci:v0000101Ed00009063*
+  ID_MODEL_FROM_DATABASE=MegaRAC
+ pci:v0000101Ed00009063sv0000101Esd00000767*
+- ID_MODEL_FROM_DATABASE=Dell Remote Assistant Card 2
++ ID_MODEL_FROM_DATABASE=MegaRAC (Dell Remote Assistant Card 2)
+ pci:v0000101F*
+  ID_VENDOR_FROM_DATABASE=PictureTel
+@@ -10731,7 +10731,7 @@ pci:v00001022d00001510*
+  ID_MODEL_FROM_DATABASE=Family 14h Processor Root Complex
+ pci:v00001022d00001510sv0000174Bsd00001001*
+- ID_MODEL_FROM_DATABASE=PURE Fusion Mini
++ ID_MODEL_FROM_DATABASE=Family 14h Processor Root Complex (PURE Fusion Mini)
+ pci:v00001022d00001512*
+  ID_MODEL_FROM_DATABASE=Family 14h Processor Root Port
+@@ -10842,79 +10842,79 @@ pci:v00001022d00002000*
+  ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE]
+ pci:v00001022d00002000sv00001014sd00002000*
+- ID_MODEL_FROM_DATABASE=NetFinity 10/100 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (NetFinity 10/100 Fast Ethernet)
+ pci:v00001022d00002000sv00001022sd00002000*
+- ID_MODEL_FROM_DATABASE=PCnet - Fast 79C971
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (PCnet - Fast 79C971)
+ pci:v00001022d00002000sv0000103Csd0000104C*
+- ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (Ethernet with LAN remote power Adapter)
+ pci:v00001022d00002000sv0000103Csd00001064*
+- ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (Ethernet with LAN remote power Adapter)
+ pci:v00001022d00002000sv0000103Csd00001065*
+- ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (Ethernet with LAN remote power Adapter)
+ pci:v00001022d00002000sv0000103Csd0000106C*
+- ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (Ethernet with LAN remote power Adapter)
+ pci:v00001022d00002000sv0000103Csd0000106E*
+- ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (Ethernet with LAN remote power Adapter)
+ pci:v00001022d00002000sv0000103Csd000010EA*
+- ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (Ethernet with LAN remote power Adapter)
+ pci:v00001022d00002000sv00001113sd00001220*
+- ID_MODEL_FROM_DATABASE=EN1220 10/100 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (EN1220 10/100 Fast Ethernet)
+ pci:v00001022d00002000sv00001259sd00002450*
+- ID_MODEL_FROM_DATABASE=AT-2450 10/100 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2450 10/100 Fast Ethernet)
+ pci:v00001022d00002000sv00001259sd00002454*
+- ID_MODEL_FROM_DATABASE=AT-2450v4 10Mb Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2450v4 10Mb Ethernet Adapter)
+ pci:v00001022d00002000sv00001259sd00002700*
+- ID_MODEL_FROM_DATABASE=AT-2700TX 10/100 Fast Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2700TX 10/100 Fast Ethernet)
+ pci:v00001022d00002000sv00001259sd00002701*
+- ID_MODEL_FROM_DATABASE=AT-2700FX 100Mb Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2700FX 100Mb Ethernet)
+ pci:v00001022d00002000sv00001259sd00002702*
+- ID_MODEL_FROM_DATABASE=AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet)
+ pci:v00001022d00002000sv00001259sd00002703*
+- ID_MODEL_FROM_DATABASE=AT-2701FX
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2701FX)
+ pci:v00001022d00002000sv00001259sd00002704*
+- ID_MODEL_FROM_DATABASE=AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet)
+ pci:v00001022d00002000sv00004C53sd00001000*
+- ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
+ pci:v00001022d00002000sv00004C53sd00001010*
+- ID_MODEL_FROM_DATABASE=CP5/CR6 mainboard
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (CP5/CR6 mainboard)
+ pci:v00001022d00002000sv00004C53sd00001020*
+- ID_MODEL_FROM_DATABASE=VR6 mainboard
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (VR6 mainboard)
+ pci:v00001022d00002000sv00004C53sd00001030*
+- ID_MODEL_FROM_DATABASE=PC5 mainboard
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (PC5 mainboard)
+ pci:v00001022d00002000sv00004C53sd00001040*
+- ID_MODEL_FROM_DATABASE=CL7 mainboard
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (CL7 mainboard)
+ pci:v00001022d00002000sv00004C53sd00001060*
+- ID_MODEL_FROM_DATABASE=PC7 mainboard
++ ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] (PC7 mainboard)
+ pci:v00001022d00002001*
+  ID_MODEL_FROM_DATABASE=79c978 [HomePNA]
+ pci:v00001022d00002001sv00001092sd00000A78*
+- ID_MODEL_FROM_DATABASE=Multimedia Home Network Adapter
++ ID_MODEL_FROM_DATABASE=79c978 [HomePNA] (Multimedia Home Network Adapter)
+ pci:v00001022d00002001sv00001668sd00000299*
+- ID_MODEL_FROM_DATABASE=ActionLink Home Network Adapter
++ ID_MODEL_FROM_DATABASE=79c978 [HomePNA] (ActionLink Home Network Adapter)
+ pci:v00001022d00002003*
+  ID_MODEL_FROM_DATABASE=Am 1771 MBW [Alchemy]
+@@ -10923,7 +10923,7 @@ pci:v00001022d00002020*
+  ID_MODEL_FROM_DATABASE=53c974 [PCscsi]
+ pci:v00001022d00002020sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=53c974 [PCscsi] (QEMU Virtual Machine)
+ pci:v00001022d00002040*
+  ID_MODEL_FROM_DATABASE=79c974
+@@ -11043,7 +11043,7 @@ pci:v00001022d00007440*
+  ID_MODEL_FROM_DATABASE=AMD-768 [Opus] ISA
+ pci:v00001022d00007440sv00001043sd00008044*
+- ID_MODEL_FROM_DATABASE=A7M-D Mainboard
++ ID_MODEL_FROM_DATABASE=AMD-768 [Opus] ISA (A7M-D Mainboard)
+ pci:v00001022d00007441*
+  ID_MODEL_FROM_DATABASE=AMD-768 [Opus] IDE
+@@ -11052,7 +11052,7 @@ pci:v00001022d00007443*
+  ID_MODEL_FROM_DATABASE=AMD-768 [Opus] ACPI
+ pci:v00001022d00007443sv00001043sd00008044*
+- ID_MODEL_FROM_DATABASE=A7M-D Mainboard
++ ID_MODEL_FROM_DATABASE=AMD-768 [Opus] ACPI (A7M-D Mainboard)
+ pci:v00001022d00007445*
+  ID_MODEL_FROM_DATABASE=AMD-768 [Opus] Audio
+@@ -11088,7 +11088,7 @@ pci:v00001022d00007460*
+  ID_MODEL_FROM_DATABASE=AMD-8111 PCI
+ pci:v00001022d00007460sv0000161Fsd00003017*
+- ID_MODEL_FROM_DATABASE=HDAMB
++ ID_MODEL_FROM_DATABASE=AMD-8111 PCI (HDAMB)
+ pci:v00001022d00007461*
+  ID_MODEL_FROM_DATABASE=AMD-8111 USB
+@@ -11103,22 +11103,22 @@ pci:v00001022d00007464*
+  ID_MODEL_FROM_DATABASE=AMD-8111 USB OHCI
+ pci:v00001022d00007464sv0000161Fsd00003017*
+- ID_MODEL_FROM_DATABASE=HDAMB
++ ID_MODEL_FROM_DATABASE=AMD-8111 USB OHCI (HDAMB)
+ pci:v00001022d00007468*
+  ID_MODEL_FROM_DATABASE=AMD-8111 LPC
+ pci:v00001022d00007468sv0000161Fsd00003017*
+- ID_MODEL_FROM_DATABASE=HDAMB
++ ID_MODEL_FROM_DATABASE=AMD-8111 LPC (HDAMB)
+ pci:v00001022d00007469*
+  ID_MODEL_FROM_DATABASE=AMD-8111 IDE
+ pci:v00001022d00007469sv00001022sd00002B80*
+- ID_MODEL_FROM_DATABASE=AMD-8111 IDE [Quartet]
++ ID_MODEL_FROM_DATABASE=AMD-8111 IDE ([Quartet])
+ pci:v00001022d00007469sv0000161Fsd00003017*
+- ID_MODEL_FROM_DATABASE=HDAMB
++ ID_MODEL_FROM_DATABASE=AMD-8111 IDE (HDAMB)
+ pci:v00001022d0000746A*
+  ID_MODEL_FROM_DATABASE=AMD-8111 SMBus 2.0
+@@ -11127,13 +11127,13 @@ pci:v00001022d0000746B*
+  ID_MODEL_FROM_DATABASE=AMD-8111 ACPI
+ pci:v00001022d0000746Bsv0000161Fsd00003017*
+- ID_MODEL_FROM_DATABASE=HDAMB
++ ID_MODEL_FROM_DATABASE=AMD-8111 ACPI (HDAMB)
+ pci:v00001022d0000746D*
+  ID_MODEL_FROM_DATABASE=AMD-8111 AC97 Audio
+ pci:v00001022d0000746Dsv0000161Fsd00003017*
+- ID_MODEL_FROM_DATABASE=HDAMB
++ ID_MODEL_FROM_DATABASE=AMD-8111 AC97 Audio (HDAMB)
+ pci:v00001022d0000746E*
+  ID_MODEL_FROM_DATABASE=AMD-8111 MC97 Modem
+@@ -11148,10 +11148,10 @@ pci:v00001022d00007801*
+  ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode]
+ pci:v00001022d00007801sv0000103Csd0000168B*
+- ID_MODEL_FROM_DATABASE=ProBook 4535s Notebook
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (ProBook 4535s Notebook)
+ pci:v00001022d00007801sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] (ProBook 455 G1 Notebook)
+ pci:v00001022d00007802*
+  ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
+@@ -11172,25 +11172,25 @@ pci:v00001022d00007807*
+  ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller
+ pci:v00001022d00007807sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller (ProBook 455 G1 Notebook)
+ pci:v00001022d00007808*
+  ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller
+ pci:v00001022d00007808sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller (ProBook 455 G1 Notebook)
+ pci:v00001022d00007809*
+  ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller
+ pci:v00001022d00007809sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller (ProBook 455 G1 Notebook)
+ pci:v00001022d0000780B*
+  ID_MODEL_FROM_DATABASE=FCH SMBus Controller
+ pci:v00001022d0000780Bsv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH SMBus Controller (ProBook 455 G1 Notebook)
+ pci:v00001022d0000780C*
+  ID_MODEL_FROM_DATABASE=FCH IDE Controller
+@@ -11199,16 +11199,16 @@ pci:v00001022d0000780D*
+  ID_MODEL_FROM_DATABASE=FCH Azalia Controller
+ pci:v00001022d0000780Dsv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH Azalia Controller (ProBook 455 G1 Notebook)
+ pci:v00001022d0000780Dsv00001043sd00008444*
+- ID_MODEL_FROM_DATABASE=F2A85-M Series
++ ID_MODEL_FROM_DATABASE=FCH Azalia Controller (F2A85-M Series)
+ pci:v00001022d0000780E*
+  ID_MODEL_FROM_DATABASE=FCH LPC Bridge
+ pci:v00001022d0000780Esv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH LPC Bridge (ProBook 455 G1 Notebook)
+ pci:v00001022d0000780F*
+  ID_MODEL_FROM_DATABASE=FCH PCI Bridge
+@@ -11223,7 +11223,7 @@ pci:v00001022d00007814*
+  ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller
+ pci:v00001022d00007814sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller (ProBook 455 G1 Notebook)
+ pci:v00001022d00007900*
+  ID_MODEL_FROM_DATABASE=FCH SATA Controller [IDE mode]
+@@ -11262,16 +11262,16 @@ pci:v00001022d00009600*
+  ID_MODEL_FROM_DATABASE=RS780 Host Bridge
+ pci:v00001022d00009600sv00001043sd000082F1*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=RS780 Host Bridge (M3A78-EH Motherboard)
+ pci:v00001022d00009601*
+  ID_MODEL_FROM_DATABASE=RS880 Host Bridge
+ pci:v00001022d00009601sv00001019sd00002120*
+- ID_MODEL_FROM_DATABASE=A785GM-M
++ ID_MODEL_FROM_DATABASE=RS880 Host Bridge (A785GM-M)
+ pci:v00001022d00009601sv00001043sd0000843E*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=RS880 Host Bridge (M5A88-V EVO)
+ pci:v00001022d00009602*
+  ID_MODEL_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (int gfx)
+@@ -11316,7 +11316,7 @@ pci:v00001023d00002001*
+  ID_MODEL_FROM_DATABASE=4DWave NX
+ pci:v00001023d00002001sv0000122Dsd00001400*
+- ID_MODEL_FROM_DATABASE=Trident PCI288-Q3DII (NX)
++ ID_MODEL_FROM_DATABASE=4DWave NX (Trident PCI288-Q3DII (NX))
+ pci:v00001023d00002100*
+  ID_MODEL_FROM_DATABASE=CyberBlade XP4m32
+@@ -11328,13 +11328,13 @@ pci:v00001023d00008400*
+  ID_MODEL_FROM_DATABASE=CyberBlade/i7
+ pci:v00001023d00008400sv00001023sd00008400*
+- ID_MODEL_FROM_DATABASE=CyberBlade i7 AGP
++ ID_MODEL_FROM_DATABASE=CyberBlade/i7 (CyberBlade i7 AGP)
+ pci:v00001023d00008420*
+  ID_MODEL_FROM_DATABASE=CyberBlade/i7d
+ pci:v00001023d00008420sv00000E11sd0000B15A*
+- ID_MODEL_FROM_DATABASE=CyberBlade i7 AGP
++ ID_MODEL_FROM_DATABASE=CyberBlade/i7d (CyberBlade i7 AGP)
+ pci:v00001023d00008500*
+  ID_MODEL_FROM_DATABASE=CyberBlade/i1
+@@ -11343,19 +11343,19 @@ pci:v00001023d00008520*
+  ID_MODEL_FROM_DATABASE=CyberBlade i1
+ pci:v00001023d00008520sv00000E11sd0000B16E*
+- ID_MODEL_FROM_DATABASE=CyberBlade i1 AGP
++ ID_MODEL_FROM_DATABASE=CyberBlade i1 (AGP)
+ pci:v00001023d00008520sv00001023sd00008520*
+- ID_MODEL_FROM_DATABASE=CyberBlade i1 AGP
++ ID_MODEL_FROM_DATABASE=CyberBlade i1 (AGP)
+ pci:v00001023d00008620*
+  ID_MODEL_FROM_DATABASE=CyberBlade/i1
+ pci:v00001023d00008620sv00001014sd00000502*
+- ID_MODEL_FROM_DATABASE=ThinkPad R30/T30
++ ID_MODEL_FROM_DATABASE=CyberBlade/i1 (ThinkPad R30/T30)
+ pci:v00001023d00008620sv00001014sd00001025*
+- ID_MODEL_FROM_DATABASE=Travelmate 352TE
++ ID_MODEL_FROM_DATABASE=CyberBlade/i1 (Travelmate 352TE)
+ pci:v00001023d00008820*
+  ID_MODEL_FROM_DATABASE=CyberBlade XPAi1
+@@ -11460,7 +11460,7 @@ pci:v00001023d00009880*
+  ID_MODEL_FROM_DATABASE=Blade 3D PCI/AGP
+ pci:v00001023d00009880sv00001023sd00009880*
+- ID_MODEL_FROM_DATABASE=Blade 3D
++ ID_MODEL_FROM_DATABASE=Blade 3D PCI/AGP (Blade 3D)
+ pci:v00001023d00009910*
+  ID_MODEL_FROM_DATABASE=CyberBlade/XP
+@@ -11523,7 +11523,7 @@ pci:v00001025d00001533*
+  ID_MODEL_FROM_DATABASE=M1533 PCI-to-ISA Bridge
+ pci:v00001025d00001533sv000010B9sd00001533*
+- ID_MODEL_FROM_DATABASE=ALI M1533 Aladdin IV/V ISA South Bridge
++ ID_MODEL_FROM_DATABASE=M1533 PCI-to-ISA Bridge (ALI M1533 Aladdin IV/V ISA South Bridge)
+ pci:v00001025d00001535*
+  ID_MODEL_FROM_DATABASE=M1535 PCI Bridge + Super I/O + FIR
+@@ -11532,7 +11532,7 @@ pci:v00001025d00001541*
+  ID_MODEL_FROM_DATABASE=M1541 Northbridge [Aladdin V]
+ pci:v00001025d00001541sv000010B9sd00001541*
+- ID_MODEL_FROM_DATABASE=ALI M1541 Aladdin V/V+ AGP+PCI North Bridge
++ ID_MODEL_FROM_DATABASE=M1541 Northbridge [Aladdin V] (ALI M1541 Aladdin V/V+ AGP+PCI North Bridge)
+ pci:v00001025d00001542*
+  ID_MODEL_FROM_DATABASE=M1542 Northbridge [Aladdin V]
+@@ -11658,31 +11658,31 @@ pci:v00001028d00000001*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/Si
+ pci:v00001028d00000001sv00001028sd00000001*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2400
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/Si (PowerEdge 2400)
+ pci:v00001028d00000002*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di
+ pci:v00001028d00000002sv00001028sd00000002*
+- ID_MODEL_FROM_DATABASE=PowerEdge 4400
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di (PowerEdge 4400)
+ pci:v00001028d00000002sv00001028sd000000D1*
+- ID_MODEL_FROM_DATABASE=PERC 3/DiV [Viper]
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di (PERC 3/DiV [Viper])
+ pci:v00001028d00000002sv00001028sd000000D9*
+- ID_MODEL_FROM_DATABASE=PERC 3/DiL [Lexus]
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di (PERC 3/DiL [Lexus])
+ pci:v00001028d00000003*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Si
+ pci:v00001028d00000003sv00001028sd00000003*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2450
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Si (PowerEdge 2450)
+ pci:v00001028d00000004*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di [Iguana]
+ pci:v00001028d00000004sv00001028sd00000004*
+- ID_MODEL_FROM_DATABASE=PERC 3/DiF [Iguana]
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di [Iguana] (PERC 3/DiF [Iguana])
+ pci:v00001028d00000006*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di
+@@ -11700,13 +11700,13 @@ pci:v00001028d0000000A*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di
+ pci:v00001028d0000000Asv00001028sd00000106*
+- ID_MODEL_FROM_DATABASE=PERC 3/DiJ [Jaguar]
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di (PERC 3/DiJ [Jaguar])
+ pci:v00001028d0000000Asv00001028sd0000011B*
+- ID_MODEL_FROM_DATABASE=PERC 3/DiD [Dagger]
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di (PERC 3/DiD [Dagger])
+ pci:v00001028d0000000Asv00001028sd00000121*
+- ID_MODEL_FROM_DATABASE=PERC 3/DiB [Boxster]
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di (PERC 3/DiB [Boxster])
+ pci:v00001028d0000000C*
+  ID_MODEL_FROM_DATABASE=Embedded Remote Access or ERA/O
+@@ -11721,7 +11721,7 @@ pci:v00001028d0000000F*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4/Di
+ pci:v00001028d0000000Fsv00001028sd0000014A*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1750
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4/Di (PowerEdge 1750)
+ pci:v00001028d00000010*
+  ID_MODEL_FROM_DATABASE=Remote Access Card 4
+@@ -11736,19 +11736,19 @@ pci:v00001028d00000013*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4
+ pci:v00001028d00000013sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Si
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4 (PowerEdge Expandable RAID Controller 4e/Si)
+ pci:v00001028d00000013sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4 (PowerEdge Expandable RAID Controller 4e/Di)
+ pci:v00001028d00000013sv00001028sd0000016E*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4 (PowerEdge Expandable RAID Controller 4e/Di)
+ pci:v00001028d00000013sv00001028sd0000016F*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4 (PowerEdge Expandable RAID Controller 4e/Di)
+ pci:v00001028d00000013sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4 (PowerEdge Expandable RAID Controller 4e/Di)
+ pci:v00001028d00000014*
+  ID_MODEL_FROM_DATABASE=Remote Access Card 4 Daughter Card SMIC interface
+@@ -11757,19 +11757,19 @@ pci:v00001028d00000015*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 5
+ pci:v00001028d00000015sv00001028sd00001F01*
+- ID_MODEL_FROM_DATABASE=PERC 5/E Adapter RAID Controller
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 5 (PERC 5/E Adapter RAID Controller)
+ pci:v00001028d00000015sv00001028sd00001F02*
+- ID_MODEL_FROM_DATABASE=PERC 5/i Adapter RAID Controller
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 5 (PERC 5/i Adapter RAID Controller)
+ pci:v00001028d00000015sv00001028sd00001F03*
+- ID_MODEL_FROM_DATABASE=PERC 5/i Integrated RAID Controller
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 5 (PERC 5/i Integrated RAID Controller)
+ pci:v00001028d00000016*
+  ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller S300
+ pci:v00001028d00000016sv00001028sd00001F24*
+- ID_MODEL_FROM_DATABASE=PERC S300 Controller
++ ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller S300 (PERC S300 Controller)
+ pci:v00001029*
+  ID_VENDOR_FROM_DATABASE=Siemens Nixdorf IS
+@@ -11787,28 +11787,28 @@ pci:v0000102Ad0000001F*
+  ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W /7890/7891 SCSI Controllers
+ pci:v0000102Ad0000001Fsv00009005sd0000000F*
+- ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W /7890/7891 SCSI Controllers (2940U2W SCSI Controller)
+ pci:v0000102Ad0000001Fsv00009005sd00000106*
+- ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W /7890/7891 SCSI Controllers (2940U2W SCSI Controller)
+ pci:v0000102Ad0000001Fsv00009005sd0000A180*
+- ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W /7890/7891 SCSI Controllers (2940U2W SCSI Controller)
+ pci:v0000102Ad000000C5*
+  ID_MODEL_FROM_DATABASE=AIC-7899 U160/m SCSI Controller
+ pci:v0000102Ad000000C5sv00001028sd000000C5*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2550/2650/4600
++ ID_MODEL_FROM_DATABASE=AIC-7899 U160/m SCSI Controller (PowerEdge 2550/2650/4600)
+ pci:v0000102Ad000000CF*
+  ID_MODEL_FROM_DATABASE=AIC-7899P U160/m
+ pci:v0000102Ad000000CFsv00001028sd00000106*
+- ID_MODEL_FROM_DATABASE=PowerEdge 4600
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (PowerEdge 4600)
+ pci:v0000102Ad000000CFsv00001028sd00000121*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2650
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (PowerEdge 2650)
+ pci:v0000102B*
+  ID_VENDOR_FROM_DATABASE=Matrox Electronics Systems Ltd.
+@@ -11829,34 +11829,34 @@ pci:v0000102Bd0000051A*
+  ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique]
+ pci:v0000102Bd0000051Asv0000102Bsd00000100*
+- ID_MODEL_FROM_DATABASE=MGA-1064SG Mystique
++ ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] (MGA-1064SG Mystique)
+ pci:v0000102Bd0000051Asv0000102Bsd00001100*
+- ID_MODEL_FROM_DATABASE=MGA-1084SG Mystique
++ ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] (MGA-1084SG Mystique)
+ pci:v0000102Bd0000051Asv0000102Bsd00001200*
+- ID_MODEL_FROM_DATABASE=MGA-1084SG Mystique
++ ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] (MGA-1084SG Mystique)
+ pci:v0000102Bd0000051Asv00001100sd0000102B*
+- ID_MODEL_FROM_DATABASE=MGA-1084SG Mystique
++ ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] (MGA-1084SG Mystique)
+ pci:v0000102Bd0000051Asv0000110Asd00000018*
+- ID_MODEL_FROM_DATABASE=Scenic Pro C5 (D1025)
++ ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] (Scenic Pro C5 (D1025))
+ pci:v0000102Bd0000051B*
+  ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II]
+ pci:v0000102Bd0000051Bsv0000102Bsd0000051B*
+- ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II
++ ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II] (MGA-2164W Millennium II)
+ pci:v0000102Bd0000051Bsv0000102Bsd00001100*
+- ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II
++ ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II] (MGA-2164W Millennium II)
+ pci:v0000102Bd0000051Bsv0000102Bsd00001200*
+- ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II
++ ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II] (MGA-2164W Millennium II)
+ pci:v0000102Bd0000051Bsv0000102Bsd00002100*
+- ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II
++ ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II] (MGA-2164W Millennium II)
+ pci:v0000102Bd0000051E*
+  ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] AGP
+@@ -11868,391 +11868,391 @@ pci:v0000102Bd00000520*
+  ID_MODEL_FROM_DATABASE=MGA G200
+ pci:v0000102Bd00000520sv0000102Bsd0000DBC2*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 (G200 Multi-Monitor)
+ pci:v0000102Bd00000520sv0000102Bsd0000DBC8*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 (G200 Multi-Monitor)
+ pci:v0000102Bd00000520sv0000102Bsd0000DBE2*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 (G200 Multi-Monitor)
+ pci:v0000102Bd00000520sv0000102Bsd0000DBE8*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 (G200 Multi-Monitor)
+ pci:v0000102Bd00000520sv0000102Bsd0000FF03*
+- ID_MODEL_FROM_DATABASE=Millennium G200 SD
++ ID_MODEL_FROM_DATABASE=MGA G200 (Millennium G200 SD)
+ pci:v0000102Bd00000520sv0000102Bsd0000FF04*
+- ID_MODEL_FROM_DATABASE=Marvel G200
++ ID_MODEL_FROM_DATABASE=MGA G200 (Marvel G200)
+ pci:v0000102Bd00000521*
+  ID_MODEL_FROM_DATABASE=MGA G200 AGP
+ pci:v0000102Bd00000521sv00001014sd0000FF03*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd000048E9*
+- ID_MODEL_FROM_DATABASE=Mystique G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Mystique G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd000048F8*
+- ID_MODEL_FROM_DATABASE=Millennium G200 SD AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 SD AGP)
+ pci:v0000102Bd00000521sv0000102Bsd00004A60*
+- ID_MODEL_FROM_DATABASE=Millennium G200 LE AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 LE AGP)
+ pci:v0000102Bd00000521sv0000102Bsd00004A64*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000C93C*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000C9B0*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000C9BC*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000CA60*
+- ID_MODEL_FROM_DATABASE=Millennium G250 LE AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G250 LE AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000CA6C*
+- ID_MODEL_FROM_DATABASE=Millennium G250 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G250 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBBC*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBC2*
+- ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Dual G200)
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 MMS (Dual G200))
+ pci:v0000102Bd00000521sv0000102Bsd0000DBC3*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBC8*
+- ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Dual G200)
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 MMS (Dual G200))
+ pci:v0000102Bd00000521sv0000102Bsd0000DBD2*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBD3*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBD4*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBD5*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBD8*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBD9*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBE2*
+- ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Quad G200)
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 MMS (Quad G200))
+ pci:v0000102Bd00000521sv0000102Bsd0000DBE3*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBE8*
+- ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Quad G200)
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 MMS (Quad G200))
+ pci:v0000102Bd00000521sv0000102Bsd0000DBF2*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBF3*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBF4*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBF5*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBF8*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000DBF9*
+- ID_MODEL_FROM_DATABASE=G200 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (G200 Multi-Monitor)
+ pci:v0000102Bd00000521sv0000102Bsd0000F806*
+- ID_MODEL_FROM_DATABASE=Mystique G200 Video AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Mystique G200 Video AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000FF00*
+- ID_MODEL_FROM_DATABASE=MGA-G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (MGA-G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000FF02*
+- ID_MODEL_FROM_DATABASE=Mystique G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Mystique G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000FF03*
+- ID_MODEL_FROM_DATABASE=Millennium G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Millennium G200 AGP)
+ pci:v0000102Bd00000521sv0000102Bsd0000FF04*
+- ID_MODEL_FROM_DATABASE=Marvel G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (Marvel G200 AGP)
+ pci:v0000102Bd00000521sv0000110Asd00000032*
+- ID_MODEL_FROM_DATABASE=MGA-G200 AGP
++ ID_MODEL_FROM_DATABASE=MGA G200 AGP (MGA-G200 AGP)
+ pci:v0000102Bd00000522*
+  ID_MODEL_FROM_DATABASE=MGA G200e [Pilot] ServerEngines (SEP1)
+ pci:v0000102Bd00000522sv0000103Csd000031FA*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=MGA G200e [Pilot] ServerEngines (SEP1) (ProLiant DL140 G3)
+ pci:v0000102Bd00000525*
+  ID_MODEL_FROM_DATABASE=MGA G400/G450
+ pci:v0000102Bd00000525sv00000E11sd0000B16F*
+- ID_MODEL_FROM_DATABASE=MGA-G400 AGP
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (MGA-G400 AGP)
+ pci:v0000102Bd00000525sv0000102Bsd00000328*
+- ID_MODEL_FROM_DATABASE=Millennium G400 16Mb SDRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 16Mb SDRAM)
+ pci:v0000102Bd00000525sv0000102Bsd00000338*
+- ID_MODEL_FROM_DATABASE=Millennium G400 16Mb SDRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 16Mb SDRAM)
+ pci:v0000102Bd00000525sv0000102Bsd00000378*
+- ID_MODEL_FROM_DATABASE=Millennium G400 32Mb SDRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 32Mb SDRAM)
+ pci:v0000102Bd00000525sv0000102Bsd00000541*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Dual Head)
+ pci:v0000102Bd00000525sv0000102Bsd00000542*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head LX
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Dual Head LX)
+ pci:v0000102Bd00000525sv0000102Bsd00000543*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Single Head LX
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Single Head LX)
+ pci:v0000102Bd00000525sv0000102Bsd00000641*
+- ID_MODEL_FROM_DATABASE=Millennium G450 32Mb SDRAM Dual Head
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 32Mb SDRAM Dual Head)
+ pci:v0000102Bd00000525sv0000102Bsd00000642*
+- ID_MODEL_FROM_DATABASE=Millennium G450 32Mb SDRAM Dual Head LX
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 32Mb SDRAM Dual Head LX)
+ pci:v0000102Bd00000525sv0000102Bsd00000643*
+- ID_MODEL_FROM_DATABASE=Millennium G450 32Mb SDRAM Single Head LX
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 32Mb SDRAM Single Head LX)
+ pci:v0000102Bd00000525sv0000102Bsd000007C0*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head LE
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Dual Head LE)
+ pci:v0000102Bd00000525sv0000102Bsd000007C1*
+- ID_MODEL_FROM_DATABASE=Millennium G450 SDR Dual Head LE
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 SDR Dual Head LE)
+ pci:v0000102Bd00000525sv0000102Bsd00000D41*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head PCI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Dual Head PCI)
+ pci:v0000102Bd00000525sv0000102Bsd00000D42*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head LX PCI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Dual Head LX PCI)
+ pci:v0000102Bd00000525sv0000102Bsd00000D43*
+- ID_MODEL_FROM_DATABASE=Millennium G450 32Mb Dual Head PCI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 32Mb Dual Head PCI)
+ pci:v0000102Bd00000525sv0000102Bsd00000E00*
+- ID_MODEL_FROM_DATABASE=Marvel G450 eTV
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Marvel G450 eTV)
+ pci:v0000102Bd00000525sv0000102Bsd00000E01*
+- ID_MODEL_FROM_DATABASE=Marvel G450 eTV
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Marvel G450 eTV)
+ pci:v0000102Bd00000525sv0000102Bsd00000E02*
+- ID_MODEL_FROM_DATABASE=Marvel G450 eTV
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Marvel G450 eTV)
+ pci:v0000102Bd00000525sv0000102Bsd00000E03*
+- ID_MODEL_FROM_DATABASE=Marvel G450 eTV
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Marvel G450 eTV)
+ pci:v0000102Bd00000525sv0000102Bsd00000F80*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Low Profile)
+ pci:v0000102Bd00000525sv0000102Bsd00000F81*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Low Profile)
+ pci:v0000102Bd00000525sv0000102Bsd00000F82*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile DVI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Low Profile DVI)
+ pci:v0000102Bd00000525sv0000102Bsd00000F83*
+- ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile DVI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 Low Profile DVI)
+ pci:v0000102Bd00000525sv0000102Bsd000019D8*
+- ID_MODEL_FROM_DATABASE=Millennium G400 16Mb SGRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 16Mb SGRAM)
+ pci:v0000102Bd00000525sv0000102Bsd000019F8*
+- ID_MODEL_FROM_DATABASE=Millennium G400 32Mb SGRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 32Mb SGRAM)
+ pci:v0000102Bd00000525sv0000102Bsd00002159*
+- ID_MODEL_FROM_DATABASE=Millennium G400 Dual Head 16Mb
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 Dual Head 16Mb)
+ pci:v0000102Bd00000525sv0000102Bsd00002179*
+- ID_MODEL_FROM_DATABASE=Millennium G400 MAX/Dual Head 32Mb
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 MAX/Dual Head 32Mb)
+ pci:v0000102Bd00000525sv0000102Bsd0000217D*
+- ID_MODEL_FROM_DATABASE=Millennium G400 Dual Head Max
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 Dual Head Max)
+ pci:v0000102Bd00000525sv0000102Bsd000023C0*
+- ID_MODEL_FROM_DATABASE=Millennium G450
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450)
+ pci:v0000102Bd00000525sv0000102Bsd000023C1*
+- ID_MODEL_FROM_DATABASE=Millennium G450
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450)
+ pci:v0000102Bd00000525sv0000102Bsd000023C2*
+- ID_MODEL_FROM_DATABASE=Millennium G450 DVI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 DVI)
+ pci:v0000102Bd00000525sv0000102Bsd000023C3*
+- ID_MODEL_FROM_DATABASE=Millennium G450 DVI
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 DVI)
+ pci:v0000102Bd00000525sv0000102Bsd00002F58*
+- ID_MODEL_FROM_DATABASE=Millennium G400
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400)
+ pci:v0000102Bd00000525sv0000102Bsd00002F78*
+- ID_MODEL_FROM_DATABASE=Millennium G400
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400)
+ pci:v0000102Bd00000525sv0000102Bsd00003693*
+- ID_MODEL_FROM_DATABASE=Marvel G400 AGP
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Marvel G400 AGP)
+ pci:v0000102Bd00000525sv0000102Bsd00005DD0*
+- ID_MODEL_FROM_DATABASE=4Sight II
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (4Sight II)
+ pci:v0000102Bd00000525sv0000102Bsd00005F50*
+- ID_MODEL_FROM_DATABASE=4Sight II
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (4Sight II)
+ pci:v0000102Bd00000525sv0000102Bsd00005F51*
+- ID_MODEL_FROM_DATABASE=4Sight II
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (4Sight II)
+ pci:v0000102Bd00000525sv0000102Bsd00005F52*
+- ID_MODEL_FROM_DATABASE=4Sight II
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (4Sight II)
+ pci:v0000102Bd00000525sv0000102Bsd00009010*
+- ID_MODEL_FROM_DATABASE=Millennium G400 Dual Head
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G400 Dual Head)
+ pci:v0000102Bd00000525sv00001458sd00000400*
+- ID_MODEL_FROM_DATABASE=GA-G400
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (GA-G400)
+ pci:v0000102Bd00000525sv00001705sd00000001*
+- ID_MODEL_FROM_DATABASE=Millennium G450 32MB SGRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 32MB SGRAM)
+ pci:v0000102Bd00000525sv00001705sd00000002*
+- ID_MODEL_FROM_DATABASE=Millennium G450 16MB SGRAM
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 16MB SGRAM)
+ pci:v0000102Bd00000525sv00001705sd00000003*
+- ID_MODEL_FROM_DATABASE=Millennium G450 32MB
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 32MB)
+ pci:v0000102Bd00000525sv00001705sd00000004*
+- ID_MODEL_FROM_DATABASE=Millennium G450 16MB
++ ID_MODEL_FROM_DATABASE=MGA G400/G450 (Millennium G450 16MB)
+ pci:v0000102Bd00000527*
+  ID_MODEL_FROM_DATABASE=Parhelia
+ pci:v0000102Bd00000527sv0000102Bsd00000840*
+- ID_MODEL_FROM_DATABASE=Parhelia 128Mb
++ ID_MODEL_FROM_DATABASE=Parhelia (128Mb)
+ pci:v0000102Bd00000527sv0000102Bsd00000850*
+- ID_MODEL_FROM_DATABASE=Parhelia 256MB
++ ID_MODEL_FROM_DATABASE=Parhelia (256MB)
+ pci:v0000102Bd00000527sv0000102Bsd00000870*
+- ID_MODEL_FROM_DATABASE=MED2mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED2mp-DVI)
+ pci:v0000102Bd00000527sv0000102Bsd00000880*
+- ID_MODEL_FROM_DATABASE=P-256 Edge Overlap Controller
++ ID_MODEL_FROM_DATABASE=Parhelia (P-256 Edge Overlap Controller)
+ pci:v0000102Bd00000528*
+  ID_MODEL_FROM_DATABASE=Parhelia
+ pci:v0000102Bd00000528sv0000102Bsd00001020*
+- ID_MODEL_FROM_DATABASE=Parhelia 128MB
++ ID_MODEL_FROM_DATABASE=Parhelia (128MB)
+ pci:v0000102Bd00000528sv0000102Bsd00001030*
+- ID_MODEL_FROM_DATABASE=Parhelia 256 MB Dual DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (256 MB Dual DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001040*
+- ID_MODEL_FROM_DATABASE=MED2mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED2mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001050*
+- ID_MODEL_FROM_DATABASE=Sono S20
++ ID_MODEL_FROM_DATABASE=Parhelia (Sono S20)
+ pci:v0000102Bd00000528sv0000102Bsd00001060*
+- ID_MODEL_FROM_DATABASE=PJ-30L
++ ID_MODEL_FROM_DATABASE=Parhelia (PJ-30L)
+ pci:v0000102Bd00000528sv0000102Bsd00001070*
+- ID_MODEL_FROM_DATABASE=PJ-40L
++ ID_MODEL_FROM_DATABASE=Parhelia (PJ-40L)
+ pci:v0000102Bd00000528sv0000102Bsd00001421*
+- ID_MODEL_FROM_DATABASE=MED5mp
++ ID_MODEL_FROM_DATABASE=Parhelia (MED5mp)
+ pci:v0000102Bd00000528sv0000102Bsd00001431*
+- ID_MODEL_FROM_DATABASE=MED3mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED3mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001451*
+- ID_MODEL_FROM_DATABASE=MED5mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED5mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001491*
+- ID_MODEL_FROM_DATABASE=MED2mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED2mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd000014B1*
+- ID_MODEL_FROM_DATABASE=MED3mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED3mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd000014C1*
+- ID_MODEL_FROM_DATABASE=MED5mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED5mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd000014E1*
+- ID_MODEL_FROM_DATABASE=Parhelia PCI 256MB
++ ID_MODEL_FROM_DATABASE=Parhelia (PCI 256MB)
+ pci:v0000102Bd00000528sv0000102Bsd000014F1*
+- ID_MODEL_FROM_DATABASE=Parhelia Precision SGT
++ ID_MODEL_FROM_DATABASE=Parhelia (Precision SGT)
+ pci:v0000102Bd00000528sv0000102Bsd00001501*
+- ID_MODEL_FROM_DATABASE=ATC-4MP
++ ID_MODEL_FROM_DATABASE=Parhelia (ATC-4MP)
+ pci:v0000102Bd00000528sv0000102Bsd00001511*
+- ID_MODEL_FROM_DATABASE=ATC-4MP
++ ID_MODEL_FROM_DATABASE=Parhelia (ATC-4MP)
+ pci:v0000102Bd00000528sv0000102Bsd00001521*
+- ID_MODEL_FROM_DATABASE=TheatreVUE T30
++ ID_MODEL_FROM_DATABASE=Parhelia (TheatreVUE T30)
+ pci:v0000102Bd00000528sv0000102Bsd00001531*
+- ID_MODEL_FROM_DATABASE=TheatreVUE T20
++ ID_MODEL_FROM_DATABASE=Parhelia (TheatreVUE T20)
+ pci:v0000102Bd00000528sv0000102Bsd00001541*
+- ID_MODEL_FROM_DATABASE=MED2mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED2mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001551*
+- ID_MODEL_FROM_DATABASE=MED3mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED3mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001561*
+- ID_MODEL_FROM_DATABASE=MED5mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED5mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00001571*
+- ID_MODEL_FROM_DATABASE=Parhelia DL256 PCI
++ ID_MODEL_FROM_DATABASE=Parhelia (DL256 PCI)
+ pci:v0000102Bd00000528sv0000102Bsd00001591*
+- ID_MODEL_FROM_DATABASE=Parhelia Precision SDT
++ ID_MODEL_FROM_DATABASE=Parhelia (Precision SDT)
+ pci:v0000102Bd00000528sv0000102Bsd000015A1*
+- ID_MODEL_FROM_DATABASE=MED4mp-DVI
++ ID_MODEL_FROM_DATABASE=Parhelia (MED4mp-DVI)
+ pci:v0000102Bd00000528sv0000102Bsd00002011*
+- ID_MODEL_FROM_DATABASE=Parhelia HR256
++ ID_MODEL_FROM_DATABASE=Parhelia (HR256)
+ pci:v0000102Bd00000528sv0000102Bsd00002021*
+- ID_MODEL_FROM_DATABASE=QID Pro
++ ID_MODEL_FROM_DATABASE=Parhelia (QID Pro)
+ pci:v0000102Bd00000528sv0000102Bsd00002061*
+- ID_MODEL_FROM_DATABASE=PJ-40LP
++ ID_MODEL_FROM_DATABASE=Parhelia (PJ-40LP)
+ pci:v0000102Bd00000528sv0000102Bsd00002081*
+- ID_MODEL_FROM_DATABASE=EWS Quad
++ ID_MODEL_FROM_DATABASE=Parhelia (EWS Quad)
+ pci:v0000102Bd00000528sv0000102Bsd00002411*
+- ID_MODEL_FROM_DATABASE=PPX-OUT8
++ ID_MODEL_FROM_DATABASE=Parhelia (PPX-OUT8)
+ pci:v0000102Bd00000528sv0000102Bsd00002421*
+- ID_MODEL_FROM_DATABASE=VPX-OUT8
++ ID_MODEL_FROM_DATABASE=Parhelia (VPX-OUT8)
+ pci:v0000102Bd00000528sv0000102Bsd00002441*
+- ID_MODEL_FROM_DATABASE=PPX-OUT4
++ ID_MODEL_FROM_DATABASE=Parhelia (PPX-OUT4)
+ pci:v0000102Bd00000528sv0000102Bsd00002451*
+- ID_MODEL_FROM_DATABASE=VPX-OUT4
++ ID_MODEL_FROM_DATABASE=Parhelia (VPX-OUT4)
+ pci:v0000102Bd00000528sv0000102Bsd00002491*
+- ID_MODEL_FROM_DATABASE=LPX-OUT4
++ ID_MODEL_FROM_DATABASE=Parhelia (LPX-OUT4)
+ pci:v0000102Bd00000530*
+  ID_MODEL_FROM_DATABASE=MGA G200EV
+@@ -12261,37 +12261,37 @@ pci:v0000102Bd00000532*
+  ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450
+ pci:v0000102Bd00000532sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge R710 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge R610 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge T610 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge M610 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge R410 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge T410 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge M710 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv00001028sd000002A4*
+- ID_MODEL_FROM_DATABASE=PowerEdge T310 MGA G200eW WPCM450
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (PowerEdge T310 MGA G200eW WPCM450)
+ pci:v0000102Bd00000532sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 (H8DGU)
+ pci:v0000102Bd00000533*
+  ID_MODEL_FROM_DATABASE=MGA G200EH
+ pci:v0000102Bd00000533sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=MGA G200EH (iLO4)
+ pci:v0000102Bd00000534*
+  ID_MODEL_FROM_DATABASE=G200eR2
+@@ -12300,40 +12300,40 @@ pci:v0000102Bd00000540*
+  ID_MODEL_FROM_DATABASE=M91XX
+ pci:v0000102Bd00000540sv0000102Bsd00002080*
+- ID_MODEL_FROM_DATABASE=M9140 LP PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9140 LP PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd000020C0*
+- ID_MODEL_FROM_DATABASE=Xenia
++ ID_MODEL_FROM_DATABASE=M91XX (Xenia)
+ pci:v0000102Bd00000540sv0000102Bsd000020C1*
+- ID_MODEL_FROM_DATABASE=Xenia Pro
++ ID_MODEL_FROM_DATABASE=M91XX (Xenia Pro)
+ pci:v0000102Bd00000540sv0000102Bsd00002100*
+- ID_MODEL_FROM_DATABASE=M9120 PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9120 PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd00002140*
+- ID_MODEL_FROM_DATABASE=M9125 PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9125 PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd00002180*
+- ID_MODEL_FROM_DATABASE=M9120 Plus LP PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9120 Plus LP PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd000021C0*
+- ID_MODEL_FROM_DATABASE=M9120 Plus LP PCIe x1
++ ID_MODEL_FROM_DATABASE=M91XX (M9120 Plus LP PCIe x1)
+ pci:v0000102Bd00000540sv0000102Bsd00002200*
+- ID_MODEL_FROM_DATABASE=VDA1164 Output Board
++ ID_MODEL_FROM_DATABASE=M91XX (VDA1164 Output Board)
+ pci:v0000102Bd00000540sv0000102Bsd00002240*
+- ID_MODEL_FROM_DATABASE=M9148 LP PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9148 LP PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd00002241*
+- ID_MODEL_FROM_DATABASE=M9138 LP PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9138 LP PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd00002280*
+- ID_MODEL_FROM_DATABASE=M9188 ATX PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9188 ATX PCIe x16)
+ pci:v0000102Bd00000540sv0000102Bsd000022C0*
+- ID_MODEL_FROM_DATABASE=M9128 LP PCIe x16
++ ID_MODEL_FROM_DATABASE=M91XX (M9128 LP PCIe x16)
+ pci:v0000102Bd00000D10*
+  ID_MODEL_FROM_DATABASE=MGA Ultima/Impression
+@@ -12342,34 +12342,34 @@ pci:v0000102Bd00001000*
+  ID_MODEL_FROM_DATABASE=MGA G100 [Productiva]
+ pci:v0000102Bd00001000sv0000102Bsd0000FF01*
+- ID_MODEL_FROM_DATABASE=Productiva G100
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] (Productiva G100)
+ pci:v0000102Bd00001000sv0000102Bsd0000FF05*
+- ID_MODEL_FROM_DATABASE=Productiva G100 Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] (Productiva G100 Multi-Monitor)
+ pci:v0000102Bd00001001*
+  ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP
+ pci:v0000102Bd00001001sv0000102Bsd00001001*
+- ID_MODEL_FROM_DATABASE=MGA-G100 AGP
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (MGA-G100 AGP)
+ pci:v0000102Bd00001001sv0000102Bsd0000FF00*
+- ID_MODEL_FROM_DATABASE=MGA-G100 AGP
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (MGA-G100 AGP)
+ pci:v0000102Bd00001001sv0000102Bsd0000FF01*
+- ID_MODEL_FROM_DATABASE=MGA-G100 Productiva AGP
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (MGA-G100 Productiva AGP)
+ pci:v0000102Bd00001001sv0000102Bsd0000FF03*
+- ID_MODEL_FROM_DATABASE=Millennium G100 AGP
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (Millennium G100 AGP)
+ pci:v0000102Bd00001001sv0000102Bsd0000FF04*
+- ID_MODEL_FROM_DATABASE=MGA-G100 AGP
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (MGA-G100 AGP)
+ pci:v0000102Bd00001001sv0000102Bsd0000FF05*
+- ID_MODEL_FROM_DATABASE=MGA-G100 Productiva AGP Multi-Monitor
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (MGA-G100 Productiva AGP Multi-Monitor)
+ pci:v0000102Bd00001001sv0000110Asd0000001E*
+- ID_MODEL_FROM_DATABASE=MGA-G100 AGP
++ ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP (MGA-G100 AGP)
+ pci:v0000102Bd00002007*
+  ID_MODEL_FROM_DATABASE=MGA Mistral
+@@ -12378,163 +12378,163 @@ pci:v0000102Bd00002527*
+  ID_MODEL_FROM_DATABASE=Millennium G550
+ pci:v0000102Bd00002527sv0000102Bsd00000F42*
+- ID_MODEL_FROM_DATABASE=Matrox G550 Low Profile PCI
++ ID_MODEL_FROM_DATABASE=Millennium G550 (Matrox G550 Low Profile PCI)
+ pci:v0000102Bd00002527sv0000102Bsd00000F83*
+  ID_MODEL_FROM_DATABASE=Millennium G550
+ pci:v0000102Bd00002527sv0000102Bsd00000F84*
+- ID_MODEL_FROM_DATABASE=Millennium G550 Dual Head DDR 32Mb
++ ID_MODEL_FROM_DATABASE=Millennium G550 (Dual Head DDR 32Mb)
+ pci:v0000102Bd00002527sv0000102Bsd00001E41*
+  ID_MODEL_FROM_DATABASE=Millennium G550
+ pci:v0000102Bd00002527sv0000102Bsd00002300*
+- ID_MODEL_FROM_DATABASE=Millennium G550 LP PCIE
++ ID_MODEL_FROM_DATABASE=Millennium G550 (LP PCIE)
+ pci:v0000102Bd00002537*
+  ID_MODEL_FROM_DATABASE=Millenium P650/P750
+ pci:v0000102Bd00002537sv0000102Bsd00001820*
+- ID_MODEL_FROM_DATABASE=Millennium P750 64MB
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Millennium P750 64MB)
+ pci:v0000102Bd00002537sv0000102Bsd00001830*
+- ID_MODEL_FROM_DATABASE=Millennium P650 64MB
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Millennium P650 64MB)
+ pci:v0000102Bd00002537sv0000102Bsd00001850*
+- ID_MODEL_FROM_DATABASE=RAD2mp
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (RAD2mp)
+ pci:v0000102Bd00002537sv0000102Bsd00001860*
+- ID_MODEL_FROM_DATABASE=RAD3mp
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (RAD3mp)
+ pci:v0000102Bd00002537sv0000102Bsd00001880*
+- ID_MODEL_FROM_DATABASE=Sono S10
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Sono S10)
+ pci:v0000102Bd00002537sv0000102Bsd00001C10*
+- ID_MODEL_FROM_DATABASE=QID 128MB
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (QID 128MB)
+ pci:v0000102Bd00002537sv0000102Bsd00002811*
+- ID_MODEL_FROM_DATABASE=Millennium P650 Low-profile PCI 64MB
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Millennium P650 Low-profile PCI 64MB)
+ pci:v0000102Bd00002537sv0000102Bsd00002821*
+- ID_MODEL_FROM_DATABASE=Millenium P650 Low-profile PCI
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Millenium P650 Low-profile PCI)
+ pci:v0000102Bd00002537sv0000102Bsd00002841*
+- ID_MODEL_FROM_DATABASE=RAD PCI
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (RAD PCI)
+ pci:v0000102Bd00002537sv0000102Bsd00002851*
+- ID_MODEL_FROM_DATABASE=Spectrum PCI
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Spectrum PCI)
+ pci:v0000102Bd00002537sv0000102Bsd00002871*
+- ID_MODEL_FROM_DATABASE=EpicA TC2
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (EpicA TC2)
+ pci:v0000102Bd00002537sv0000102Bsd00002C11*
+- ID_MODEL_FROM_DATABASE=QID Low-profile PCI
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (QID Low-profile PCI)
+ pci:v0000102Bd00002537sv0000102Bsd00002C21*
+- ID_MODEL_FROM_DATABASE=QID LP PCI LW
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (QID LP PCI LW)
+ pci:v0000102Bd00002537sv0000102Bsd00002C31*
+- ID_MODEL_FROM_DATABASE=QID LP PCI
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (QID LP PCI)
+ pci:v0000102Bd00002537sv0000102Bsd00002C41*
+- ID_MODEL_FROM_DATABASE=EpicA TC4
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (EpicA TC4)
+ pci:v0000102Bd00002537sv0000102Bsd00003001*
+- ID_MODEL_FROM_DATABASE=Extio F1400
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Extio F1400)
+ pci:v0000102Bd00002537sv0000102Bsd00003011*
+- ID_MODEL_FROM_DATABASE=Extio F1220
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Extio F1220)
+ pci:v0000102Bd00002537sv0000102Bsd00003041*
+- ID_MODEL_FROM_DATABASE=RG-200DL
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (RG-200DL)
+ pci:v0000102Bd00002537sv0000102Bsd00003051*
+- ID_MODEL_FROM_DATABASE=RG-400SL
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (RG-400SL)
+ pci:v0000102Bd00002537sv0000102Bsd00003061*
+- ID_MODEL_FROM_DATABASE=Extio F1420
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Extio F1420)
+ pci:v0000102Bd00002537sv0000102Bsd00003081*
+- ID_MODEL_FROM_DATABASE=Extio F1240
++ ID_MODEL_FROM_DATABASE=Millenium P650/P750 (Extio F1240)
+ pci:v0000102Bd00002538*
+  ID_MODEL_FROM_DATABASE=Millenium P650 PCIe
+ pci:v0000102Bd00002538sv0000102Bsd00000847*
+- ID_MODEL_FROM_DATABASE=RAD PCIe
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (RAD PCIe)
+ pci:v0000102Bd00002538sv0000102Bsd000008C7*
+- ID_MODEL_FROM_DATABASE=Millennium P650 PCIe 128MB
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Millennium P650 PCIe 128MB)
+ pci:v0000102Bd00002538sv0000102Bsd00000907*
+- ID_MODEL_FROM_DATABASE=Millennium P650 PCIe 64MB
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Millennium P650 PCIe 64MB)
+ pci:v0000102Bd00002538sv0000102Bsd00000947*
+- ID_MODEL_FROM_DATABASE=Parhelia APVe
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Parhelia APVe)
+ pci:v0000102Bd00002538sv0000102Bsd00000987*
+- ID_MODEL_FROM_DATABASE=ATC PCIe 4MP
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (ATC PCIe 4MP)
+ pci:v0000102Bd00002538sv0000102Bsd00001047*
+- ID_MODEL_FROM_DATABASE=Millennium P650 LP PCIe 128MB
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Millennium P650 LP PCIe 128MB)
+ pci:v0000102Bd00002538sv0000102Bsd00001087*
+- ID_MODEL_FROM_DATABASE=Millennium P650 LP PCIe 64MB
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Millennium P650 LP PCIe 64MB)
+ pci:v0000102Bd00002538sv0000102Bsd00001801*
+- ID_MODEL_FROM_DATABASE=Millenium P650 PCIe x1
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (x1)
+ pci:v0000102Bd00002538sv0000102Bsd00002538*
+- ID_MODEL_FROM_DATABASE=Parhelia APVe
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Parhelia APVe)
+ pci:v0000102Bd00002538sv0000102Bsd00003007*
+- ID_MODEL_FROM_DATABASE=QID Low-profile PCIe
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (QID Low-profile PCIe)
+ pci:v0000102Bd00002538sv0000102Bsd00003087*
+- ID_MODEL_FROM_DATABASE=Aurora VX3mp
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (Aurora VX3mp)
+ pci:v0000102Bd00002538sv0000102Bsd000030C7*
+- ID_MODEL_FROM_DATABASE=QID LP PCIe
++ ID_MODEL_FROM_DATABASE=Millenium P650 PCIe (QID LP PCIe)
+ pci:v0000102Bd00002539*
+  ID_MODEL_FROM_DATABASE=Millennium P690
+ pci:v0000102Bd00002539sv0000102Bsd00000040*
+- ID_MODEL_FROM_DATABASE=Millenium P690 PCIe x16
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 PCIe x16)
+ pci:v0000102Bd00002539sv0000102Bsd00000042*
+- ID_MODEL_FROM_DATABASE=ONYX
++ ID_MODEL_FROM_DATABASE=Millennium P690 (ONYX)
+ pci:v0000102Bd00002539sv0000102Bsd00000043*
+- ID_MODEL_FROM_DATABASE=SPECTRA
++ ID_MODEL_FROM_DATABASE=Millennium P690 (SPECTRA)
+ pci:v0000102Bd00002539sv0000102Bsd00000080*
+- ID_MODEL_FROM_DATABASE=Millenium P690 Plus LP PCIe x16
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 Plus LP PCIe x16)
+ pci:v0000102Bd00002539sv0000102Bsd00000081*
+- ID_MODEL_FROM_DATABASE=Millenium P690 LP PCIe x16
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 LP PCIe x16)
+ pci:v0000102Bd00002539sv0000102Bsd00000082*
+- ID_MODEL_FROM_DATABASE=RAD LPX PCIe x16
++ ID_MODEL_FROM_DATABASE=Millennium P690 (RAD LPX PCIe x16)
+ pci:v0000102Bd00002539sv0000102Bsd000000C0*
+- ID_MODEL_FROM_DATABASE=Millenium P690 Plus LP PCI
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 Plus LP PCI)
+ pci:v0000102Bd00002539sv0000102Bsd000000C2*
+- ID_MODEL_FROM_DATABASE=Millenium P690 LP PCI
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 LP PCI)
+ pci:v0000102Bd00002539sv0000102Bsd000000C3*
+- ID_MODEL_FROM_DATABASE=RAD LPX PCI
++ ID_MODEL_FROM_DATABASE=Millennium P690 (RAD LPX PCI)
+ pci:v0000102Bd00002539sv0000102Bsd00000101*
+- ID_MODEL_FROM_DATABASE=Millenium P690 PCI
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 PCI)
+ pci:v0000102Bd00002539sv0000102Bsd00000140*
+- ID_MODEL_FROM_DATABASE=Millenium P690 LP PCIe x1
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Millenium P690 LP PCIe x1)
+ pci:v0000102Bd00002539sv0000102Bsd00000180*
+- ID_MODEL_FROM_DATABASE=Display Wall IP Decode 128 MB
++ ID_MODEL_FROM_DATABASE=Millennium P690 (Display Wall IP Decode 128 MB)
+ pci:v0000102Bd00004164*
+  ID_MODEL_FROM_DATABASE=Morphis QxT frame grabber
+@@ -12558,43 +12558,43 @@ pci:v0000102Bd0000475D*
+  ID_MODEL_FROM_DATABASE=Vio frame grabber family
+ pci:v0000102Bd0000475Dsv0000102Bsd00004B90*
+- ID_MODEL_FROM_DATABASE=Vio Duo frame grabber (single channel)
++ ID_MODEL_FROM_DATABASE=Vio frame grabber family (Vio Duo frame grabber (single channel))
+ pci:v0000102Bd0000475Dsv0000102Bsd00004B91*
+- ID_MODEL_FROM_DATABASE=Vio Duo frame grabber
++ ID_MODEL_FROM_DATABASE=Vio frame grabber family (Vio Duo frame grabber)
+ pci:v0000102Bd0000475Dsv0000102Bsd00004B92*
+- ID_MODEL_FROM_DATABASE=Vio Analog frame grabber
++ ID_MODEL_FROM_DATABASE=Vio frame grabber family (Vio Analog frame grabber)
+ pci:v0000102Bd0000475Dsv0000102Bsd00004B93*
+- ID_MODEL_FROM_DATABASE=Vio SDI Frame Grabber
++ ID_MODEL_FROM_DATABASE=Vio frame grabber family (Vio SDI Frame Grabber)
+ pci:v0000102Bd0000475Dsv0000102Bsd00004B94*
+- ID_MODEL_FROM_DATABASE=Vio DVI-A frame grabber
++ ID_MODEL_FROM_DATABASE=Vio frame grabber family (Vio DVI-A frame grabber)
+ pci:v0000102Bd0000475F*
+  ID_MODEL_FROM_DATABASE=Solios (single-Full) CL frame grabber
+ pci:v0000102Bd0000475Fsv0000102Bsd0000475F*
+- ID_MODEL_FROM_DATABASE=Solios eCL/XCL-F frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (single-Full) CL frame grabber (Solios eCL/XCL-F frame grabber)
+ pci:v0000102Bd0000475Fsv0000102Bsd00004D5F*
+- ID_MODEL_FROM_DATABASE=Solios eV-CL (single-Full) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (single-Full) CL frame grabber (Solios eV-CL (single-Full) frame grabber)
+ pci:v0000102Bd0000475Fsv0000102Bsd00004E5F*
+- ID_MODEL_FROM_DATABASE=Solios eM-CL (single-Full) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (single-Full) CL frame grabber (Solios eM-CL (single-Full) frame grabber)
+ pci:v0000102Bd000047A1*
+  ID_MODEL_FROM_DATABASE=Solios eA/XA frame grabber
+ pci:v0000102Bd000047A1sv0000102Bsd00004BE0*
+- ID_MODEL_FROM_DATABASE=Solios eA/XA (single) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios eA/XA frame grabber (Solios eA/XA (single) frame grabber)
+ pci:v0000102Bd000047A1sv0000102Bsd00004BE1*
+- ID_MODEL_FROM_DATABASE=Solios eA/XA (dual) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios eA/XA frame grabber (Solios eA/XA (dual) frame grabber)
+ pci:v0000102Bd000047A1sv0000102Bsd00004BE2*
+- ID_MODEL_FROM_DATABASE=Solios eA/XA (quad) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios eA/XA frame grabber (Solios eA/XA (quad) frame grabber)
+ pci:v0000102Bd000047A2*
+  ID_MODEL_FROM_DATABASE=Solios COM port
+@@ -12603,25 +12603,25 @@ pci:v0000102Bd000047C1*
+  ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber
+ pci:v0000102Bd000047C1sv0000102Bsd00000000*
+- ID_MODEL_FROM_DATABASE=Solios frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios frame grabber)
+ pci:v0000102Bd000047C1sv0000102Bsd00004B80*
+- ID_MODEL_FROM_DATABASE=Solios eCL/XCL (single-Medium) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios eCL/XCL (single-Medium) frame grabber)
+ pci:v0000102Bd000047C1sv0000102Bsd00004B81*
+- ID_MODEL_FROM_DATABASE=Solios eCL/XCL (dual-Base) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios eCL/XCL (dual-Base) frame grabber)
+ pci:v0000102Bd000047C1sv0000102Bsd00004D80*
+- ID_MODEL_FROM_DATABASE=Solios eV-CL (single-Medium) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios eV-CL (single-Medium) frame grabber)
+ pci:v0000102Bd000047C1sv0000102Bsd00004D81*
+- ID_MODEL_FROM_DATABASE=Solios eV-CL (dual-Base) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios eV-CL (dual-Base) frame grabber)
+ pci:v0000102Bd000047C1sv0000102Bsd00004E80*
+- ID_MODEL_FROM_DATABASE=Solios eM-CL (single-Medium) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios eM-CL (single-Medium) frame grabber)
+ pci:v0000102Bd000047C1sv0000102Bsd00004E81*
+- ID_MODEL_FROM_DATABASE=Solios eM-CL (dual-Base) frame grabber
++ ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber (Solios eM-CL (dual-Base) frame grabber)
+ pci:v0000102Bd000047C2*
+  ID_MODEL_FROM_DATABASE=Solios COM port
+@@ -12630,34 +12630,34 @@ pci:v0000102Bd00004949*
+  ID_MODEL_FROM_DATABASE=Radient frame grabber family
+ pci:v0000102Bd00004949sv0000102Bsd00000010*
+- ID_MODEL_FROM_DATABASE=Radient eCL (Single-full) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eCL (Single-full) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00000011*
+- ID_MODEL_FROM_DATABASE=Radient eCLV (Single-full) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eCLV (Single-full) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00000020*
+- ID_MODEL_FROM_DATABASE=Radient eCL (Dual-base) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eCL (Dual-base) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00000030*
+- ID_MODEL_FROM_DATABASE=Radient eCL (Dual-full) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eCL (Dual-full) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00000040*
+- ID_MODEL_FROM_DATABASE=Radient eCL (Quad-base) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eCL (Quad-base) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00000050*
+- ID_MODEL_FROM_DATABASE=Radient eCL (Golden) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eCL (Golden) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00001010*
+- ID_MODEL_FROM_DATABASE=Radient eV-CXP (quad CXP-6) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eV-CXP (quad CXP-6) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00001015*
+- ID_MODEL_FROM_DATABASE=Radient eV-CXP (dual CXP-6) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eV-CXP (dual CXP-6) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00001020*
+- ID_MODEL_FROM_DATABASE=Radient eV-CXP (quad CXP-3) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eV-CXP (quad CXP-3) frame grabber)
+ pci:v0000102Bd00004949sv0000102Bsd00001050*
+- ID_MODEL_FROM_DATABASE=Radient eV-CXP (Golden) frame grabber
++ ID_MODEL_FROM_DATABASE=Radient frame grabber family (Radient eV-CXP (Golden) frame grabber)
+ pci:v0000102Bd00004CDC*
+  ID_MODEL_FROM_DATABASE=Morphis JPEG2000 accelerator
+@@ -12687,22 +12687,22 @@ pci:v0000102Cd000000C0sv0000102Csd000000C0*
+  ID_MODEL_FROM_DATABASE=F69000 HiQVideo
+ pci:v0000102Cd000000C0sv00004C53sd00001000*
+- ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard
++ ID_MODEL_FROM_DATABASE=F69000 HiQVideo (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
+ pci:v0000102Cd000000C0sv00004C53sd00001010*
+- ID_MODEL_FROM_DATABASE=CP5/CR6 mainboard
++ ID_MODEL_FROM_DATABASE=F69000 HiQVideo (CP5/CR6 mainboard)
+ pci:v0000102Cd000000C0sv00004C53sd00001020*
+- ID_MODEL_FROM_DATABASE=VR6 mainboard
++ ID_MODEL_FROM_DATABASE=F69000 HiQVideo (VR6 mainboard)
+ pci:v0000102Cd000000C0sv00004C53sd00001030*
+- ID_MODEL_FROM_DATABASE=PC5 mainboard
++ ID_MODEL_FROM_DATABASE=F69000 HiQVideo (PC5 mainboard)
+ pci:v0000102Cd000000C0sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=F69000 HiQVideo (CT7 mainboard)
+ pci:v0000102Cd000000C0sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=F69000 HiQVideo (CE7 mainboard)
+ pci:v0000102Cd000000D0*
+  ID_MODEL_FROM_DATABASE=F65545
+@@ -12723,10 +12723,10 @@ pci:v0000102Cd000000E5*
+  ID_MODEL_FROM_DATABASE=F65555 HiQVPro
+ pci:v0000102Cd000000E5sv00000E11sd0000B049*
+- ID_MODEL_FROM_DATABASE=Armada 1700 Laptop Display Controller
++ ID_MODEL_FROM_DATABASE=F65555 HiQVPro (Armada 1700 Laptop Display Controller)
+ pci:v0000102Cd000000E5sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Satellite Pro/Satellite
++ ID_MODEL_FROM_DATABASE=F65555 HiQVPro (Satellite Pro/Satellite)
+ pci:v0000102Cd000000F0*
+  ID_MODEL_FROM_DATABASE=F68554
+@@ -12741,16 +12741,16 @@ pci:v0000102Cd00000C30*
+  ID_MODEL_FROM_DATABASE=F69030
+ pci:v0000102Cd00000C30sv00004C53sd00001000*
+- ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard
++ ID_MODEL_FROM_DATABASE=F69030 (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
+ pci:v0000102Cd00000C30sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=F69030 (CT7 mainboard)
+ pci:v0000102Cd00000C30sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=F69030 (CE7 mainboard)
+ pci:v0000102Cd00000C30sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=F69030 (CT8 mainboard)
+ pci:v0000102D*
+  ID_VENDOR_FROM_DATABASE=Wyse Technology Inc.
+@@ -12894,34 +12894,34 @@ pci:v00001033d00000035*
+  ID_MODEL_FROM_DATABASE=OHCI USB Controller
+ pci:v00001033d00000035sv00001033sd00000035*
+- ID_MODEL_FROM_DATABASE=USB Controller
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (USB Controller)
+ pci:v00001033d00000035sv0000103Csd00001293*
+- ID_MODEL_FROM_DATABASE=USB add-in card
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (USB add-in card)
+ pci:v00001033d00000035sv0000103Csd00001294*
+- ID_MODEL_FROM_DATABASE=USB 2.0 add-in card
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (USB 2.0 add-in card)
+ pci:v00001033d00000035sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=USB
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (USB)
+ pci:v00001033d00000035sv000012EEsd00007000*
+- ID_MODEL_FROM_DATABASE=Root Hub
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (Root Hub)
+ pci:v00001033d00000035sv000014C2sd00000105*
+- ID_MODEL_FROM_DATABASE=PTI-205N USB 2.0 Host Controller
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (PTI-205N USB 2.0 Host Controller)
+ pci:v00001033d00000035sv00001799sd00000001*
+- ID_MODEL_FROM_DATABASE=Root Hub
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (Root Hub)
+ pci:v00001033d00000035sv00001931sd0000000A*
+- ID_MODEL_FROM_DATABASE=GlobeTrotter Fusion Quad Lite (PPP data)
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (GlobeTrotter Fusion Quad Lite (PPP data))
+ pci:v00001033d00000035sv00001931sd0000000B*
+- ID_MODEL_FROM_DATABASE=GlobeTrotter Fusion Quad Lite (GSM data)
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (GlobeTrotter Fusion Quad Lite (GSM data))
+ pci:v00001033d00000035sv0000807Dsd00000035*
+- ID_MODEL_FROM_DATABASE=PCI-USB2 (OHCI subsystem)
++ ID_MODEL_FROM_DATABASE=OHCI USB Controller (PCI-USB2 (OHCI subsystem))
+ pci:v00001033d0000003B*
+  ID_MODEL_FROM_DATABASE=PCI to C-bus Bridge
+@@ -12942,28 +12942,28 @@ pci:v00001033d00000067*
+  ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset
+ pci:v00001033d00000067sv00001010sd00000020*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 AGP 32Mb)
+ pci:v00001033d00000067sv00001010sd00000080*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 16Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 AGP 16Mb)
+ pci:v00001033d00000067sv00001010sd00000088*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 16Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 16Mb)
+ pci:v00001033d00000067sv00001010sd00000090*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 16Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 AGP 16Mb)
+ pci:v00001033d00000067sv00001010sd00000098*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 16Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 16Mb)
+ pci:v00001033d00000067sv00001010sd000000A0*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 AGP 32Mb)
+ pci:v00001033d00000067sv00001010sd000000A8*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 32Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 32Mb)
+ pci:v00001033d00000067sv00001010sd00000120*
+- ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb
++ ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset (PowerVR Neon 250 AGP 32Mb)
+ pci:v00001033d00000072*
+  ID_MODEL_FROM_DATABASE=uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr
+@@ -12972,7 +12972,7 @@ pci:v00001033d00000074*
+  ID_MODEL_FROM_DATABASE=56k Voice Modem
+ pci:v00001033d00000074sv00001033sd00008014*
+- ID_MODEL_FROM_DATABASE=RCV56ACF 56k Voice Modem
++ ID_MODEL_FROM_DATABASE=56k Voice Modem (RCV56ACF 56k Voice Modem)
+ pci:v00001033d0000009B*
+  ID_MODEL_FROM_DATABASE=Vrc5476
+@@ -12987,7 +12987,7 @@ pci:v00001033d000000CD*
+  ID_MODEL_FROM_DATABASE=uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller
+ pci:v00001033d000000CDsv000012EEsd00008011*
+- ID_MODEL_FROM_DATABASE=Root hub
++ ID_MODEL_FROM_DATABASE=uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller (Root hub)
+ pci:v00001033d000000CE*
+  ID_MODEL_FROM_DATABASE=uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller
+@@ -12999,16 +12999,16 @@ pci:v00001033d000000E0*
+  ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller
+ pci:v00001033d000000E0sv000012EEsd00007001*
+- ID_MODEL_FROM_DATABASE=Root hub
++ ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller (Root hub)
+ pci:v00001033d000000E0sv000014C2sd00000205*
+- ID_MODEL_FROM_DATABASE=PTI-205N USB 2.0 Host Controller
++ ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller (PTI-205N USB 2.0 Host Controller)
+ pci:v00001033d000000E0sv00001799sd00000002*
+- ID_MODEL_FROM_DATABASE=Root Hub
++ ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller (Root Hub)
+ pci:v00001033d000000E0sv0000807Dsd00001043*
+- ID_MODEL_FROM_DATABASE=PCI-USB2 (EHCI subsystem)
++ ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller (PCI-USB2 (EHCI subsystem))
+ pci:v00001033d000000E7*
+  ID_MODEL_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller
+@@ -13032,22 +13032,22 @@ pci:v00001033d00000194*
+  ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller
+ pci:v00001033d00000194sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller (Precision M4600)
+ pci:v00001033d00000194sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller (Vostro 3350)
+ pci:v00001033d00000194sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller (Vostro 3750)
+ pci:v00001033d00000194sv00001043sd00008413*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller (P8P67 Deluxe Motherboard)
+ pci:v00001033d00000194sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller (QEMU Virtual Machine)
+ pci:v00001033d00000194sv00001B96sd00000001*
+- ID_MODEL_FROM_DATABASE=USB 3.0 PCIe Card
++ ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller (USB 3.0 PCIe Card)
+ pci:v00001033d000001E7*
+  ID_MODEL_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller
+@@ -13116,7 +13116,7 @@ pci:v00001039d00000182*
+  ID_MODEL_FROM_DATABASE=182 SATA/RAID Controller
+ pci:v00001039d00000182sv00001734sd00001095*
+- ID_MODEL_FROM_DATABASE=D2030-A1
++ ID_MODEL_FROM_DATABASE=182 SATA/RAID Controller (D2030-A1)
+ pci:v00001039d00000186*
+  ID_MODEL_FROM_DATABASE=AHCI Controller (0106)
+@@ -13131,7 +13131,7 @@ pci:v00001039d00000200*
+  ID_MODEL_FROM_DATABASE=5597/5598/6326 VGA
+ pci:v00001039d00000200sv00001039sd00000000*
+- ID_MODEL_FROM_DATABASE=SiS5597 SVGA (Shared RAM)
++ ID_MODEL_FROM_DATABASE=5597/5598/6326 VGA (SiS5597 SVGA (Shared RAM))
+ pci:v00001039d00000204*
+  ID_MODEL_FROM_DATABASE=82C204
+@@ -13143,7 +13143,7 @@ pci:v00001039d00000300*
+  ID_MODEL_FROM_DATABASE=300/305 PCI/AGP VGA Display Adapter
+ pci:v00001039d00000300sv0000107Dsd00002720*
+- ID_MODEL_FROM_DATABASE=Leadtek WinFast VR300
++ ID_MODEL_FROM_DATABASE=300/305 PCI/AGP VGA Display Adapter (Leadtek WinFast VR300)
+ pci:v00001039d00000310*
+  ID_MODEL_FROM_DATABASE=315H PCI/AGP VGA Display Adapter
+@@ -13239,7 +13239,7 @@ pci:v00001039d00000741*
+  ID_MODEL_FROM_DATABASE=741/741GX/M741 Host
+ pci:v00001039d00000741sv00001849sd00000741*
+- ID_MODEL_FROM_DATABASE=K7S41/K7S41GX motherboard
++ ID_MODEL_FROM_DATABASE=741/741GX/M741 Host (K7S41/K7S41GX motherboard)
+ pci:v00001039d00000745*
+  ID_MODEL_FROM_DATABASE=745 Host
+@@ -13257,25 +13257,25 @@ pci:v00001039d00000761*
+  ID_MODEL_FROM_DATABASE=761/M761 Host
+ pci:v00001039d00000761sv00001734sd00001099*
+- ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard
++ ID_MODEL_FROM_DATABASE=761/M761 Host (D2030-A1 Motherboard)
+ pci:v00001039d00000900*
+  ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet
+ pci:v00001039d00000900sv00001019sd00000A14*
+- ID_MODEL_FROM_DATABASE=K7S5A motherboard
++ ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet (K7S5A motherboard)
+ pci:v00001039d00000900sv00001039sd00000900*
+- ID_MODEL_FROM_DATABASE=SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA]
++ ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet (SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA])
+ pci:v00001039d00000900sv00001043sd00008035*
+- ID_MODEL_FROM_DATABASE=CUSI-FX motherboard
++ ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet (CUSI-FX motherboard)
+ pci:v00001039d00000900sv00001043sd000080A7*
+- ID_MODEL_FROM_DATABASE=Motherboard P4S800D-X
++ ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet (Motherboard P4S800D-X)
+ pci:v00001039d00000900sv00001462sd00000900*
+- ID_MODEL_FROM_DATABASE=MS-6701 motherboard
++ ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet (MS-6701 motherboard)
+ pci:v00001039d00000961*
+  ID_MODEL_FROM_DATABASE=SiS961 [MuTIOL Media IO]
+@@ -13335,22 +13335,22 @@ pci:v00001039d00005513*
+  ID_MODEL_FROM_DATABASE=5513 IDE Controller
+ pci:v00001039d00005513sv00001019sd00000970*
+- ID_MODEL_FROM_DATABASE=P6STP-FL motherboard
++ ID_MODEL_FROM_DATABASE=5513 IDE Controller (P6STP-FL motherboard)
+ pci:v00001039d00005513sv00001039sd00005513*
+- ID_MODEL_FROM_DATABASE=SiS5513 EIDE Controller (A,B step)
++ ID_MODEL_FROM_DATABASE=5513 IDE Controller (SiS5513 EIDE Controller (A,B step))
+ pci:v00001039d00005513sv00001043sd00008035*
+- ID_MODEL_FROM_DATABASE=CUSI-FX motherboard
++ ID_MODEL_FROM_DATABASE=5513 IDE Controller (CUSI-FX motherboard)
+ pci:v00001039d00005513sv00001462sd00007010*
+- ID_MODEL_FROM_DATABASE=MS-6701 motherboard
++ ID_MODEL_FROM_DATABASE=5513 IDE Controller (MS-6701 motherboard)
+ pci:v00001039d00005513sv00001631sd00005513*
+- ID_MODEL_FROM_DATABASE=GA-8SIML Rev1.0 Motherboard
++ ID_MODEL_FROM_DATABASE=5513 IDE Controller (GA-8SIML Rev1.0 Motherboard)
+ pci:v00001039d00005513sv00001734sd00001095*
+- ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard
++ ID_MODEL_FROM_DATABASE=5513 IDE Controller (D2030-A1 Motherboard)
+ pci:v00001039d00005517*
+  ID_MODEL_FROM_DATABASE=5517
+@@ -13389,13 +13389,13 @@ pci:v00001039d00006300*
+  ID_MODEL_FROM_DATABASE=630/730 PCI/AGP VGA Display Adapter
+ pci:v00001039d00006300sv00001019sd00000970*
+- ID_MODEL_FROM_DATABASE=P6STP-FL motherboard
++ ID_MODEL_FROM_DATABASE=630/730 PCI/AGP VGA Display Adapter (P6STP-FL motherboard)
+ pci:v00001039d00006300sv00001043sd00008035*
+- ID_MODEL_FROM_DATABASE=CUSI-FX motherboard
++ ID_MODEL_FROM_DATABASE=630/730 PCI/AGP VGA Display Adapter (CUSI-FX motherboard)
+ pci:v00001039d00006300sv0000104Dsd000080E2*
+- ID_MODEL_FROM_DATABASE=VAIO PCV-J200
++ ID_MODEL_FROM_DATABASE=630/730 PCI/AGP VGA Display Adapter (VAIO PCV-J200)
+ pci:v00001039d00006306*
+  ID_MODEL_FROM_DATABASE=530/620 PCI/AGP VGA Display Adapter
+@@ -13404,49 +13404,49 @@ pci:v00001039d00006325*
+  ID_MODEL_FROM_DATABASE=65x/M650/740 PCI/AGP VGA Display Adapter
+ pci:v00001039d00006325sv00001039sd00006325*
+- ID_MODEL_FROM_DATABASE=SiS 651 onboard [Asus P4SC-EA]
++ ID_MODEL_FROM_DATABASE=65x/M650/740 PCI/AGP VGA Display Adapter (SiS 651 onboard [Asus P4SC-EA])
+ pci:v00001039d00006325sv00001631sd00001004*
+- ID_MODEL_FROM_DATABASE=SiS 651C onboard [Gigabyte GA-8SIML Rev1.0]
++ ID_MODEL_FROM_DATABASE=65x/M650/740 PCI/AGP VGA Display Adapter (SiS 651C onboard [Gigabyte GA-8SIML Rev1.0])
+ pci:v00001039d00006326*
+  ID_MODEL_FROM_DATABASE=86C326 5598/6326
+ pci:v00001039d00006326sv00001039sd00006326*
+- ID_MODEL_FROM_DATABASE=SiS6326 GUI Accelerator
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (SiS6326 GUI Accelerator)
+ pci:v00001039d00006326sv00001092sd00000A50*
+- ID_MODEL_FROM_DATABASE=SpeedStar A50
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (SpeedStar A50)
+ pci:v00001039d00006326sv00001092sd00000A70*
+- ID_MODEL_FROM_DATABASE=SpeedStar A70
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (SpeedStar A70)
+ pci:v00001039d00006326sv00001092sd00004910*
+- ID_MODEL_FROM_DATABASE=SpeedStar A70
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (SpeedStar A70)
+ pci:v00001039d00006326sv00001092sd00004920*
+- ID_MODEL_FROM_DATABASE=SpeedStar A70
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (SpeedStar A70)
+ pci:v00001039d00006326sv000010B0sd00006326*
+- ID_MODEL_FROM_DATABASE=S6110-B (AGP)
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (S6110-B (AGP))
+ pci:v00001039d00006326sv00001569sd00006326*
+- ID_MODEL_FROM_DATABASE=SiS6326 GUI Accelerator
++ ID_MODEL_FROM_DATABASE=86C326 5598/6326 (SiS6326 GUI Accelerator)
+ pci:v00001039d00006330*
+  ID_MODEL_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter
+ pci:v00001039d00006330sv00001039sd00006330*
+- ID_MODEL_FROM_DATABASE=[M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter
++ ID_MODEL_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter ([M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter)
+ pci:v00001039d00006330sv00001043sd00008113*
+- ID_MODEL_FROM_DATABASE=SiS Real 256E (ASUS P5S800-VM motherboard)
++ ID_MODEL_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter (SiS Real 256E (ASUS P5S800-VM motherboard))
+ pci:v00001039d00006330sv00001458sd0000D000*
+- ID_MODEL_FROM_DATABASE=SiS661FX GUI 2D/3D Accelerator
++ ID_MODEL_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter (SiS661FX GUI 2D/3D Accelerator)
+ pci:v00001039d00006330sv00001734sd00001099*
+- ID_MODEL_FROM_DATABASE=D2030-A1
++ ID_MODEL_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter (D2030-A1)
+ pci:v00001039d00006350*
+  ID_MODEL_FROM_DATABASE=770/670 PCIE VGA Display Adapter
+@@ -13458,70 +13458,70 @@ pci:v00001039d00007001*
+  ID_MODEL_FROM_DATABASE=USB 1.1 Controller
+ pci:v00001039d00007001sv00001019sd00000A14*
+- ID_MODEL_FROM_DATABASE=K7S5A motherboard
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (K7S5A motherboard)
+ pci:v00001039d00007001sv00001039sd00007000*
+- ID_MODEL_FROM_DATABASE=Onboard USB Controller
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (Onboard USB Controller)
+ pci:v00001039d00007001sv00001462sd00005470*
+- ID_MODEL_FROM_DATABASE=ECS K7SOM+ motherboard
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (ECS K7SOM+ motherboard)
+ pci:v00001039d00007001sv00001462sd00007010*
+- ID_MODEL_FROM_DATABASE=MS-6701 motherboard
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (MS-6701 motherboard)
+ pci:v00001039d00007001sv00001734sd00001095*
+- ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (D2030-A1 Motherboard)
+ pci:v00001039d00007002*
+  ID_MODEL_FROM_DATABASE=USB 2.0 Controller
+ pci:v00001039d00007002sv00001462sd00005470*
+- ID_MODEL_FROM_DATABASE=K7SOM+ 5.2C Motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 Controller (K7SOM+ 5.2C Motherboard)
+ pci:v00001039d00007002sv00001462sd00007010*
+- ID_MODEL_FROM_DATABASE=MS-6701 motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 Controller (MS-6701 motherboard)
+ pci:v00001039d00007002sv00001509sd00007002*
+- ID_MODEL_FROM_DATABASE=Onboard USB Controller
++ ID_MODEL_FROM_DATABASE=USB 2.0 Controller (Onboard USB Controller)
+ pci:v00001039d00007002sv00001734sd00001095*
+- ID_MODEL_FROM_DATABASE=D2030-A1
++ ID_MODEL_FROM_DATABASE=USB 2.0 Controller (D2030-A1)
+ pci:v00001039d00007007*
+  ID_MODEL_FROM_DATABASE=FireWire Controller
+ pci:v00001039d00007007sv00001462sd0000701D*
+- ID_MODEL_FROM_DATABASE=MS-6701
++ ID_MODEL_FROM_DATABASE=FireWire Controller (MS-6701)
+ pci:v00001039d00007012*
+  ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller
+ pci:v00001039d00007012sv00001019sd00000F05*
+- ID_MODEL_FROM_DATABASE=A928 (i-Buddie)
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (A928 (i-Buddie))
+ pci:v00001039d00007012sv00001039sd00007012*
+- ID_MODEL_FROM_DATABASE=SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller)
+ pci:v00001039d00007012sv00001043sd0000818F*
+- ID_MODEL_FROM_DATABASE=A8S-X Motherboard
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (A8S-X Motherboard)
+ pci:v00001039d00007012sv000013F6sd00000300*
+- ID_MODEL_FROM_DATABASE=CMI9739(A) on ECS K7SOM+ motherboard
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (CMI9739(A) on ECS K7SOM+ motherboard)
+ pci:v00001039d00007012sv00001462sd00005850*
+- ID_MODEL_FROM_DATABASE=MSI 648 Max (MS-6585)
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (MSI 648 Max (MS-6585))
+ pci:v00001039d00007012sv00001462sd00007010*
+- ID_MODEL_FROM_DATABASE=MS-6701 motherboard
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (MS-6701 motherboard)
+ pci:v00001039d00007012sv000015BDsd00001001*
+- ID_MODEL_FROM_DATABASE=DFI 661FX motherboard
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (DFI 661FX motherboard)
+ pci:v00001039d00007012sv00001734sd0000109F*
+- ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (D2030-A1 Motherboard)
+ pci:v00001039d00007012sv00001849sd00007012*
+- ID_MODEL_FROM_DATABASE=K7S41GX motherboard
++ ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller (K7S41GX motherboard)
+ pci:v00001039d00007013*
+  ID_MODEL_FROM_DATABASE=AC'97 Modem Controller
+@@ -13530,7 +13530,7 @@ pci:v00001039d00007016*
+  ID_MODEL_FROM_DATABASE=SiS7016 PCI Fast Ethernet Adapter
+ pci:v00001039d00007016sv00001039sd00007016*
+- ID_MODEL_FROM_DATABASE=SiS7016 10/100 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SiS7016 PCI Fast Ethernet Adapter (SiS7016 10/100 Ethernet Adapter)
+ pci:v00001039d00007018*
+  ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator
+@@ -13560,7 +13560,7 @@ pci:v00001039d00007018sv00001043sd0000800B*
+  ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator
+ pci:v00001039d00007018sv0000104Dsd000080E2*
+- ID_MODEL_FROM_DATABASE=VAIO PCV-J200
++ ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator (VAIO PCV-J200)
+ pci:v00001039d00007018sv00001054sd00007018*
+  ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator
+@@ -13635,25 +13635,25 @@ pci:v0000103Cd00001029*
+  ID_MODEL_FROM_DATABASE=Tach XL2 Fibre Channel Host Adapter
+ pci:v0000103Cd00001029sv0000107Esd0000000F*
+- ID_MODEL_FROM_DATABASE=Interphase 5560 Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=Tach XL2 Fibre Channel Host Adapter (Interphase 5560 Fibre Channel Adapter)
+ pci:v0000103Cd00001029sv00009004sd00009210*
+- ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller
++ ID_MODEL_FROM_DATABASE=Tach XL2 Fibre Channel Host Adapter (1Gb/2Gb Family Fibre Channel Controller)
+ pci:v0000103Cd00001029sv00009004sd00009211*
+- ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller
++ ID_MODEL_FROM_DATABASE=Tach XL2 Fibre Channel Host Adapter (1Gb/2Gb Family Fibre Channel Controller)
+ pci:v0000103Cd0000102A*
+  ID_MODEL_FROM_DATABASE=Tach TS Fibre Channel Host Adapter
+ pci:v0000103Cd0000102Asv0000107Esd0000000E*
+- ID_MODEL_FROM_DATABASE=Interphase 5540/5541 Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=Tach TS Fibre Channel Host Adapter (Interphase 5540/5541 Fibre Channel Adapter)
+ pci:v0000103Cd0000102Asv00009004sd00009110*
+- ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller
++ ID_MODEL_FROM_DATABASE=Tach TS Fibre Channel Host Adapter (1Gb/2Gb Family Fibre Channel Controller)
+ pci:v0000103Cd0000102Asv00009004sd00009111*
+- ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller
++ ID_MODEL_FROM_DATABASE=Tach TS Fibre Channel Host Adapter (1Gb/2Gb Family Fibre Channel Controller)
+ pci:v0000103Cd00001030*
+  ID_MODEL_FROM_DATABASE=J2585A DeskDirect 10/100VG NIC
+@@ -13662,13 +13662,13 @@ pci:v0000103Cd00001031*
+  ID_MODEL_FROM_DATABASE=J2585B HP 10/100VG PCI LAN Adapter
+ pci:v0000103Cd00001031sv0000103Csd00001040*
+- ID_MODEL_FROM_DATABASE=J2973A DeskDirect 10BaseT NIC
++ ID_MODEL_FROM_DATABASE=J2585B HP 10/100VG PCI LAN Adapter (J2973A DeskDirect 10BaseT NIC)
+ pci:v0000103Cd00001031sv0000103Csd00001041*
+- ID_MODEL_FROM_DATABASE=J2585B DeskDirect 10/100VG NIC
++ ID_MODEL_FROM_DATABASE=J2585B HP 10/100VG PCI LAN Adapter (J2585B DeskDirect 10/100VG NIC)
+ pci:v0000103Cd00001031sv0000103Csd00001042*
+- ID_MODEL_FROM_DATABASE=J2970A DeskDirect 10BaseT/2 NIC
++ ID_MODEL_FROM_DATABASE=J2585B HP 10/100VG PCI LAN Adapter (J2970A DeskDirect 10BaseT/2 NIC)
+ pci:v0000103Cd00001040*
+  ID_MODEL_FROM_DATABASE=J2973A DeskDirect 10BaseT NIC
+@@ -13683,28 +13683,28 @@ pci:v0000103Cd00001048*
+  ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART
+ pci:v0000103Cd00001048sv0000103Csd00001049*
+- ID_MODEL_FROM_DATABASE=Tosca Console
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Tosca Console)
+ pci:v0000103Cd00001048sv0000103Csd0000104A*
+- ID_MODEL_FROM_DATABASE=Tosca Secondary
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Tosca Secondary)
+ pci:v0000103Cd00001048sv0000103Csd0000104B*
+- ID_MODEL_FROM_DATABASE=Maestro SP2
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Maestro SP2)
+ pci:v0000103Cd00001048sv0000103Csd00001223*
+- ID_MODEL_FROM_DATABASE=Superdome Console
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Superdome Console)
+ pci:v0000103Cd00001048sv0000103Csd00001226*
+- ID_MODEL_FROM_DATABASE=Keystone SP2
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Keystone SP2)
+ pci:v0000103Cd00001048sv0000103Csd00001227*
+- ID_MODEL_FROM_DATABASE=Powerbar SP2
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Powerbar SP2)
+ pci:v0000103Cd00001048sv0000103Csd00001282*
+- ID_MODEL_FROM_DATABASE=Everest SP2
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Everest SP2)
+ pci:v0000103Cd00001048sv0000103Csd00001301*
+- ID_MODEL_FROM_DATABASE=Diva RMP3
++ ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART (Diva RMP3)
+ pci:v0000103Cd00001054*
+  ID_MODEL_FROM_DATABASE=PCI Local Bus Adapter
+@@ -13758,7 +13758,7 @@ pci:v0000103Cd00001290*
+  ID_MODEL_FROM_DATABASE=Auxiliary Diva Serial Port
+ pci:v0000103Cd00001290sv0000103Csd00001291*
+- ID_MODEL_FROM_DATABASE=Diva SP2
++ ID_MODEL_FROM_DATABASE=Auxiliary Diva Serial Port (Diva SP2)
+ pci:v0000103Cd00001291*
+  ID_MODEL_FROM_DATABASE=Auxiliary Diva Serial Port
+@@ -13794,208 +13794,208 @@ pci:v0000103Cd00003220*
+  ID_MODEL_FROM_DATABASE=Smart Array P600
+ pci:v0000103Cd00003220sv0000103Csd00003225*
+- ID_MODEL_FROM_DATABASE=3 Gb/s SAS RAID
++ ID_MODEL_FROM_DATABASE=Smart Array P600 (3 Gb/s SAS RAID)
+ pci:v0000103Cd00003230*
+  ID_MODEL_FROM_DATABASE=Smart Array Controller
+ pci:v0000103Cd00003230sv0000103Csd00003223*
+- ID_MODEL_FROM_DATABASE=Smart Array P800
++ ID_MODEL_FROM_DATABASE=Smart Array Controller (Smart Array P800)
+ pci:v0000103Cd00003230sv0000103Csd00003234*
+- ID_MODEL_FROM_DATABASE=P400 SAS Controller
++ ID_MODEL_FROM_DATABASE=Smart Array Controller (P400 SAS Controller)
+ pci:v0000103Cd00003230sv0000103Csd00003235*
+- ID_MODEL_FROM_DATABASE=P400i SAS Controller
++ ID_MODEL_FROM_DATABASE=Smart Array Controller (P400i SAS Controller)
+ pci:v0000103Cd00003230sv0000103Csd00003237*
+- ID_MODEL_FROM_DATABASE=E500 SAS Controller
++ ID_MODEL_FROM_DATABASE=Smart Array Controller (E500 SAS Controller)
+ pci:v0000103Cd00003230sv0000103Csd0000323D*
+- ID_MODEL_FROM_DATABASE=P700m SAS Controller
++ ID_MODEL_FROM_DATABASE=Smart Array Controller (P700m SAS Controller)
+ pci:v0000103Cd00003238*
+  ID_MODEL_FROM_DATABASE=Smart Array E200i (SAS Controller)
+ pci:v0000103Cd00003238sv0000103Csd00003211*
+- ID_MODEL_FROM_DATABASE=Smart Array E200i
++ ID_MODEL_FROM_DATABASE=Smart Array E200i (SAS Controller) (Smart Array E200i)
+ pci:v0000103Cd00003238sv0000103Csd00003212*
+- ID_MODEL_FROM_DATABASE=Smart Array E200
++ ID_MODEL_FROM_DATABASE=Smart Array E200i (SAS Controller) (Smart Array E200)
+ pci:v0000103Cd00003239*
+  ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers
+ pci:v0000103Cd00003239sv0000103Csd000021BD*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021BE*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021BF*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C0*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C1*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C2*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C3*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C4*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C5*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C6*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C7*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C8*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021C9*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021CA*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021CB*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021CC*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021CD*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd00003239sv0000103Csd000021CE*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers (Smart Array)
+ pci:v0000103Cd0000323A*
+  ID_MODEL_FROM_DATABASE=Smart Array G6 controllers
+ pci:v0000103Cd0000323Asv0000103Csd00003241*
+- ID_MODEL_FROM_DATABASE=Smart Array P212
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (Smart Array P212)
+ pci:v0000103Cd0000323Asv0000103Csd00003243*
+- ID_MODEL_FROM_DATABASE=Smart Array P410
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (Smart Array P410)
+ pci:v0000103Cd0000323Asv0000103Csd00003245*
+- ID_MODEL_FROM_DATABASE=Smart Array P410i
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (Smart Array P410i)
+ pci:v0000103Cd0000323Asv0000103Csd00003247*
+- ID_MODEL_FROM_DATABASE=Smart Array P411
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (Smart Array P411)
+ pci:v0000103Cd0000323Asv0000103Csd00003249*
+- ID_MODEL_FROM_DATABASE=Smart Array P812
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (Smart Array P812)
+ pci:v0000103Cd0000323Asv0000103Csd0000324A*
+- ID_MODEL_FROM_DATABASE=HP Smart Array 712m (Mezzanine RAID controller)
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (HP Smart Array 712m (Mezzanine RAID controller))
+ pci:v0000103Cd0000323Asv0000103Csd0000324B*
+- ID_MODEL_FROM_DATABASE=Smart Array P711m (Mezzanine RAID controller)
++ ID_MODEL_FROM_DATABASE=Smart Array G6 controllers (Smart Array P711m (Mezzanine RAID controller))
+ pci:v0000103Cd0000323B*
+  ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers
+ pci:v0000103Cd0000323Bsv0000103Csd00003350*
+- ID_MODEL_FROM_DATABASE=P222
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers (P222)
+ pci:v0000103Cd0000323Bsv0000103Csd00003351*
+- ID_MODEL_FROM_DATABASE=P420
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers (P420)
+ pci:v0000103Cd0000323Bsv0000103Csd00003352*
+- ID_MODEL_FROM_DATABASE=P421
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers (P421)
+ pci:v0000103Cd0000323Bsv0000103Csd00003354*
+- ID_MODEL_FROM_DATABASE=P420i
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers (P420i)
+ pci:v0000103Cd0000323Bsv0000103Csd00003355*
+- ID_MODEL_FROM_DATABASE=P220i
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers (P220i)
+ pci:v0000103Cd0000323C*
+  ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers
+ pci:v0000103Cd0000323Csv0000103Csd00001920*
+- ID_MODEL_FROM_DATABASE=P430i
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P430i)
+ pci:v0000103Cd0000323Csv0000103Csd00001921*
+- ID_MODEL_FROM_DATABASE=P830i
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P830i)
+ pci:v0000103Cd0000323Csv0000103Csd00001922*
+- ID_MODEL_FROM_DATABASE=P430
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P430)
+ pci:v0000103Cd0000323Csv0000103Csd00001923*
+- ID_MODEL_FROM_DATABASE=P431
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P431)
+ pci:v0000103Cd0000323Csv0000103Csd00001924*
+- ID_MODEL_FROM_DATABASE=P830
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P830)
+ pci:v0000103Cd0000323Csv0000103Csd00001925*
+- ID_MODEL_FROM_DATABASE=Smart Array
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (Smart Array)
+ pci:v0000103Cd0000323Csv0000103Csd00001926*
+- ID_MODEL_FROM_DATABASE=P731m
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P731m)
+ pci:v0000103Cd0000323Csv0000103Csd00001928*
+- ID_MODEL_FROM_DATABASE=P230i
++ ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers (P230i)
+ pci:v0000103Cd00003300*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller
+ pci:v0000103Cd00003300sv0000103Csd00003304*
+- ID_MODEL_FROM_DATABASE=iLO2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller (iLO2)
+ pci:v0000103Cd00003300sv0000103Csd00003305*
+- ID_MODEL_FROM_DATABASE=iLO2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller (iLO2)
+ pci:v0000103Cd00003300sv0000103Csd00003309*
+- ID_MODEL_FROM_DATABASE=iLO2 GXL/iLO3 GXE
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller (iLO2 GXL/iLO3 GXE)
+ pci:v0000103Cd00003300sv0000103Csd0000330E*
+- ID_MODEL_FROM_DATABASE=iLO3
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller (iLO3)
+ pci:v0000103Cd00003300sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller (iLO4)
+ pci:v0000103Cd00003301*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Serial Port
+ pci:v0000103Cd00003301sv0000103Csd00003304*
+- ID_MODEL_FROM_DATABASE=iLO2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Serial Port (iLO2)
+ pci:v0000103Cd00003301sv0000103Csd00003305*
+- ID_MODEL_FROM_DATABASE=iLO2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Serial Port (iLO2)
+ pci:v0000103Cd00003301sv0000103Csd0000330E*
+- ID_MODEL_FROM_DATABASE=iLO3
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Serial Port (iLO3)
+ pci:v0000103Cd00003301sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Serial Port (iLO4)
+ pci:v0000103Cd00003302*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface
+ pci:v0000103Cd00003302sv0000103Csd00003304*
+- ID_MODEL_FROM_DATABASE=iLO2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface (iLO2)
+ pci:v0000103Cd00003302sv0000103Csd00003305*
+- ID_MODEL_FROM_DATABASE=iLO2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface (iLO2)
+ pci:v0000103Cd00003302sv0000103Csd0000330E*
+- ID_MODEL_FROM_DATABASE=iLO3
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface (iLO3)
+ pci:v0000103Cd00003302sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface (iLO4)
+ pci:v0000103Cd00003305*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out (iLO2) Controller
+@@ -14004,31 +14004,31 @@ pci:v0000103Cd00003306*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Slave Instrumentation & System Support
+ pci:v0000103Cd00003306sv0000103Csd0000330E*
+- ID_MODEL_FROM_DATABASE=iLO3
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Slave Instrumentation & System Support (iLO3)
+ pci:v0000103Cd00003306sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Slave Instrumentation & System Support (iLO4)
+ pci:v0000103Cd00003307*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Management Processor Support and Messaging
+ pci:v0000103Cd00003307sv0000103Csd00003309*
+- ID_MODEL_FROM_DATABASE=iLO 2
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Management Processor Support and Messaging (iLO 2)
+ pci:v0000103Cd00003307sv0000103Csd0000330E*
+- ID_MODEL_FROM_DATABASE=iLO3
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Management Processor Support and Messaging (iLO3)
+ pci:v0000103Cd00003307sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Management Processor Support and Messaging (iLO4)
+ pci:v0000103Cd00003308*
+  ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard MS Watchdog Timer
+ pci:v0000103Cd00003308sv0000103Csd0000330E*
+- ID_MODEL_FROM_DATABASE=iLO3
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard MS Watchdog Timer (iLO3)
+ pci:v0000103Cd00003308sv0000103Csd00003381*
+- ID_MODEL_FROM_DATABASE=iLO4
++ ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard MS Watchdog Timer (iLO4)
+ pci:v0000103Cd0000402F*
+  ID_MODEL_FROM_DATABASE=PCIe Root Port
+@@ -14082,19 +14082,19 @@ pci:v00001043d00000675*
+  ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D
+ pci:v00001043d00000675sv00000675sd00001704*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C)
++ ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D (ISDN Adapter (PCI Bus, D, C))
+ pci:v00001043d00000675sv00000675sd00001707*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W)
++ ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D (ISDN Adapter (PCI Bus, DV, W))
+ pci:v00001043d00000675sv000010CFsd0000105E*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W)
++ ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D (ISDN Adapter (PCI Bus, DV, W))
+ pci:v00001043d00009602*
+  ID_MODEL_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx)
+ pci:v00001043d00009602sv00001043sd000083A2*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) (M4A785TD Motherboard)
+ pci:v00001044*
+  ID_VENDOR_FROM_DATABASE=Adaptec (formerly DPT)
+@@ -14112,118 +14112,118 @@ pci:v00001044d0000A501*
+  ID_MODEL_FROM_DATABASE=SmartRAID V Controller
+ pci:v00001044d0000A501sv00001044sd0000C001*
+- ID_MODEL_FROM_DATABASE=PM1554U2 Ultra2 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM1554U2 Ultra2 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C002*
+- ID_MODEL_FROM_DATABASE=PM1654U2 Ultra2 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM1654U2 Ultra2 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C003*
+- ID_MODEL_FROM_DATABASE=PM1564U3 Ultra3 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM1564U3 Ultra3 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C004*
+- ID_MODEL_FROM_DATABASE=PM1564U3 Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM1564U3 Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C005*
+- ID_MODEL_FROM_DATABASE=PM1554U2 Ultra2 Single Channel (NON ACPI)
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM1554U2 Ultra2 Single Channel (NON ACPI))
+ pci:v00001044d0000A501sv00001044sd0000C00A*
+- ID_MODEL_FROM_DATABASE=PM2554U2 Ultra2 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2554U2 Ultra2 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C00B*
+- ID_MODEL_FROM_DATABASE=PM2654U2 Ultra2 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2654U2 Ultra2 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C00C*
+- ID_MODEL_FROM_DATABASE=PM2664U3 Ultra3 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2664U3 Ultra3 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C00D*
+- ID_MODEL_FROM_DATABASE=PM2664U3 Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2664U3 Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C00E*
+- ID_MODEL_FROM_DATABASE=PM2554U2 Ultra2 Single Channel (NON ACPI)
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2554U2 Ultra2 Single Channel (NON ACPI))
+ pci:v00001044d0000A501sv00001044sd0000C00F*
+- ID_MODEL_FROM_DATABASE=PM2654U2 Ultra2 Single Channel (NON ACPI)
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2654U2 Ultra2 Single Channel (NON ACPI))
+ pci:v00001044d0000A501sv00001044sd0000C014*
+- ID_MODEL_FROM_DATABASE=PM3754U2 Ultra2 Single Channel (NON ACPI)
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3754U2 Ultra2 Single Channel (NON ACPI))
+ pci:v00001044d0000A501sv00001044sd0000C015*
+- ID_MODEL_FROM_DATABASE=PM3755U2B Ultra2 Single Channel (NON ACPI)
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3755U2B Ultra2 Single Channel (NON ACPI))
+ pci:v00001044d0000A501sv00001044sd0000C016*
+- ID_MODEL_FROM_DATABASE=PM3755F Fibre Channel (NON ACPI)
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3755F Fibre Channel (NON ACPI))
+ pci:v00001044d0000A501sv00001044sd0000C01E*
+- ID_MODEL_FROM_DATABASE=PM3757U2 Ultra2 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3757U2 Ultra2 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C01F*
+- ID_MODEL_FROM_DATABASE=PM3757U2 Ultra2 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3757U2 Ultra2 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C020*
+- ID_MODEL_FROM_DATABASE=PM3767U3 Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3767U3 Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C021*
+- ID_MODEL_FROM_DATABASE=PM3767U3 Ultra3 Quad Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM3767U3 Ultra3 Quad Channel)
+ pci:v00001044d0000A501sv00001044sd0000C028*
+- ID_MODEL_FROM_DATABASE=PM2865U3 Ultra3 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2865U3 Ultra3 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C029*
+- ID_MODEL_FROM_DATABASE=PM2865U3 Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2865U3 Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C02A*
+- ID_MODEL_FROM_DATABASE=PM2865F Fibre Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (PM2865F Fibre Channel)
+ pci:v00001044d0000A501sv00001044sd0000C03C*
+- ID_MODEL_FROM_DATABASE=2000S Ultra3 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (2000S Ultra3 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C03D*
+- ID_MODEL_FROM_DATABASE=2000S Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (2000S Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C03E*
+- ID_MODEL_FROM_DATABASE=2000F Fibre Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (2000F Fibre Channel)
+ pci:v00001044d0000A501sv00001044sd0000C046*
+- ID_MODEL_FROM_DATABASE=3000S Ultra3 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (3000S Ultra3 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C047*
+- ID_MODEL_FROM_DATABASE=3000S Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (3000S Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C048*
+- ID_MODEL_FROM_DATABASE=3000F Fibre Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (3000F Fibre Channel)
+ pci:v00001044d0000A501sv00001044sd0000C050*
+- ID_MODEL_FROM_DATABASE=5000S Ultra3 Single Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (5000S Ultra3 Single Channel)
+ pci:v00001044d0000A501sv00001044sd0000C051*
+- ID_MODEL_FROM_DATABASE=5000S Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (5000S Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C052*
+- ID_MODEL_FROM_DATABASE=5000F Fibre Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (5000F Fibre Channel)
+ pci:v00001044d0000A501sv00001044sd0000C05A*
+- ID_MODEL_FROM_DATABASE=2400A UDMA Four Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (2400A UDMA Four Channel)
+ pci:v00001044d0000A501sv00001044sd0000C05B*
+- ID_MODEL_FROM_DATABASE=2400A UDMA Four Channel DAC
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (2400A UDMA Four Channel DAC)
+ pci:v00001044d0000A501sv00001044sd0000C064*
+- ID_MODEL_FROM_DATABASE=3010S Ultra3 Dual Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (3010S Ultra3 Dual Channel)
+ pci:v00001044d0000A501sv00001044sd0000C065*
+- ID_MODEL_FROM_DATABASE=3410S Ultra160 Four Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (3410S Ultra160 Four Channel)
+ pci:v00001044d0000A501sv00001044sd0000C066*
+- ID_MODEL_FROM_DATABASE=3010S Fibre Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (3010S Fibre Channel)
+ pci:v00001044d0000A511*
+  ID_MODEL_FROM_DATABASE=SmartRAID V Controller
+ pci:v00001044d0000A511sv00001044sd0000C032*
+- ID_MODEL_FROM_DATABASE=ASR-2005S I2O Zero Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (ASR-2005S I2O Zero Channel)
+ pci:v00001044d0000A511sv00001044sd0000C035*
+- ID_MODEL_FROM_DATABASE=ASR-2010S I2O Zero Channel
++ ID_MODEL_FROM_DATABASE=SmartRAID V Controller (ASR-2010S I2O Zero Channel)
+ pci:v00001044d0000C066*
+  ID_MODEL_FROM_DATABASE=3010S Ultra3 Dual Channel
+@@ -14325,7 +14325,7 @@ pci:v00001048d00008901*
+  ID_MODEL_FROM_DATABASE=Gloria XL
+ pci:v00001048d00008901sv00001048sd00000935*
+- ID_MODEL_FROM_DATABASE=GLoria XL (Virge)
++ ID_MODEL_FROM_DATABASE=Gloria XL (GLoria XL (Virge))
+ pci:v00001049*
+  ID_VENDOR_FROM_DATABASE=Fountain Technologies, Inc.
+@@ -14346,19 +14346,19 @@ pci:v0000104Ad00000010*
+  ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series]
+ pci:v0000104Ad00000010sv0000104Asd00004018*
+- ID_MODEL_FROM_DATABASE=ST PowerVR Kyro (64MB AGP TVO)
++ ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] (ST PowerVR Kyro (64MB AGP TVO))
+ pci:v0000104Ad00000010sv00001681sd00000010*
+- ID_MODEL_FROM_DATABASE=PowerVR Kyro II [3D Prophet 4500]
++ ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] (PowerVR Kyro II [3D Prophet 4500])
+ pci:v0000104Ad00000010sv00001681sd00000028*
+- ID_MODEL_FROM_DATABASE=3D Prophet 4000XT
++ ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] (3D Prophet 4000XT)
+ pci:v0000104Ad00000010sv00001681sd0000C010*
+- ID_MODEL_FROM_DATABASE=3D Prophet 4500 TV-Out
++ ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] (3D Prophet 4500 TV-Out)
+ pci:v0000104Ad00000010sv00001681sd0000C069*
+- ID_MODEL_FROM_DATABASE=3D Prophet 4000XT
++ ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] (3D Prophet 4000XT)
+ pci:v0000104Ad00000201*
+  ID_MODEL_FROM_DATABASE=STPC Vega Northbridge
+@@ -14400,7 +14400,7 @@ pci:v0000104Ad00000500*
+  ID_MODEL_FROM_DATABASE=ST70137 [Unicorn] ADSL DMT Transceiver
+ pci:v0000104Ad00000500sv0000104Asd00000500*
+- ID_MODEL_FROM_DATABASE=BeWAN ADSL PCI st
++ ID_MODEL_FROM_DATABASE=ST70137 [Unicorn] ADSL DMT Transceiver (BeWAN ADSL PCI st)
+ pci:v0000104Ad00000564*
+  ID_MODEL_FROM_DATABASE=STPC Client Northbridge
+@@ -14454,115 +14454,115 @@ pci:v0000104Cd00003D07*
+  ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2]
+ pci:v0000104Cd00003D07sv00001011sd00004D10*
+- ID_MODEL_FROM_DATABASE=Comet
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (Comet)
+ pci:v0000104Cd00003D07sv00001040sd0000000F*
+- ID_MODEL_FROM_DATABASE=AccelStar II
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (AccelStar II)
+ pci:v0000104Cd00003D07sv00001040sd00000011*
+- ID_MODEL_FROM_DATABASE=AccelStar II
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (AccelStar II)
+ pci:v0000104Cd00003D07sv00001048sd00000A31*
+- ID_MODEL_FROM_DATABASE=WINNER 2000
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (WINNER 2000)
+ pci:v0000104Cd00003D07sv00001048sd00000A32*
+- ID_MODEL_FROM_DATABASE=GLoria Synergy
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (GLoria Synergy)
+ pci:v0000104Cd00003D07sv00001048sd00000A34*
+- ID_MODEL_FROM_DATABASE=GLoria Synergy
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (GLoria Synergy)
+ pci:v0000104Cd00003D07sv00001048sd00000A35*
+- ID_MODEL_FROM_DATABASE=GLoria Synergy
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (GLoria Synergy)
+ pci:v0000104Cd00003D07sv00001048sd00000A36*
+- ID_MODEL_FROM_DATABASE=GLoria Synergy
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (GLoria Synergy)
+ pci:v0000104Cd00003D07sv00001048sd00000A43*
+- ID_MODEL_FROM_DATABASE=GLoria Synergy
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (GLoria Synergy)
+ pci:v0000104Cd00003D07sv00001048sd00000A44*
+- ID_MODEL_FROM_DATABASE=GLoria Synergy
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (GLoria Synergy)
+ pci:v0000104Cd00003D07sv0000107Dsd00002633*
+- ID_MODEL_FROM_DATABASE=WinFast 3D L2300
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (WinFast 3D L2300)
+ pci:v0000104Cd00003D07sv00001092sd00000126*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000127*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000136*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000141*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000146*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000148*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000149*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000152*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000154*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000155*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000156*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001092sd00000157*
+- ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (FIRE GL 1000 PRO)
+ pci:v0000104Cd00003D07sv00001097sd00003D01*
+- ID_MODEL_FROM_DATABASE=Jeronimo Pro
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (Jeronimo Pro)
+ pci:v0000104Cd00003D07sv00001102sd0000100F*
+- ID_MODEL_FROM_DATABASE=Graphics Blaster Extreme
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (Graphics Blaster Extreme)
+ pci:v0000104Cd00003D07sv00003D3Dsd00000100*
+- ID_MODEL_FROM_DATABASE=Reference Permedia 2 3D
++ ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] (Reference Permedia 2 3D)
+ pci:v0000104Cd00008000*
+  ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller
+ pci:v0000104Cd00008000sv0000105Esd00008003*
+- ID_MODEL_FROM_DATABASE=FireBoard200
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (FireBoard200)
+ pci:v0000104Cd00008000sv00001443sd00008003*
+- ID_MODEL_FROM_DATABASE=FireBoard200
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (FireBoard200)
+ pci:v0000104Cd00008000sv00001443sd00008005*
+- ID_MODEL_FROM_DATABASE=FireBoard400
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (FireBoard400)
+ pci:v0000104Cd00008000sv00001443sd00008006*
+- ID_MODEL_FROM_DATABASE=FireBoard400
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (FireBoard400)
+ pci:v0000104Cd00008000sv0000E4BFsd00001010*
+- ID_MODEL_FROM_DATABASE=CF1-1-SNARE
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (CF1-1-SNARE)
+ pci:v0000104Cd00008000sv0000E4BFsd00001020*
+- ID_MODEL_FROM_DATABASE=CF1-2-SNARE
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (CF1-2-SNARE)
+ pci:v0000104Cd00008000sv0000E4BFsd00001040*
+- ID_MODEL_FROM_DATABASE=FireCompact400
++ ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller (FireCompact400)
+ pci:v0000104Cd00008009*
+  ID_MODEL_FROM_DATABASE=TSB12LV22 IEEE-1394 Controller
+ pci:v0000104Cd00008009sv0000104Dsd00008032*
+- ID_MODEL_FROM_DATABASE=8032 OHCI i.LINK (IEEE 1394) Controller
++ ID_MODEL_FROM_DATABASE=TSB12LV22 IEEE-1394 Controller (8032 OHCI i.LINK (IEEE 1394) Controller)
+ pci:v0000104Cd00008009sv00001443sd00008010*
+- ID_MODEL_FROM_DATABASE=FireBoard400-OHCI
++ ID_MODEL_FROM_DATABASE=TSB12LV22 IEEE-1394 Controller (FireBoard400-OHCI)
+ pci:v0000104Cd00008017*
+  ID_MODEL_FROM_DATABASE=PCI4410 FireWire Controller
+@@ -14571,223 +14571,223 @@ pci:v0000104Cd00008019*
+  ID_MODEL_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller
+ pci:v0000104Cd00008019sv000011BDsd0000000A*
+- ID_MODEL_FROM_DATABASE=Studio DV500-1394
++ ID_MODEL_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller (Studio DV500-1394)
+ pci:v0000104Cd00008019sv000011BDsd0000000E*
+- ID_MODEL_FROM_DATABASE=Studio DV
++ ID_MODEL_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller (Studio DV)
+ pci:v0000104Cd00008019sv00001443sd00008010*
+- ID_MODEL_FROM_DATABASE=FireBoard400-OHCI
++ ID_MODEL_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller (FireBoard400-OHCI)
+ pci:v0000104Cd00008019sv0000E4BFsd00001010*
+- ID_MODEL_FROM_DATABASE=CF2-1-CYMBAL
++ ID_MODEL_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller (CF2-1-CYMBAL)
+ pci:v0000104Cd00008020*
+  ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link)
+ pci:v0000104Cd00008020sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) (Precision 530)
+ pci:v0000104Cd00008020sv0000104Dsd000080E2*
+- ID_MODEL_FROM_DATABASE=VAIO PCV-J200
++ ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) (VAIO PCV-J200)
+ pci:v0000104Cd00008020sv000011BDsd0000000F*
+- ID_MODEL_FROM_DATABASE=Studio DV500-1394
++ ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) (Studio DV500-1394)
+ pci:v0000104Cd00008020sv000011BDsd0000001C*
+- ID_MODEL_FROM_DATABASE=Excalibur 4.1
++ ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) (Excalibur 4.1)
+ pci:v0000104Cd00008020sv00001443sd00008010*
+- ID_MODEL_FROM_DATABASE=FireBoard400-OHCI
++ ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) (FireBoard400-OHCI)
+ pci:v0000104Cd00008021*
+  ID_MODEL_FROM_DATABASE=TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated)
+ pci:v0000104Cd00008021sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) (Vaio PCG-FX403)
+ pci:v0000104Cd00008021sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v0000104Cd00008022*
+  ID_MODEL_FROM_DATABASE=TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]
+ pci:v0000104Cd00008022sv0000104Csd00008023*
+- ID_MODEL_FROM_DATABASE=TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link)
++ ID_MODEL_FROM_DATABASE=TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link))
+ pci:v0000104Cd00008023*
+  ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]
+ pci:v0000104Cd00008023sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (Precision Workstation 670 Mainboard)
+ pci:v0000104Cd00008023sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (NC8000 laptop)
+ pci:v0000104Cd00008023sv00001043sd0000808B*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (K8N4/A8N Series Mainboard)
+ pci:v0000104Cd00008023sv00001043sd0000815B*
+- ID_MODEL_FROM_DATABASE=P5W DH Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (P5W DH Deluxe Motherboard)
+ pci:v0000104Cd00008023sv00001443sd00008023*
+- ID_MODEL_FROM_DATABASE=FireCard400
++ ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (FireCard400)
+ pci:v0000104Cd00008023sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] (Desktop Board DP35DP)
+ pci:v0000104Cd00008024*
+  ID_MODEL_FROM_DATABASE=TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link)
+ pci:v0000104Cd00008024sv0000107Dsd00006620*
+- ID_MODEL_FROM_DATABASE=Winfast DV2000 FireWire Controller
++ ID_MODEL_FROM_DATABASE=TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (Winfast DV2000 FireWire Controller)
+ pci:v0000104Cd00008024sv00001443sd00008024*
+- ID_MODEL_FROM_DATABASE=FireBoard Blue
++ ID_MODEL_FROM_DATABASE=TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (FireBoard Blue)
+ pci:v0000104Cd00008024sv00001458sd00001000*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) (Motherboard)
+ pci:v0000104Cd00008025*
+  ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller
+ pci:v0000104Cd00008025sv00001043sd0000813C*
+- ID_MODEL_FROM_DATABASE=P5P series mainboard
++ ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller (P5P series mainboard)
+ pci:v0000104Cd00008025sv00001443sd00008025*
+- ID_MODEL_FROM_DATABASE=FireBoard800
++ ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller (FireBoard800)
+ pci:v0000104Cd00008025sv00001458sd00001000*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v0000104Cd00008025sv00001546sd00008025*
+- ID_MODEL_FROM_DATABASE=FWB-PCI01
++ ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller (FWB-PCI01)
+ pci:v0000104Cd00008025sv000017FCsd00008025*
+- ID_MODEL_FROM_DATABASE=GIC3800
++ ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller (GIC3800)
+ pci:v0000104Cd00008026*
+  ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)
+ pci:v0000104Cd00008026sv00001025sd00000035*
+- ID_MODEL_FROM_DATABASE=TravelMate 660
++ ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) (TravelMate 660)
+ pci:v0000104Cd00008026sv00001025sd0000003C*
+- ID_MODEL_FROM_DATABASE=Aspire 2001WLCi (Compaq CL50 motherboard)
++ ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) (Aspire 2001WLCi (Compaq CL50 motherboard))
+ pci:v0000104Cd00008026sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) (XE4500 Notebook)
+ pci:v0000104Cd00008026sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) (NX9500)
+ pci:v0000104Cd00008026sv00001043sd0000808D*
+- ID_MODEL_FROM_DATABASE=A7V333 mainboard.
++ ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) (A7V333 mainboard.)
+ pci:v0000104Cd00008027*
+  ID_MODEL_FROM_DATABASE=PCI4451 IEEE-1394 Controller
+ pci:v0000104Cd00008027sv00001028sd000000E5*
+- ID_MODEL_FROM_DATABASE=Latitude C810
++ ID_MODEL_FROM_DATABASE=PCI4451 IEEE-1394 Controller (Latitude C810)
+ pci:v0000104Cd00008027sv00001028sd000000E6*
+- ID_MODEL_FROM_DATABASE=PCI4451 IEEE-1394 Controller (Dell Inspiron 8100)
++ ID_MODEL_FROM_DATABASE=PCI4451 IEEE-1394 Controller ((Dell Inspiron 8100))
+ pci:v0000104Cd00008029*
+  ID_MODEL_FROM_DATABASE=PCI4510 IEEE-1394 Controller
+ pci:v0000104Cd00008029sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=PCI4510 IEEE-1394 Controller (Latitude D505)
+ pci:v0000104Cd00008029sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=PCI4510 IEEE-1394 Controller (Inspiron 5160)
+ pci:v0000104Cd00008029sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2900
++ ID_MODEL_FROM_DATABASE=PCI4510 IEEE-1394 Controller (MIM2900)
+ pci:v0000104Cd0000802B*
+  ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller
+ pci:v0000104Cd0000802Bsv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D400)
+ pci:v0000104Cd0000802Bsv00001028sd0000014E*
+- ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800)
++ ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller ((Latitude D800))
+ pci:v0000104Cd0000802E*
+  ID_MODEL_FROM_DATABASE=PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
+ pci:v0000104Cd0000802Esv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller (Inspiron 700m/710m)
+ pci:v0000104Cd00008031*
+  ID_MODEL_FROM_DATABASE=PCIxx21/x515 Cardbus Controller
+ pci:v0000104Cd00008031sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=PCIxx21/x515 Cardbus Controller (Aspire 5024WLMi)
+ pci:v0000104Cd00008031sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=PCIxx21/x515 Cardbus Controller (Compaq nw8240/nx8220)
+ pci:v0000104Cd00008031sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=PCIxx21/x515 Cardbus Controller (NX6110/NC6120)
+ pci:v0000104Cd00008031sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=PCIxx21/x515 Cardbus Controller (MX6125)
+ pci:v0000104Cd00008032*
+  ID_MODEL_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller
+ pci:v0000104Cd00008032sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller (Aspire 5024WLMi)
+ pci:v0000104Cd00008032sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller (Compaq nw8240/nx8220)
+ pci:v0000104Cd00008032sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller (NX6110/NC6120)
+ pci:v0000104Cd00008032sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller (MX6125)
+ pci:v0000104Cd00008033*
+  ID_MODEL_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller
+ pci:v0000104Cd00008033sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller (Aspire 5024WLMi)
+ pci:v0000104Cd00008033sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller (Compaq nw8240/nx8220)
+ pci:v0000104Cd00008033sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller (NX6110/NC6120)
+ pci:v0000104Cd00008033sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller (MX6125)
+ pci:v0000104Cd00008034*
+  ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller
+ pci:v0000104Cd00008034sv00001025sd00000080*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller (Aspire 5024WLMi)
+ pci:v0000104Cd00008034sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller (Compaq nw8240/nx8220)
+ pci:v0000104Cd00008034sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller (NX6110/NC6120)
+ pci:v0000104Cd00008034sv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller (MX6125)
+ pci:v0000104Cd00008035*
+  ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller
+ pci:v0000104Cd00008035sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller (Compaq nw8240/nx8220)
+ pci:v0000104Cd00008035sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller (NX6110/NC6120)
+ pci:v0000104Cd00008036*
+  ID_MODEL_FROM_DATABASE=PCI6515 Cardbus Controller
+@@ -14799,67 +14799,67 @@ pci:v0000104Cd00008039*
+  ID_MODEL_FROM_DATABASE=PCIxx12 Cardbus Controller
+ pci:v0000104Cd00008039sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=PCIxx12 Cardbus Controller (Compaq nx9420 Notebook)
+ pci:v0000104Cd00008039sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=PCIxx12 Cardbus Controller (NC2400)
+ pci:v0000104Cd00008039sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=PCIxx12 Cardbus Controller (Compaq nw8440)
+ pci:v0000104Cd00008039sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=PCIxx12 Cardbus Controller (VAIO VGN-NR120E)
+ pci:v0000104Cd0000803A*
+  ID_MODEL_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller
+ pci:v0000104Cd0000803Asv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=nx9420
++ ID_MODEL_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller (nx9420)
+ pci:v0000104Cd0000803Asv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller (NC2400)
+ pci:v0000104Cd0000803Asv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller (Compaq nw8440)
+ pci:v0000104Cd0000803Asv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller (VAIO VGN-NR120E)
+ pci:v0000104Cd0000803B*
+  ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD)
+ pci:v0000104Cd0000803Bsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=nx9420
++ ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) (nx9420)
+ pci:v0000104Cd0000803Bsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) (Compaq nw8440)
+ pci:v0000104Cd0000803Bsv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) (VAIO VGN-NR120E)
+ pci:v0000104Cd0000803C*
+  ID_MODEL_FROM_DATABASE=PCIxx12 SDA Standard Compliant SD Host Controller
+ pci:v0000104Cd0000803Csv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=nx9420
++ ID_MODEL_FROM_DATABASE=PCIxx12 SDA Standard Compliant SD Host Controller (nx9420)
+ pci:v0000104Cd0000803Csv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=PCIxx12 SDA Standard Compliant SD Host Controller (Compaq nw8440)
+ pci:v0000104Cd0000803D*
+  ID_MODEL_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller
+ pci:v0000104Cd0000803Dsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller (Compaq nx9420 Notebook)
+ pci:v0000104Cd0000803Dsv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller (NC2400)
+ pci:v0000104Cd0000803Dsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=nc8430
++ ID_MODEL_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller (nc8430)
+ pci:v0000104Cd0000803Dsv0000103Csd000030AA*
+- ID_MODEL_FROM_DATABASE=nc6310
++ ID_MODEL_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller (nc6310)
+ pci:v0000104Cd00008101*
+  ID_MODEL_FROM_DATABASE=TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link)
+@@ -14871,16 +14871,16 @@ pci:v0000104Cd00008204*
+  ID_MODEL_FROM_DATABASE=PCI7410/7510/7610 PCI Firmware Loading Function
+ pci:v0000104Cd00008204sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=PCI7410/7510/7610 PCI Firmware Loading Function (Latitude D400)
+ pci:v0000104Cd00008204sv00001028sd0000014E*
+- ID_MODEL_FROM_DATABASE=Latitude D800
++ ID_MODEL_FROM_DATABASE=PCI7410/7510/7610 PCI Firmware Loading Function (Latitude D800)
+ pci:v0000104Cd00008231*
+  ID_MODEL_FROM_DATABASE=XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge
+ pci:v0000104Cd00008231sv00005678sd00001234*
+- ID_MODEL_FROM_DATABASE=DC-1394 PCIe
++ ID_MODEL_FROM_DATABASE=XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge (DC-1394 PCIe)
+ pci:v0000104Cd00008232*
+  ID_MODEL_FROM_DATABASE=XIO3130 PCI Express Switch (Upstream)
+@@ -14892,7 +14892,7 @@ pci:v0000104Cd00008235*
+  ID_MODEL_FROM_DATABASE=XIO2200A IEEE-1394a-2000 Controller (PHY/Link)
+ pci:v0000104Cd00008235sv00005678sd00001234*
+- ID_MODEL_FROM_DATABASE=DC-1394 PCIe
++ ID_MODEL_FROM_DATABASE=XIO2200A IEEE-1394a-2000 Controller (PHY/Link) (DC-1394 PCIe)
+ pci:v0000104Cd0000823E*
+  ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express]
+@@ -14901,7 +14901,7 @@ pci:v0000104Cd0000823F*
+  ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express]
+ pci:v0000104Cd0000823Fsv00001546sd0000803C*
+- ID_MODEL_FROM_DATABASE=FWB-PCIE1X11B
++ ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] (FWB-PCIE1X11B)
+ pci:v0000104Cd00008240*
+  ID_MODEL_FROM_DATABASE=XIO2001 PCI Express-to-PCI Bridge
+@@ -14913,16 +14913,16 @@ pci:v0000104Cd00008400*
+  ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface
+ pci:v0000104Cd00008400sv00001186sd00003B00*
+- ID_MODEL_FROM_DATABASE=DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus]
++ ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface (DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus])
+ pci:v0000104Cd00008400sv00001186sd00003B01*
+- ID_MODEL_FROM_DATABASE=DWL-520+ 22Mbps PCI Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface (DWL-520+ 22Mbps PCI Wireless Adapter)
+ pci:v0000104Cd00008400sv00001395sd00002201*
+- ID_MODEL_FROM_DATABASE=WL22-PC
++ ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface (WL22-PC)
+ pci:v0000104Cd00008400sv000016ABsd00008501*
+- ID_MODEL_FROM_DATABASE=WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter
++ ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface (WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter)
+ pci:v0000104Cd00008401*
+  ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface
+@@ -14937,58 +14937,58 @@ pci:v0000104Cd00009066*
+  ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface
+ pci:v0000104Cd00009066sv00000308sd00003404*
+- ID_MODEL_FROM_DATABASE=G-102 v1 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (G-102 v1 802.11g Wireless Cardbus Adapter)
+ pci:v0000104Cd00009066sv00000308sd00003406*
+- ID_MODEL_FROM_DATABASE=G-162 v2 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (G-162 v2 802.11g Wireless Cardbus Adapter)
+ pci:v0000104Cd00009066sv0000104Csd00009066*
+- ID_MODEL_FROM_DATABASE=WL212 Sitecom Wireless Network PCI-Card 100M (Version 1)
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (WL212 Sitecom Wireless Network PCI-Card 100M (Version 1))
+ pci:v0000104Cd00009066sv0000104Csd00009067*
+- ID_MODEL_FROM_DATABASE=TNETW1130GVF
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (TNETW1130GVF)
+ pci:v0000104Cd00009066sv0000104Csd00009096*
+- ID_MODEL_FROM_DATABASE=Trendnet TEW-412PC Wireless PCI Adapter (Version A)
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (Trendnet TEW-412PC Wireless PCI Adapter (Version A))
+ pci:v0000104Cd00009066sv00001186sd00003B04*
+- ID_MODEL_FROM_DATABASE=DWL-G520+ Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (DWL-G520+ Wireless PCI Adapter)
+ pci:v0000104Cd00009066sv00001186sd00003B05*
+- ID_MODEL_FROM_DATABASE=DWL-G650+ AirPlusG+ CardBus Wireless LAN
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (DWL-G650+ AirPlusG+ CardBus Wireless LAN)
+ pci:v0000104Cd00009066sv00001186sd00003B08*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1)
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1))
+ pci:v0000104Cd00009066sv00001385sd00004C00*
+- ID_MODEL_FROM_DATABASE=WG311v2 802.11g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (WG311v2 802.11g Wireless PCI Adapter)
+ pci:v0000104Cd00009066sv000013D1sd0000ABA0*
+- ID_MODEL_FROM_DATABASE=SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+)
+ pci:v0000104Cd00009066sv000014EAsd0000AB07*
+- ID_MODEL_FROM_DATABASE=GW-NS54GM Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (GW-NS54GM Wireless Cardbus Adapter)
+ pci:v0000104Cd00009066sv000016ECsd0000010D*
+- ID_MODEL_FROM_DATABASE=USR5416 802.11g Wireless Turbo PCI Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (USR5416 802.11g Wireless Turbo PCI Adapter)
+ pci:v0000104Cd00009066sv000016ECsd0000010E*
+- ID_MODEL_FROM_DATABASE=USR5410 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (USR5410 802.11g Wireless Cardbus Adapter)
+ pci:v0000104Cd00009066sv00001737sd00000033*
+- ID_MODEL_FROM_DATABASE=WPC54G v2 802.11g Wireless-G Notebook Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (WPC54G v2 802.11g Wireless-G Notebook Adapter)
+ pci:v0000104Cd00009066sv000017CFsd00000032*
+- ID_MODEL_FROM_DATABASE=G-162 v1 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (G-162 v1 802.11g Wireless Cardbus Adapter)
+ pci:v0000104Cd00009066sv000017CFsd00000033*
+- ID_MODEL_FROM_DATABASE=Z-Com XG650 Wireless miniPCI 802.11b/g
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (Z-Com XG650 Wireless miniPCI 802.11b/g)
+ pci:v0000104Cd00009066sv0000187Esd0000340B*
+- ID_MODEL_FROM_DATABASE=G-302 v2 802.11g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (G-302 v2 802.11g Wireless PCI Adapter)
+ pci:v0000104Cd00009066sv0000187Esd0000340C*
+- ID_MODEL_FROM_DATABASE=G-360 v2 802.11g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface (G-360 v2 802.11g Wireless PCI Adapter)
+ pci:v0000104Cd0000A001*
+  ID_MODEL_FROM_DATABASE=TDC1570
+@@ -15003,13 +15003,13 @@ pci:v0000104Cd0000A106*
+  ID_MODEL_FROM_DATABASE=TMS320C6414 TMS320C6415 TMS320C6416
+ pci:v0000104Cd0000A106sv0000175Csd00005000*
+- ID_MODEL_FROM_DATABASE=ASI50xx Audio Adapter
++ ID_MODEL_FROM_DATABASE=TMS320C6414 TMS320C6415 TMS320C6416 (ASI50xx Audio Adapter)
+ pci:v0000104Cd0000A106sv0000175Csd00006400*
+- ID_MODEL_FROM_DATABASE=ASI6400 Cobranet series
++ ID_MODEL_FROM_DATABASE=TMS320C6414 TMS320C6415 TMS320C6416 (ASI6400 Cobranet series)
+ pci:v0000104Cd0000A106sv0000175Csd00008700*
+- ID_MODEL_FROM_DATABASE=ASI87xx Radio Tuner card
++ ID_MODEL_FROM_DATABASE=TMS320C6414 TMS320C6415 TMS320C6416 (ASI87xx Radio Tuner card)
+ pci:v0000104Cd0000AC10*
+  ID_MODEL_FROM_DATABASE=PCI1050
+@@ -15030,7 +15030,7 @@ pci:v0000104Cd0000AC16*
+  ID_MODEL_FROM_DATABASE=PCI1250
+ pci:v0000104Cd0000AC16sv00001014sd00000092*
+- ID_MODEL_FROM_DATABASE=ThinkPad 600
++ ID_MODEL_FROM_DATABASE=PCI1250 (ThinkPad 600)
+ pci:v0000104Cd0000AC17*
+  ID_MODEL_FROM_DATABASE=PCI1220
+@@ -15048,19 +15048,19 @@ pci:v0000104Cd0000AC1B*
+  ID_MODEL_FROM_DATABASE=PCI1450
+ pci:v0000104Cd0000AC1Bsv00000E11sd0000B113*
+- ID_MODEL_FROM_DATABASE=Armada M700
++ ID_MODEL_FROM_DATABASE=PCI1450 (Armada M700)
+ pci:v0000104Cd0000AC1Bsv00001014sd00000130*
+- ID_MODEL_FROM_DATABASE=ThinkPad 600X/A21m/T20/T22
++ ID_MODEL_FROM_DATABASE=PCI1450 (ThinkPad 600X/A21m/T20/T22)
+ pci:v0000104Cd0000AC1C*
+  ID_MODEL_FROM_DATABASE=PCI1225
+ pci:v0000104Cd0000AC1Csv00000E11sd0000B121*
+- ID_MODEL_FROM_DATABASE=Armada E500
++ ID_MODEL_FROM_DATABASE=PCI1225 (Armada E500)
+ pci:v0000104Cd0000AC1Csv00001028sd00000088*
+- ID_MODEL_FROM_DATABASE=Latitude CPi A400XT
++ ID_MODEL_FROM_DATABASE=PCI1225 (Latitude CPi A400XT)
+ pci:v0000104Cd0000AC1D*
+  ID_MODEL_FROM_DATABASE=PCI1251A
+@@ -15102,40 +15102,40 @@ pci:v0000104Cd0000AC42*
+  ID_MODEL_FROM_DATABASE=PCI4451 PC card Cardbus Controller
+ pci:v0000104Cd0000AC42sv00001028sd000000E6*
+- ID_MODEL_FROM_DATABASE=PCI4451 PC card CardBus Controller (Inspiron 8100)
++ ID_MODEL_FROM_DATABASE=PCI4451 PC card Cardbus Controller (PCI4451 PC card CardBus Controller (Inspiron 8100))
+ pci:v0000104Cd0000AC44*
+  ID_MODEL_FROM_DATABASE=PCI4510 PC card Cardbus Controller
+ pci:v0000104Cd0000AC44sv00001028sd00000149*
+- ID_MODEL_FROM_DATABASE=Inspiron 5100
++ ID_MODEL_FROM_DATABASE=PCI4510 PC card Cardbus Controller (Inspiron 5100)
+ pci:v0000104Cd0000AC44sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=PCI4510 PC card Cardbus Controller (Latitude D505)
+ pci:v0000104Cd0000AC44sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=PCI4510 PC card Cardbus Controller (Inspiron 5160)
+ pci:v0000104Cd0000AC44sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=PCI4510 PC card Cardbus Controller (MIM2000)
+ pci:v0000104Cd0000AC46*
+  ID_MODEL_FROM_DATABASE=PCI4520 PC card Cardbus Controller
+ pci:v0000104Cd0000AC46sv00001014sd00000552*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=PCI4520 PC card Cardbus Controller (ThinkPad)
+ pci:v0000104Cd0000AC47*
+  ID_MODEL_FROM_DATABASE=PCI7510 PC card Cardbus Controller
+ pci:v0000104Cd0000AC47sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=PCI7510 PC card Cardbus Controller (Latitude D400)
+ pci:v0000104Cd0000AC47sv00001028sd0000013F*
+- ID_MODEL_FROM_DATABASE=Precision M60
++ ID_MODEL_FROM_DATABASE=PCI7510 PC card Cardbus Controller (Precision M60)
+ pci:v0000104Cd0000AC47sv00001028sd0000014E*
+- ID_MODEL_FROM_DATABASE=Latitude D800
++ ID_MODEL_FROM_DATABASE=PCI7510 PC card Cardbus Controller (Latitude D800)
+ pci:v0000104Cd0000AC48*
+  ID_MODEL_FROM_DATABASE=PCI7610 PC Card Cardbus Controller
+@@ -15147,10 +15147,10 @@ pci:v0000104Cd0000AC4A*
+  ID_MODEL_FROM_DATABASE=PCI7510/7610 CardBus Bridge
+ pci:v0000104Cd0000AC4Asv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=PCI7510/7610 CardBus Bridge (Latitude D400)
+ pci:v0000104Cd0000AC4Asv00001028sd0000014E*
+- ID_MODEL_FROM_DATABASE=Latitude D800
++ ID_MODEL_FROM_DATABASE=PCI7510/7610 CardBus Bridge (Latitude D800)
+ pci:v0000104Cd0000AC4B*
+  ID_MODEL_FROM_DATABASE=PCI7610 SD/MMC controller
+@@ -15165,28 +15165,28 @@ pci:v0000104Cd0000AC51*
+  ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller
+ pci:v0000104Cd0000AC51sv00000E11sd0000004E*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (Evo N600c)
+ pci:v0000104Cd0000AC51sv00001014sd00000148*
+- ID_MODEL_FROM_DATABASE=ThinkPad A20m
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (ThinkPad A20m)
+ pci:v0000104Cd0000AC51sv00001014sd0000023B*
+- ID_MODEL_FROM_DATABASE=ThinkPad T23
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (ThinkPad T23)
+ pci:v0000104Cd0000AC51sv00001028sd000000B1*
+- ID_MODEL_FROM_DATABASE=Latitude C600
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (Latitude C600)
+ pci:v0000104Cd0000AC51sv00001028sd0000012A*
+- ID_MODEL_FROM_DATABASE=Latitude C640
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (Latitude C640)
+ pci:v0000104Cd0000AC51sv00001033sd000080CD*
+- ID_MODEL_FROM_DATABASE=Versa Note VXi
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (Versa Note VXi)
+ pci:v0000104Cd0000AC51sv000010CFsd00001095*
+- ID_MODEL_FROM_DATABASE=Lifebook S-4510/C6155
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (Lifebook S-4510/C6155)
+ pci:v0000104Cd0000AC51sv0000E4BFsd00001000*
+- ID_MODEL_FROM_DATABASE=CP2-2-HIPHOP
++ ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller (CP2-2-HIPHOP)
+ pci:v0000104Cd0000AC52*
+  ID_MODEL_FROM_DATABASE=PCI1451 PC card Cardbus Controller
+@@ -15198,55 +15198,55 @@ pci:v0000104Cd0000AC54*
+  ID_MODEL_FROM_DATABASE=PCI1620 PC Card Controller
+ pci:v0000104Cd0000AC54sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=PCI1620 PC Card Controller (tc1100 tablet)
+ pci:v0000104Cd0000AC55*
+  ID_MODEL_FROM_DATABASE=PCI1520 PC card Cardbus Controller
+ pci:v0000104Cd0000AC55sv00001014sd00000512*
+- ID_MODEL_FROM_DATABASE=ThinkPad T30/T40
++ ID_MODEL_FROM_DATABASE=PCI1520 PC card Cardbus Controller (ThinkPad T30/T40)
+ pci:v0000104Cd0000AC55sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=PCI1520 PC card Cardbus Controller (XE4500 Notebook)
+ pci:v0000104Cd0000AC56*
+  ID_MODEL_FROM_DATABASE=PCI1510 PC card Cardbus Controller
+ pci:v0000104Cd0000AC56sv00001014sd00000512*
+- ID_MODEL_FROM_DATABASE=ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=PCI1510 PC card Cardbus Controller (ThinkPad R50e)
+ pci:v0000104Cd0000AC56sv00001014sd00000528*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=PCI1510 PC card Cardbus Controller (ThinkPad R40e)
+ pci:v0000104Cd0000AC56sv000017AAsd00002012*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=PCI1510 PC card Cardbus Controller (ThinkPad T60/R60 series)
+ pci:v0000104Cd0000AC60*
+  ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller
+ pci:v0000104Cd0000AC60sv0000175Csd00005100*
+- ID_MODEL_FROM_DATABASE=ASI51xx Audio Adapter
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (ASI51xx Audio Adapter)
+ pci:v0000104Cd0000AC60sv0000175Csd00006100*
+- ID_MODEL_FROM_DATABASE=ASI61xx Audio Adapter
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (ASI61xx Audio Adapter)
+ pci:v0000104Cd0000AC60sv0000175Csd00006200*
+- ID_MODEL_FROM_DATABASE=ASI62xx Audio Adapter
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (ASI62xx Audio Adapter)
+ pci:v0000104Cd0000AC60sv0000175Csd00008800*
+- ID_MODEL_FROM_DATABASE=ASI88xx Audio Adapter
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (ASI88xx Audio Adapter)
+ pci:v0000104Cd0000AC60sv0000186Fsd00003001*
+- ID_MODEL_FROM_DATABASE=WR-G303 PCI radio receiver
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (WR-G303 PCI radio receiver)
+ pci:v0000104Cd0000AC60sv0000186Fsd00003005*
+- ID_MODEL_FROM_DATABASE=WR-G305 PCI radio receiver
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (WR-G305 PCI radio receiver)
+ pci:v0000104Cd0000AC60sv0000186Fsd00003101*
+- ID_MODEL_FROM_DATABASE=WR-G313 PCI radio receiver
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (WR-G313 PCI radio receiver)
+ pci:v0000104Cd0000AC60sv0000186Fsd00003105*
+- ID_MODEL_FROM_DATABASE=WR-G315 PCI radio receiver
++ ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller (WR-G315 PCI radio receiver)
+ pci:v0000104Cd0000AC8D*
+  ID_MODEL_FROM_DATABASE=PCI 7620
+@@ -15255,13 +15255,13 @@ pci:v0000104Cd0000AC8E*
+  ID_MODEL_FROM_DATABASE=PCI7420 CardBus Controller
+ pci:v0000104Cd0000AC8Esv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=PCI7420 CardBus Controller (Inspiron 700m/710m)
+ pci:v0000104Cd0000AC8F*
+  ID_MODEL_FROM_DATABASE=PCI7420/7620 SD/MS-Pro Controller
+ pci:v0000104Cd0000AC8Fsv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=PCI7420/7620 SD/MS-Pro Controller (Inspiron 700m/710m)
+ pci:v0000104Cd0000B001*
+  ID_MODEL_FROM_DATABASE=TMS320C6424
+@@ -15336,10 +15336,10 @@ pci:v00001050d00000840*
+  ID_MODEL_FROM_DATABASE=W89C840
+ pci:v00001050d00000840sv00001050sd00000001*
+- ID_MODEL_FROM_DATABASE=W89C840 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=W89C840 (Ethernet Adapter)
+ pci:v00001050d00000840sv00001050sd00000840*
+- ID_MODEL_FROM_DATABASE=W89C840 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=W89C840 (Ethernet Adapter)
+ pci:v00001050d00000940*
+  ID_MODEL_FROM_DATABASE=W89C940
+@@ -15351,22 +15351,22 @@ pci:v00001050d00006692*
+  ID_MODEL_FROM_DATABASE=W6692
+ pci:v00001050d00006692sv00001043sd00001702*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, W)
++ ID_MODEL_FROM_DATABASE=W6692 (ISDN Adapter (PCI Bus, D, W))
+ pci:v00001050d00006692sv00001043sd00001703*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W)
++ ID_MODEL_FROM_DATABASE=W6692 (ISDN Adapter (PCI Bus, DV, W))
+ pci:v00001050d00006692sv00001043sd00001707*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W)
++ ID_MODEL_FROM_DATABASE=W6692 (ISDN Adapter (PCI Bus, DV, W))
+ pci:v00001050d00006692sv0000144Fsd00001702*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, W)
++ ID_MODEL_FROM_DATABASE=W6692 (ISDN Adapter (PCI Bus, D, W))
+ pci:v00001050d00006692sv0000144Fsd00001703*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W)
++ ID_MODEL_FROM_DATABASE=W6692 (ISDN Adapter (PCI Bus, DV, W))
+ pci:v00001050d00006692sv0000144Fsd00001707*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W)
++ ID_MODEL_FROM_DATABASE=W6692 (ISDN Adapter (PCI Bus, DV, W))
+ pci:v00001050d00009921*
+  ID_MODEL_FROM_DATABASE=W99200F MPEG-1 Video Encoder
+@@ -15501,76 +15501,76 @@ pci:v00001057d00001801*
+  ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor
+ pci:v00001057d00001801sv000014FBsd00000101*
+- ID_MODEL_FROM_DATABASE=Transas Radar Imitator Board [RIM]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Transas Radar Imitator Board [RIM])
+ pci:v00001057d00001801sv000014FBsd00000102*
+- ID_MODEL_FROM_DATABASE=Transas Radar Imitator Board [RIM-2]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Transas Radar Imitator Board [RIM-2])
+ pci:v00001057d00001801sv000014FBsd00000202*
+- ID_MODEL_FROM_DATABASE=Transas Radar Integrator Board [RIB-2]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Transas Radar Integrator Board [RIB-2])
+ pci:v00001057d00001801sv000014FBsd00000611*
+- ID_MODEL_FROM_DATABASE=1 channel CAN bus Controller [CanPci-1]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (1 channel CAN bus Controller [CanPci-1])
+ pci:v00001057d00001801sv000014FBsd00000612*
+- ID_MODEL_FROM_DATABASE=2 channels CAN bus Controller [CanPci-2]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (2 channels CAN bus Controller [CanPci-2])
+ pci:v00001057d00001801sv000014FBsd00000613*
+- ID_MODEL_FROM_DATABASE=3 channels CAN bus Controller [CanPci-3]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (3 channels CAN bus Controller [CanPci-3])
+ pci:v00001057d00001801sv000014FBsd00000614*
+- ID_MODEL_FROM_DATABASE=4 channels CAN bus Controller [CanPci-4]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (4 channels CAN bus Controller [CanPci-4])
+ pci:v00001057d00001801sv000014FBsd00000621*
+- ID_MODEL_FROM_DATABASE=1 channel CAN bus Controller [CanPci2-1]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (1 channel CAN bus Controller [CanPci2-1])
+ pci:v00001057d00001801sv000014FBsd00000622*
+- ID_MODEL_FROM_DATABASE=2 channels CAN bus Controller [CanPci2-2]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (2 channels CAN bus Controller [CanPci2-2])
+ pci:v00001057d00001801sv000014FBsd00000810*
+- ID_MODEL_FROM_DATABASE=Transas VTS Radar Integrator Board [RIB-4]
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Transas VTS Radar Integrator Board [RIB-4])
+ pci:v00001057d00001801sv0000175Csd00004200*
+- ID_MODEL_FROM_DATABASE=ASI4215 Audio Adapter
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (ASI4215 Audio Adapter)
+ pci:v00001057d00001801sv0000175Csd00004300*
+- ID_MODEL_FROM_DATABASE=ASI43xx Audio Adapter
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (ASI43xx Audio Adapter)
+ pci:v00001057d00001801sv0000175Csd00004400*
+- ID_MODEL_FROM_DATABASE=ASI4401 Audio Adapter
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (ASI4401 Audio Adapter)
+ pci:v00001057d00001801sv0000ECC0sd00000010*
+- ID_MODEL_FROM_DATABASE=Darla
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Darla)
+ pci:v00001057d00001801sv0000ECC0sd00000020*
+- ID_MODEL_FROM_DATABASE=Gina
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Gina)
+ pci:v00001057d00001801sv0000ECC0sd00000030*
+- ID_MODEL_FROM_DATABASE=Layla rev.0
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Layla rev.0)
+ pci:v00001057d00001801sv0000ECC0sd00000031*
+- ID_MODEL_FROM_DATABASE=Layla rev.1
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Layla rev.1)
+ pci:v00001057d00001801sv0000ECC0sd00000040*
+- ID_MODEL_FROM_DATABASE=Darla24 rev.0
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Darla24 rev.0)
+ pci:v00001057d00001801sv0000ECC0sd00000041*
+- ID_MODEL_FROM_DATABASE=Darla24 rev.1
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Darla24 rev.1)
+ pci:v00001057d00001801sv0000ECC0sd00000050*
+- ID_MODEL_FROM_DATABASE=Gina24 rev.0
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Gina24 rev.0)
+ pci:v00001057d00001801sv0000ECC0sd00000051*
+- ID_MODEL_FROM_DATABASE=Gina24 rev.1
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Gina24 rev.1)
+ pci:v00001057d00001801sv0000ECC0sd00000070*
+- ID_MODEL_FROM_DATABASE=Mona rev.0
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Mona rev.0)
+ pci:v00001057d00001801sv0000ECC0sd00000071*
+- ID_MODEL_FROM_DATABASE=Mona rev.1
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Mona rev.1)
+ pci:v00001057d00001801sv0000ECC0sd00000072*
+- ID_MODEL_FROM_DATABASE=Mona rev.2
++ ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor (Mona rev.2)
+ pci:v00001057d000018C0*
+  ID_MODEL_FROM_DATABASE=MPC8265A/8266/8272
+@@ -15585,40 +15585,40 @@ pci:v00001057d00003410*
+  ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor
+ pci:v00001057d00003410sv0000ECC0sd00000050*
+- ID_MODEL_FROM_DATABASE=Gina24 rev.0
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Gina24 rev.0)
+ pci:v00001057d00003410sv0000ECC0sd00000051*
+- ID_MODEL_FROM_DATABASE=Gina24 rev.1
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Gina24 rev.1)
+ pci:v00001057d00003410sv0000ECC0sd00000060*
+- ID_MODEL_FROM_DATABASE=Layla24
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Layla24)
+ pci:v00001057d00003410sv0000ECC0sd00000070*
+- ID_MODEL_FROM_DATABASE=Mona rev.0
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Mona rev.0)
+ pci:v00001057d00003410sv0000ECC0sd00000071*
+- ID_MODEL_FROM_DATABASE=Mona rev.1
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Mona rev.1)
+ pci:v00001057d00003410sv0000ECC0sd00000072*
+- ID_MODEL_FROM_DATABASE=Mona rev.2
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Mona rev.2)
+ pci:v00001057d00003410sv0000ECC0sd00000080*
+- ID_MODEL_FROM_DATABASE=Mia rev.0
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Mia rev.0)
+ pci:v00001057d00003410sv0000ECC0sd00000081*
+- ID_MODEL_FROM_DATABASE=Mia rev.1
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Mia rev.1)
+ pci:v00001057d00003410sv0000ECC0sd00000090*
+- ID_MODEL_FROM_DATABASE=Indigo
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Indigo)
+ pci:v00001057d00003410sv0000ECC0sd000000A0*
+- ID_MODEL_FROM_DATABASE=Indigo IO
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Indigo IO)
+ pci:v00001057d00003410sv0000ECC0sd000000B0*
+- ID_MODEL_FROM_DATABASE=Indigo DJ
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (Indigo DJ)
+ pci:v00001057d00003410sv0000ECC0sd00000100*
+- ID_MODEL_FROM_DATABASE=3G
++ ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor (3G)
+ pci:v00001057d00004801*
+  ID_MODEL_FROM_DATABASE=Raven
+@@ -15639,55 +15639,55 @@ pci:v00001057d00005600*
+  ID_MODEL_FROM_DATABASE=SM56 PCI Modem
+ pci:v00001057d00005600sv00001057sd00000300*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Speakerphone Modem)
+ pci:v00001057d00005600sv00001057sd00000301*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Voice Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Voice Modem)
+ pci:v00001057d00005600sv00001057sd00000302*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Fax Modem)
+ pci:v00001057d00005600sv00001057sd00005600*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Voice modem)
+ pci:v00001057d00005600sv000013D2sd00000300*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Speakerphone Modem)
+ pci:v00001057d00005600sv000013D2sd00000301*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Voice modem)
+ pci:v00001057d00005600sv000013D2sd00000302*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Fax Modem)
+ pci:v00001057d00005600sv00001436sd00000300*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Speakerphone Modem)
+ pci:v00001057d00005600sv00001436sd00000301*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Voice modem)
+ pci:v00001057d00005600sv00001436sd00000302*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Fax Modem)
+ pci:v00001057d00005600sv0000144Fsd0000100C*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Fax Modem)
+ pci:v00001057d00005600sv00001494sd00000300*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Speakerphone Modem)
+ pci:v00001057d00005600sv00001494sd00000301*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Voice modem)
+ pci:v00001057d00005600sv000014C8sd00000300*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Speakerphone Modem)
+ pci:v00001057d00005600sv000014C8sd00000302*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Fax Modem)
+ pci:v00001057d00005600sv00001668sd00000300*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Speakerphone Modem)
+ pci:v00001057d00005600sv00001668sd00000302*
+- ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem
++ ID_MODEL_FROM_DATABASE=SM56 PCI Modem (SM56 PCI Fax Modem)
+ pci:v00001057d00005608*
+  ID_MODEL_FROM_DATABASE=Wildcard X100P
+@@ -15723,16 +15723,16 @@ pci:v0000105Ad00000D30*
+  ID_MODEL_FROM_DATABASE=PDC20265 (FastTrak100 Lite/Ultra100)
+ pci:v0000105Ad00000D30sv00001043sd00008042*
+- ID_MODEL_FROM_DATABASE=AV7266-E South Bridge Promise RAID
++ ID_MODEL_FROM_DATABASE=PDC20265 (FastTrak100 Lite/Ultra100) (AV7266-E South Bridge Promise RAID)
+ pci:v0000105Ad00000D30sv0000105Asd00004D33*
+- ID_MODEL_FROM_DATABASE=Ultra100
++ ID_MODEL_FROM_DATABASE=PDC20265 (FastTrak100 Lite/Ultra100) (Ultra100)
+ pci:v0000105Ad00000D38*
+  ID_MODEL_FROM_DATABASE=20263
+ pci:v0000105Ad00000D38sv0000105Asd00004D39*
+- ID_MODEL_FROM_DATABASE=Fasttrak66
++ ID_MODEL_FROM_DATABASE=20263 (Fasttrak66)
+ pci:v0000105Ad00001275*
+  ID_MODEL_FROM_DATABASE=20275
+@@ -15744,10 +15744,10 @@ pci:v0000105Ad00003319*
+  ID_MODEL_FROM_DATABASE=PDC20319 (FastTrak S150 TX4)
+ pci:v0000105Ad00003319sv0000105Asd00003319*
+- ID_MODEL_FROM_DATABASE=FastTrak S150 TX4 4 port SATA PCI board
++ ID_MODEL_FROM_DATABASE=PDC20319 (FastTrak S150 TX4) (FastTrak S150 TX4 4 port SATA PCI board)
+ pci:v0000105Ad00003319sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=PDC20319 (FastTrak S150 TX4) (S875WP1-E mainboard)
+ pci:v0000105Ad00003371*
+  ID_MODEL_FROM_DATABASE=PDC20371 (FastTrak S150 TX2plus)
+@@ -15756,13 +15756,13 @@ pci:v0000105Ad00003373*
+  ID_MODEL_FROM_DATABASE=PDC20378 (FastTrak 378/SATA 378)
+ pci:v0000105Ad00003373sv00001043sd000080F5*
+- ID_MODEL_FROM_DATABASE=K8V Deluxe/PC-DL Deluxe motherboard
++ ID_MODEL_FROM_DATABASE=PDC20378 (FastTrak 378/SATA 378) (K8V Deluxe/PC-DL Deluxe motherboard)
+ pci:v0000105Ad00003373sv00001462sd0000590D*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=PDC20378 (FastTrak 378/SATA 378) (KT6 Delta-FIS2R (MS-6590))
+ pci:v0000105Ad00003373sv00001462sd0000702E*
+- ID_MODEL_FROM_DATABASE=K8T NEO FIS2R motherboard
++ ID_MODEL_FROM_DATABASE=PDC20378 (FastTrak 378/SATA 378) (K8T NEO FIS2R motherboard)
+ pci:v0000105Ad00003375*
+  ID_MODEL_FROM_DATABASE=PDC20375 (SATA150 TX2plus)
+@@ -15771,7 +15771,7 @@ pci:v0000105Ad00003376*
+  ID_MODEL_FROM_DATABASE=PDC20376 (FastTrak 376)
+ pci:v0000105Ad00003376sv00001043sd0000809E*
+- ID_MODEL_FROM_DATABASE=A7V8X motherboard
++ ID_MODEL_FROM_DATABASE=PDC20376 (FastTrak 376) (A7V8X motherboard)
+ pci:v0000105Ad00003515*
+  ID_MODEL_FROM_DATABASE=PDC40719 [FastTrak TX4300/TX4310]
+@@ -15813,58 +15813,58 @@ pci:v0000105Ad00004D30*
+  ID_MODEL_FROM_DATABASE=PDC20267 (FastTrak100/Ultra100)
+ pci:v0000105Ad00004D30sv0000105Asd00004D33*
+- ID_MODEL_FROM_DATABASE=Ultra100
++ ID_MODEL_FROM_DATABASE=PDC20267 (FastTrak100/Ultra100) (Ultra100)
+ pci:v0000105Ad00004D30sv0000105Asd00004D39*
+- ID_MODEL_FROM_DATABASE=FastTrak100
++ ID_MODEL_FROM_DATABASE=PDC20267 (FastTrak100/Ultra100) (FastTrak100)
+ pci:v0000105Ad00004D30sv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=PDC20267 (FastTrak100/Ultra100) (S845WD1-E mainboard)
+ pci:v0000105Ad00004D33*
+  ID_MODEL_FROM_DATABASE=20246
+ pci:v0000105Ad00004D33sv0000105Asd00004D33*
+- ID_MODEL_FROM_DATABASE=20246 IDE Controller
++ ID_MODEL_FROM_DATABASE=20246 (IDE Controller)
+ pci:v0000105Ad00004D38*
+  ID_MODEL_FROM_DATABASE=PDC20262 (FastTrak66/Ultra66)
+ pci:v0000105Ad00004D38sv0000105Asd00004D30*
+- ID_MODEL_FROM_DATABASE=Ultra Device on SuperTrak
++ ID_MODEL_FROM_DATABASE=PDC20262 (FastTrak66/Ultra66) (Ultra Device on SuperTrak)
+ pci:v0000105Ad00004D38sv0000105Asd00004D33*
+- ID_MODEL_FROM_DATABASE=Ultra66
++ ID_MODEL_FROM_DATABASE=PDC20262 (FastTrak66/Ultra66) (Ultra66)
+ pci:v0000105Ad00004D38sv0000105Asd00004D39*
+- ID_MODEL_FROM_DATABASE=FastTrak66
++ ID_MODEL_FROM_DATABASE=PDC20262 (FastTrak66/Ultra66) (FastTrak66)
+ pci:v0000105Ad00004D68*
+  ID_MODEL_FROM_DATABASE=PDC20268 [Ultra100 TX2]
+ pci:v0000105Ad00004D68sv0000105Asd00004D68*
+- ID_MODEL_FROM_DATABASE=Ultra100 TX2
++ ID_MODEL_FROM_DATABASE=PDC20268 [Ultra100 TX2] (Ultra100 TX2)
+ pci:v0000105Ad00004D69*
+  ID_MODEL_FROM_DATABASE=20269
+ pci:v0000105Ad00004D69sv0000105Asd00004D68*
+- ID_MODEL_FROM_DATABASE=Ultra133TX2
++ ID_MODEL_FROM_DATABASE=20269 (Ultra133TX2)
+ pci:v0000105Ad00005275*
+  ID_MODEL_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite)
+ pci:v0000105Ad00005275sv00001043sd0000807E*
+- ID_MODEL_FROM_DATABASE=A7V333 motherboard.
++ ID_MODEL_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite) (A7V333 motherboard.)
+ pci:v0000105Ad00005275sv0000105Asd00000275*
+- ID_MODEL_FROM_DATABASE=SuperTrak SX6000 IDE
++ ID_MODEL_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite) (SuperTrak SX6000 IDE)
+ pci:v0000105Ad00005275sv0000105Asd00001275*
+- ID_MODEL_FROM_DATABASE=MBFastTrak133 Lite (tm) Controller (RAID mode)
++ ID_MODEL_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite) (MBFastTrak133 Lite (tm) Controller (RAID mode))
+ pci:v0000105Ad00005275sv00001458sd0000B001*
+- ID_MODEL_FROM_DATABASE=MBUltra 133
++ ID_MODEL_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite) (MBUltra 133)
+ pci:v0000105Ad00005300*
+  ID_MODEL_FROM_DATABASE=DC5300
+@@ -15873,13 +15873,13 @@ pci:v0000105Ad00006268*
+  ID_MODEL_FROM_DATABASE=PDC20270 (FastTrak100 LP/TX2/TX4)
+ pci:v0000105Ad00006268sv0000105Asd00004D68*
+- ID_MODEL_FROM_DATABASE=FastTrak100 TX2
++ ID_MODEL_FROM_DATABASE=PDC20270 (FastTrak100 LP/TX2/TX4) (FastTrak100 TX2)
+ pci:v0000105Ad00006269*
+  ID_MODEL_FROM_DATABASE=PDC20271 (FastTrak TX2000)
+ pci:v0000105Ad00006269sv0000105Asd00006269*
+- ID_MODEL_FROM_DATABASE=FastTrak TX2/TX2000
++ ID_MODEL_FROM_DATABASE=PDC20271 (FastTrak TX2000) (FastTrak TX2/TX2000)
+ pci:v0000105Ad00006300*
+  ID_MODEL_FROM_DATABASE=PDC81731 [FastTrak SX8300]
+@@ -15912,43 +15912,43 @@ pci:v0000105Ad00008650*
+  ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller]
+ pci:v0000105Ad00008650sv0000105Asd00004600*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX4650A
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX4650A)
+ pci:v0000105Ad00008650sv0000105Asd00004601*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX4650
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX4650)
+ pci:v0000105Ad00008650sv0000105Asd00004610*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX4650EL
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX4650EL)
+ pci:v0000105Ad00008650sv0000105Asd00008600*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX8650EL
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX8650EL)
+ pci:v0000105Ad00008650sv0000105Asd00008601*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX8650A
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX8650A)
+ pci:v0000105Ad00008650sv0000105Asd00008602*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX8654
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX8654)
+ pci:v0000105Ad00008650sv0000105Asd00008603*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX8658
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX8658)
+ pci:v0000105Ad00008650sv0000105Asd00008604*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX8650
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX8650)
+ pci:v0000105Ad00008650sv0000105Asd00008610*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX8650M
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX8650M)
+ pci:v0000105Ad00008650sv0000105Asd0000A600*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX12650
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX12650)
+ pci:v0000105Ad00008650sv0000105Asd0000B600*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX16650
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX16650)
+ pci:v0000105Ad00008650sv0000105Asd0000B601*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX16654
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX16654)
+ pci:v0000105Ad00008650sv0000105Asd0000B602*
+- ID_MODEL_FROM_DATABASE=SuperTrak EX16658
++ ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] (SuperTrak EX16658)
+ pci:v0000105Ad00008760*
+  ID_MODEL_FROM_DATABASE=PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller]
+@@ -15975,106 +15975,106 @@ pci:v0000105Dd00002339*
+  ID_MODEL_FROM_DATABASE=Imagine 128-II
+ pci:v0000105Dd00002339sv0000105Dsd00000000*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000001*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000002*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000003*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000004*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000005*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000006*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000007*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 4Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000008*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2e 4Mb DRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2e 4Mb DRAM)
+ pci:v0000105Dd00002339sv0000105Dsd00000009*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2e 4Mb DRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2e 4Mb DRAM)
+ pci:v0000105Dd00002339sv0000105Dsd0000000A*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 8Mb VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 8Mb VRAM)
+ pci:v0000105Dd00002339sv0000105Dsd0000000B*
+- ID_MODEL_FROM_DATABASE=Imagine 128 series 2 8Mb H-VRAM
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Imagine 128 series 2 8Mb H-VRAM)
+ pci:v0000105Dd00002339sv000011A4sd0000000A*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd00000000*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd00000004*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd00000005*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd00000006*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd00000008*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd00000009*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd0000000A*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd00002339sv000013CCsd0000000C*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel
++ ID_MODEL_FROM_DATABASE=Imagine 128-II (Barco Metheus 5 Megapixel)
+ pci:v0000105Dd0000493D*
+  ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride]
+ pci:v0000105Dd0000493Dsv000011A4sd0000000A*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000011A4sd0000000B*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000013CCsd00000002*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 4 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 4 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000013CCsd00000003*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000013CCsd00000007*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000013CCsd00000008*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000013CCsd00000009*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd0000493Dsv000013CCsd0000000A*
+- ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head
++ ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] (Barco Metheus 5 Megapixel, Dual Head)
+ pci:v0000105Dd00005348*
+  ID_MODEL_FROM_DATABASE=Revolution 4
+ pci:v0000105Dd00005348sv0000105Dsd00000037*
+- ID_MODEL_FROM_DATABASE=Revolution IV-FP AGP (For SGI 1600SW)
++ ID_MODEL_FROM_DATABASE=Revolution 4 (Revolution IV-FP AGP (For SGI 1600SW))
+ pci:v0000105Dd00005348sv000011A4sd00000028*
+- ID_MODEL_FROM_DATABASE=PVS5600M
++ ID_MODEL_FROM_DATABASE=Revolution 4 (PVS5600M)
+ pci:v0000105Dd00005348sv000011A4sd00000038*
+- ID_MODEL_FROM_DATABASE=PVS5600D
++ ID_MODEL_FROM_DATABASE=Revolution 4 (PVS5600D)
+ pci:v0000105E*
+  ID_VENDOR_FROM_DATABASE=Vtech Computers Ltd
+@@ -16236,43 +16236,43 @@ pci:v00001069d00000050*
+  ID_MODEL_FROM_DATABASE=AcceleRAID 352/170/160 support Device
+ pci:v00001069d00000050sv00001069sd00000050*
+- ID_MODEL_FROM_DATABASE=AcceleRAID 352 support Device
++ ID_MODEL_FROM_DATABASE=AcceleRAID 352/170/160 support Device (AcceleRAID 352 support Device)
+ pci:v00001069d00000050sv00001069sd00000052*
+- ID_MODEL_FROM_DATABASE=AcceleRAID 170 support Device
++ ID_MODEL_FROM_DATABASE=AcceleRAID 352/170/160 support Device (AcceleRAID 170 support Device)
+ pci:v00001069d00000050sv00001069sd00000054*
+- ID_MODEL_FROM_DATABASE=AcceleRAID 160 support Device
++ ID_MODEL_FROM_DATABASE=AcceleRAID 352/170/160 support Device (AcceleRAID 160 support Device)
+ pci:v00001069d0000B166*
+  ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device
+ pci:v00001069d0000B166sv00001014sd00000242*
+- ID_MODEL_FROM_DATABASE=iSeries 2872 DASD IOA
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (iSeries 2872 DASD IOA)
+ pci:v00001069d0000B166sv00001014sd00000266*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI Adapter
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (Dual Channel PCI-X U320 SCSI Adapter)
+ pci:v00001069d0000B166sv00001014sd00000278*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI RAID Adapter
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (Dual Channel PCI-X U320 SCSI RAID Adapter)
+ pci:v00001069d0000B166sv00001014sd000002D3*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI Adapter
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (Dual Channel PCI-X U320 SCSI Adapter)
+ pci:v00001069d0000B166sv00001014sd000002D4*
+- ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI RAID Adapter
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (Dual Channel PCI-X U320 SCSI RAID Adapter)
+ pci:v00001069d0000B166sv00001069sd00000200*
+- ID_MODEL_FROM_DATABASE=AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID)
+ pci:v00001069d0000B166sv00001069sd00000202*
+- ID_MODEL_FROM_DATABASE=AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID)
+ pci:v00001069d0000B166sv00001069sd00000204*
+- ID_MODEL_FROM_DATABASE=AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID)
+ pci:v00001069d0000B166sv00001069sd00000206*
+- ID_MODEL_FROM_DATABASE=AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID
++ ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device (AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID)
+ pci:v00001069d0000BA55*
+  ID_MODEL_FROM_DATABASE=eXtremeRAID 1100 support Device
+@@ -16281,16 +16281,16 @@ pci:v00001069d0000BA56*
+  ID_MODEL_FROM_DATABASE=eXtremeRAID 2000/3000 support Device
+ pci:v00001069d0000BA56sv00001069sd00000030*
+- ID_MODEL_FROM_DATABASE=eXtremeRAID 3000 support Device
++ ID_MODEL_FROM_DATABASE=eXtremeRAID 2000/3000 support Device (eXtremeRAID 3000 support Device)
+ pci:v00001069d0000BA56sv00001069sd00000040*
+- ID_MODEL_FROM_DATABASE=eXtremeRAID 2000 support Device
++ ID_MODEL_FROM_DATABASE=eXtremeRAID 2000/3000 support Device (eXtremeRAID 2000 support Device)
+ pci:v00001069d0000BA57*
+  ID_MODEL_FROM_DATABASE=eXtremeRAID 4000/5000 support Device
+ pci:v00001069d0000BA57sv00001069sd00000072*
+- ID_MODEL_FROM_DATABASE=eXtremeRAID 5000 support Device
++ ID_MODEL_FROM_DATABASE=eXtremeRAID 4000/5000 support Device (eXtremeRAID 5000 support Device)
+ pci:v0000106A*
+  ID_VENDOR_FROM_DATABASE=Aten Research Inc
+@@ -16380,7 +16380,7 @@ pci:v0000106Bd00000031*
+  ID_MODEL_FROM_DATABASE=UniNorth 2 FireWire
+ pci:v0000106Bd00000031sv0000106Bsd00005811*
+- ID_MODEL_FROM_DATABASE=iBook G4 2004
++ ID_MODEL_FROM_DATABASE=UniNorth 2 FireWire (iBook G4 2004)
+ pci:v0000106Bd00000032*
+  ID_MODEL_FROM_DATABASE=UniNorth 2 GMAC (Sun GEM)
+@@ -16407,7 +16407,7 @@ pci:v0000106Bd0000003F*
+  ID_MODEL_FROM_DATABASE=KeyLargo/Intrepid USB
+ pci:v0000106Bd0000003Fsv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=KeyLargo/Intrepid USB (QEMU Virtual Machine)
+ pci:v0000106Bd00000040*
+  ID_MODEL_FROM_DATABASE=K2 KeyLargo USB
+@@ -16563,13 +16563,13 @@ pci:v00001073d00000004*
+  ID_MODEL_FROM_DATABASE=YMF-724
+ pci:v00001073d00000004sv00001073sd00000004*
+- ID_MODEL_FROM_DATABASE=YMF724-Based PCI Audio Adapter
++ ID_MODEL_FROM_DATABASE=YMF-724 (YMF724-Based PCI Audio Adapter)
+ pci:v00001073d00000005*
+  ID_MODEL_FROM_DATABASE=DS1 Audio
+ pci:v00001073d00000005sv00001073sd00000005*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=DS1 Audio (DS-XG PCI Audio CODEC)
+ pci:v00001073d00000006*
+  ID_MODEL_FROM_DATABASE=DS1 Audio
+@@ -16578,46 +16578,46 @@ pci:v00001073d00000008*
+  ID_MODEL_FROM_DATABASE=DS1 Audio
+ pci:v00001073d00000008sv00001073sd00000008*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=DS1 Audio (DS-XG PCI Audio CODEC)
+ pci:v00001073d0000000A*
+  ID_MODEL_FROM_DATABASE=DS1L Audio
+ pci:v00001073d0000000Asv00001073sd00000004*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=DS1L Audio (DS-XG PCI Audio CODEC)
+ pci:v00001073d0000000Asv00001073sd0000000A*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=DS1L Audio (DS-XG PCI Audio CODEC)
+ pci:v00001073d0000000Asv00008086sd00004D55*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC [Intel MU440EX]
++ ID_MODEL_FROM_DATABASE=DS1L Audio (DS-XG PCI Audio CODEC [Intel MU440EX])
+ pci:v00001073d0000000C*
+  ID_MODEL_FROM_DATABASE=YMF-740C [DS-1L Audio Controller]
+ pci:v00001073d0000000Csv0000107Asd0000000C*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=YMF-740C [DS-1L Audio Controller] (DS-XG PCI Audio CODEC)
+ pci:v00001073d0000000D*
+  ID_MODEL_FROM_DATABASE=YMF-724F [DS-1 Audio Controller]
+ pci:v00001073d0000000Dsv00001073sd0000000D*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=YMF-724F [DS-1 Audio Controller] (DS-XG PCI Audio CODEC)
+ pci:v00001073d00000010*
+  ID_MODEL_FROM_DATABASE=YMF-744B [DS-1S Audio Controller]
+ pci:v00001073d00000010sv00001073sd00000006*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=YMF-744B [DS-1S Audio Controller] (DS-XG PCI Audio CODEC)
+ pci:v00001073d00000010sv00001073sd00000010*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC
++ ID_MODEL_FROM_DATABASE=YMF-744B [DS-1S Audio Controller] (DS-XG PCI Audio CODEC)
+ pci:v00001073d00000012*
+  ID_MODEL_FROM_DATABASE=YMF-754 [DS-1E Audio Controller]
+ pci:v00001073d00000012sv00001073sd00000012*
+- ID_MODEL_FROM_DATABASE=DS-XG PCI Audio Codec
++ ID_MODEL_FROM_DATABASE=YMF-754 [DS-1E Audio Controller] (DS-XG PCI Audio Codec)
+ pci:v00001073d00000020*
+  ID_MODEL_FROM_DATABASE=DS-1 Audio
+@@ -16662,10 +16662,10 @@ pci:v00001077d00001216*
+  ID_MODEL_FROM_DATABASE=ISP12160 Dual Channel Ultra3 SCSI Processor
+ pci:v00001077d00001216sv0000101Esd00008471*
+- ID_MODEL_FROM_DATABASE=QLA12160 on AMI MegaRAID
++ ID_MODEL_FROM_DATABASE=ISP12160 Dual Channel Ultra3 SCSI Processor (QLA12160 on AMI MegaRAID)
+ pci:v00001077d00001216sv0000101Esd00008493*
+- ID_MODEL_FROM_DATABASE=QLA12160 on AMI MegaRAID
++ ID_MODEL_FROM_DATABASE=ISP12160 Dual Channel Ultra3 SCSI Processor (QLA12160 on AMI MegaRAID)
+ pci:v00001077d00001240*
+  ID_MODEL_FROM_DATABASE=ISP1240 SCSI Host Adapter
+@@ -16689,7 +16689,7 @@ pci:v00001077d00002200*
+  ID_MODEL_FROM_DATABASE=QLA2200 64-bit Fibre Channel Adapter
+ pci:v00001077d00002200sv00001077sd00000002*
+- ID_MODEL_FROM_DATABASE=QLA2200
++ ID_MODEL_FROM_DATABASE=QLA2200 64-bit Fibre Channel Adapter (QLA2200)
+ pci:v00001077d00002300*
+  ID_MODEL_FROM_DATABASE=QLA2300 64-bit Fibre Channel Adapter
+@@ -16698,10 +16698,10 @@ pci:v00001077d00002312*
+  ID_MODEL_FROM_DATABASE=ISP2312-based 2Gb Fibre Channel to PCI-X HBA
+ pci:v00001077d00002312sv0000103Csd00000131*
+- ID_MODEL_FROM_DATABASE=2Gb Fibre Channel - Single port [A7538A]
++ ID_MODEL_FROM_DATABASE=ISP2312-based 2Gb Fibre Channel to PCI-X HBA (2Gb Fibre Channel - Single port [A7538A])
+ pci:v00001077d00002312sv0000103Csd000012BA*
+- ID_MODEL_FROM_DATABASE=2Gb Fibre Channel - Dual port [A6826A]
++ ID_MODEL_FROM_DATABASE=ISP2312-based 2Gb Fibre Channel to PCI-X HBA (2Gb Fibre Channel - Dual port [A6826A])
+ pci:v00001077d00002322*
+  ID_MODEL_FROM_DATABASE=ISP2322-based 2Gb Fibre Channel to PCI-X HBA
+@@ -16710,25 +16710,25 @@ pci:v00001077d00002422*
+  ID_MODEL_FROM_DATABASE=ISP2422-based 4Gb Fibre Channel to PCI-X HBA
+ pci:v00001077d00002422sv0000103Csd000012D7*
+- ID_MODEL_FROM_DATABASE=4Gb Fibre Channel [AB379A]
++ ID_MODEL_FROM_DATABASE=ISP2422-based 4Gb Fibre Channel to PCI-X HBA (4Gb Fibre Channel [AB379A])
+ pci:v00001077d00002422sv0000103Csd000012DD*
+- ID_MODEL_FROM_DATABASE=4Gb Fibre Channel [AB429A]
++ ID_MODEL_FROM_DATABASE=ISP2422-based 4Gb Fibre Channel to PCI-X HBA (4Gb Fibre Channel [AB429A])
+ pci:v00001077d00002432*
+  ID_MODEL_FROM_DATABASE=ISP2432-based 4Gb Fibre Channel to PCI Express HBA
+ pci:v00001077d00002432sv0000103Csd00007040*
+- ID_MODEL_FROM_DATABASE=FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A]
++ ID_MODEL_FROM_DATABASE=ISP2432-based 4Gb Fibre Channel to PCI Express HBA (FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A])
+ pci:v00001077d00002532*
+  ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA
+ pci:v00001077d00002532sv0000103Csd00003262*
+- ID_MODEL_FROM_DATABASE=StorageWorks 81Q
++ ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA (StorageWorks 81Q)
+ pci:v00001077d00002532sv00001077sd00000167*
+- ID_MODEL_FROM_DATABASE=QME2572 Dual Port FC8 HBA Mezzanine
++ ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA (QME2572 Dual Port FC8 HBA Mezzanine)
+ pci:v00001077d00003022*
+  ID_MODEL_FROM_DATABASE=ISP4022-based Ethernet NIC
+@@ -16770,55 +16770,55 @@ pci:v00001077d00008020*
+  ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller
+ pci:v00001077d00008020sv0000103Csd00003346*
+- ID_MODEL_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (CN1000Q Dual Port Converged Network Adapter)
+ pci:v00001077d00008020sv0000103Csd00003733*
+- ID_MODEL_FROM_DATABASE=NC523SFP 10Gb 2-port Server Adapter
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (NC523SFP 10Gb 2-port Server Adapter)
+ pci:v00001077d00008020sv00001077sd00000203*
+- ID_MODEL_FROM_DATABASE=8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking)
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking))
+ pci:v00001077d00008020sv00001077sd00000207*
+- ID_MODEL_FROM_DATABASE=8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking)
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking))
+ pci:v00001077d00008020sv00001077sd0000020B*
+- ID_MODEL_FROM_DATABASE=3200 Series Dual Port 10Gb Intelligent Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (3200 Series Dual Port 10Gb Intelligent Ethernet Adapter)
+ pci:v00001077d00008020sv00001077sd0000020C*
+- ID_MODEL_FROM_DATABASE=3200 Series Quad Port 1Gb Intelligent Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (3200 Series Quad Port 1Gb Intelligent Ethernet Adapter)
+ pci:v00001077d00008020sv00001077sd0000020F*
+- ID_MODEL_FROM_DATABASE=3200 Series Single Port 10Gb Intelligent Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (3200 Series Single Port 10Gb Intelligent Ethernet Adapter)
+ pci:v00001077d00008020sv00001077sd00000210*
+- ID_MODEL_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card
++ ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller (QME8242-k 10GbE Dual Port Mezzanine Card)
+ pci:v00001077d00008021*
+  ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (FCoE)
+ pci:v00001077d00008021sv0000103Csd00003348*
+- ID_MODEL_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (FCoE) (CN1000Q Dual Port Converged Network Adapter)
+ pci:v00001077d00008021sv00001077sd00000211*
+- ID_MODEL_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, FCoE
++ ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (FCoE) (QME8242-k 10GbE Dual Port Mezzanine Card, FCoE)
+ pci:v00001077d00008022*
+  ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (iSCSI)
+ pci:v00001077d00008022sv0000103Csd00003347*
+- ID_MODEL_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (iSCSI) (CN1000Q Dual Port Converged Network Adapter)
+ pci:v00001077d00008022sv00001077sd00000212*
+- ID_MODEL_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI
++ ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (iSCSI) (QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI)
+ pci:v00001077d00008030*
+  ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller
+ pci:v00001077d00008030sv00001077sd00000243*
+- ID_MODEL_FROM_DATABASE=8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking)
++ ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking))
+ pci:v00001077d00008030sv00001077sd00000246*
+- ID_MODEL_FROM_DATABASE=8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking)
++ ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking))
+ pci:v00001077d00008031*
+  ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE)
+@@ -17022,7 +17022,7 @@ pci:v0000108Dd00000004*
+  ID_MODEL_FROM_DATABASE=RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter
+ pci:v0000108Dd00000004sv0000108Dsd00000004*
+- ID_MODEL_FROM_DATABASE=OC-3139/3140 RapidFire Token-Ring 16/4 Adapter
++ ID_MODEL_FROM_DATABASE=RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter (OC-3139/3140 RapidFire Token-Ring 16/4 Adapter)
+ pci:v0000108Dd00000005*
+  ID_MODEL_FROM_DATABASE=GoCard 3250 Token-Ring 16/4 CardBus PC Card
+@@ -17034,13 +17034,13 @@ pci:v0000108Dd00000007*
+  ID_MODEL_FROM_DATABASE=RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter
+ pci:v0000108Dd00000007sv0000108Dsd00000007*
+- ID_MODEL_FROM_DATABASE=OC-3141 RapidFire Token-Ring 16/4 Adapter
++ ID_MODEL_FROM_DATABASE=RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter (OC-3141 RapidFire Token-Ring 16/4 Adapter)
+ pci:v0000108Dd00000008*
+  ID_MODEL_FROM_DATABASE=RapidFire 3540 HSTR 100/16/4 PCI Adapter
+ pci:v0000108Dd00000008sv0000108Dsd00000008*
+- ID_MODEL_FROM_DATABASE=OC-3540 RapidFire HSTR 100/16/4 Adapter
++ ID_MODEL_FROM_DATABASE=RapidFire 3540 HSTR 100/16/4 PCI Adapter (OC-3540 RapidFire HSTR 100/16/4 Adapter)
+ pci:v0000108Dd00000011*
+  ID_MODEL_FROM_DATABASE=OC-2315
+@@ -17058,10 +17058,10 @@ pci:v0000108Dd00000019*
+  ID_MODEL_FROM_DATABASE=OC-2327/2250 10/100 Ethernet Adapter
+ pci:v0000108Dd00000019sv0000108Dsd00000016*
+- ID_MODEL_FROM_DATABASE=OC-2327 Rapidfire 10/100 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=OC-2327/2250 10/100 Ethernet Adapter (OC-2327 Rapidfire 10/100 Ethernet Adapter)
+ pci:v0000108Dd00000019sv0000108Dsd00000017*
+- ID_MODEL_FROM_DATABASE=OC-2250 GoCard 10/100 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=OC-2327/2250 10/100 Ethernet Adapter (OC-2250 GoCard 10/100 Ethernet Adapter)
+ pci:v0000108Dd00000021*
+  ID_MODEL_FROM_DATABASE=OC-6151/6152 [RapidFire ATM 155]
+@@ -17085,25 +17085,25 @@ pci:v0000108Ed00001100*
+  ID_MODEL_FROM_DATABASE=RIO EBUS
+ pci:v0000108Ed00001100sv0000108Esd00001100*
+- ID_MODEL_FROM_DATABASE=RIO EBUS on Blade 100 motherboard
++ ID_MODEL_FROM_DATABASE=RIO EBUS (on Blade 100 motherboard)
+ pci:v0000108Ed00001101*
+  ID_MODEL_FROM_DATABASE=RIO 10/100 Ethernet [eri]
+ pci:v0000108Ed00001101sv0000108Esd00001101*
+- ID_MODEL_FROM_DATABASE=RIO GEM on Blade 100 motherboard
++ ID_MODEL_FROM_DATABASE=RIO 10/100 Ethernet [eri] (RIO GEM on Blade 100 motherboard)
+ pci:v0000108Ed00001102*
+  ID_MODEL_FROM_DATABASE=RIO 1394
+ pci:v0000108Ed00001102sv0000108Esd00001102*
+- ID_MODEL_FROM_DATABASE=RIO 1394 on Blade 100 motherboard
++ ID_MODEL_FROM_DATABASE=RIO 1394 (on Blade 100 motherboard)
+ pci:v0000108Ed00001103*
+  ID_MODEL_FROM_DATABASE=RIO USB
+ pci:v0000108Ed00001103sv0000108Esd00001103*
+- ID_MODEL_FROM_DATABASE=RIO USB on Blade 100 motherboard
++ ID_MODEL_FROM_DATABASE=RIO USB (on Blade 100 motherboard)
+ pci:v0000108Ed00001647*
+  ID_MODEL_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge]
+@@ -17124,7 +17124,7 @@ pci:v0000108Ed00005000*
+  ID_MODEL_FROM_DATABASE=Simba Advanced PCI Bridge
+ pci:v0000108Ed00005000sv0000108Esd00005000*
+- ID_MODEL_FROM_DATABASE=Netra AX1105-500
++ ID_MODEL_FROM_DATABASE=Simba Advanced PCI Bridge (Netra AX1105-500)
+ pci:v0000108Ed00005043*
+  ID_MODEL_FROM_DATABASE=SunPCI Co-processor
+@@ -17226,7 +17226,7 @@ pci:v0000108Ed0000A001*
+  ID_MODEL_FROM_DATABASE=Psycho UPA-PCI Bus Module [pcipsy]
+ pci:v0000108Ed0000A001sv0000108Esd0000A001*
+- ID_MODEL_FROM_DATABASE=Ultra IIe on Blade 100 motherboard
++ ID_MODEL_FROM_DATABASE=Psycho UPA-PCI Bus Module [pcipsy] (Ultra IIe on Blade 100 motherboard)
+ pci:v0000108Ed0000A801*
+  ID_MODEL_FROM_DATABASE=Schizo Fireplane-PCI bus bridge module [pcisch]
+@@ -17295,7 +17295,7 @@ pci:v00001092d00000028*
+  ID_MODEL_FROM_DATABASE=Viper V770
+ pci:v00001092d00000028sv00001092sd00004A00*
+- ID_MODEL_FROM_DATABASE=Viper V770 32MB
++ ID_MODEL_FROM_DATABASE=Viper V770 (32MB)
+ pci:v00001092d000000A0*
+  ID_MODEL_FROM_DATABASE=Speedstar Pro SE
+@@ -17766,28 +17766,28 @@ pci:v00001093d0000C4C4*
+  ID_MODEL_FROM_DATABASE=PXIe/PCIe Device
+ pci:v00001093d0000C4C4sv00001093sd000074B2*
+- ID_MODEL_FROM_DATABASE=PXIe-4353
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-4353)
+ pci:v00001093d0000C4C4sv00001093sd000074D0*
+- ID_MODEL_FROM_DATABASE=PXIe-7961R
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7961R)
+ pci:v00001093d0000C4C4sv00001093sd000074E2*
+- ID_MODEL_FROM_DATABASE=PXIe-7962R
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7962R)
+ pci:v00001093d0000C4C4sv00001093sd000074E3*
+- ID_MODEL_FROM_DATABASE=PXIe-7965R
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7965R)
+ pci:v00001093d0000C4C4sv00001093sd00007553*
+- ID_MODEL_FROM_DATABASE=PCIe-1473R
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PCIe-1473R)
+ pci:v00001093d0000C4C4sv00001093sd000075CE*
+- ID_MODEL_FROM_DATABASE=PXIe-7966R
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7966R)
+ pci:v00001093d0000C4C4sv00001093sd000076B7*
+- ID_MODEL_FROM_DATABASE=PXIe-7975R
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-7975R)
+ pci:v00001093d0000C4C4sv00001093sd000076D0*
+- ID_MODEL_FROM_DATABASE=PXIe-5160
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device (PXIe-5160)
+ pci:v00001093d0000C801*
+  ID_MODEL_FROM_DATABASE=PCI-GPIB
+@@ -17820,19 +17820,19 @@ pci:v00001095d00000648*
+  ID_MODEL_FROM_DATABASE=PCI0648
+ pci:v00001095d00000648sv00001043sd00008025*
+- ID_MODEL_FROM_DATABASE=CUBX motherboard
++ ID_MODEL_FROM_DATABASE=PCI0648 (CUBX motherboard)
+ pci:v00001095d00000649*
+  ID_MODEL_FROM_DATABASE=SiI 0649 Ultra ATA/100 PCI to ATA Host Controller
+ pci:v00001095d00000649sv00000E11sd0000005D*
+- ID_MODEL_FROM_DATABASE=Integrated Ultra ATA-100 Dual Channel Controller
++ ID_MODEL_FROM_DATABASE=SiI 0649 Ultra ATA/100 PCI to ATA Host Controller (Integrated Ultra ATA-100 Dual Channel Controller)
+ pci:v00001095d00000649sv00000E11sd0000007E*
+- ID_MODEL_FROM_DATABASE=Integrated Ultra ATA-100 IDE RAID Controller
++ ID_MODEL_FROM_DATABASE=SiI 0649 Ultra ATA/100 PCI to ATA Host Controller (Integrated Ultra ATA-100 IDE RAID Controller)
+ pci:v00001095d00000649sv0000101Esd00000649*
+- ID_MODEL_FROM_DATABASE=AMI MegaRAID IDE 100 Controller
++ ID_MODEL_FROM_DATABASE=SiI 0649 Ultra ATA/100 PCI to ATA Host Controller (AMI MegaRAID IDE 100 Controller)
+ pci:v00001095d00000650*
+  ID_MODEL_FROM_DATABASE=PBC0650A
+@@ -17850,34 +17850,34 @@ pci:v00001095d00000680*
+  ID_MODEL_FROM_DATABASE=PCI0680 Ultra ATA-133 Host Controller
+ pci:v00001095d00000680sv00001095sd00000680*
+- ID_MODEL_FROM_DATABASE=SiI 0680 ATA/133 Controller
++ ID_MODEL_FROM_DATABASE=PCI0680 Ultra ATA-133 Host Controller (SiI 0680 ATA/133 Controller)
+ pci:v00001095d00000680sv00001095sd00003680*
+- ID_MODEL_FROM_DATABASE=Winic W-680 (Silicon Image 680 based)
++ ID_MODEL_FROM_DATABASE=PCI0680 Ultra ATA-133 Host Controller (Winic W-680 (Silicon Image 680 based))
+ pci:v00001095d00003112*
+  ID_MODEL_FROM_DATABASE=SiI 3112 [SATALink/SATARaid] Serial ATA Controller
+ pci:v00001095d00003112sv00001095sd00003112*
+- ID_MODEL_FROM_DATABASE=SiI 3112 SATALink Controller
++ ID_MODEL_FROM_DATABASE=SiI 3112 [SATALink/SATARaid] Serial ATA Controller (SiI 3112 SATALink Controller)
+ pci:v00001095d00003112sv00001095sd00006112*
+- ID_MODEL_FROM_DATABASE=SiI 3112 SATARaid Controller
++ ID_MODEL_FROM_DATABASE=SiI 3112 [SATALink/SATARaid] Serial ATA Controller (SiI 3112 SATARaid Controller)
+ pci:v00001095d00003112sv00009005sd00000250*
+- ID_MODEL_FROM_DATABASE=SATAConnect 1205SA Host Controller
++ ID_MODEL_FROM_DATABASE=SiI 3112 [SATALink/SATARaid] Serial ATA Controller (SATAConnect 1205SA Host Controller)
+ pci:v00001095d00003114*
+  ID_MODEL_FROM_DATABASE=SiI 3114 [SATALink/SATARaid] Serial ATA Controller
+ pci:v00001095d00003114sv00001043sd00008167*
+- ID_MODEL_FROM_DATABASE=A8N-SLI Deluxe/Premium Mainboard
++ ID_MODEL_FROM_DATABASE=SiI 3114 [SATALink/SATARaid] Serial ATA Controller (A8N-SLI Deluxe/Premium Mainboard)
+ pci:v00001095d00003114sv00001095sd00003114*
+- ID_MODEL_FROM_DATABASE=SiI 3114 SATALink Controller
++ ID_MODEL_FROM_DATABASE=SiI 3114 [SATALink/SATARaid] Serial ATA Controller (SiI 3114 SATALink Controller)
+ pci:v00001095d00003114sv00001095sd00006114*
+- ID_MODEL_FROM_DATABASE=SiI 3114 SATARaid Controller
++ ID_MODEL_FROM_DATABASE=SiI 3114 [SATALink/SATARaid] Serial ATA Controller (SiI 3114 SATARaid Controller)
+ pci:v00001095d00003124*
+  ID_MODEL_FROM_DATABASE=SiI 3124 PCI-X Serial ATA Controller
+@@ -17892,10 +17892,10 @@ pci:v00001095d00003512*
+  ID_MODEL_FROM_DATABASE=SiI 3512 [SATALink/SATARaid] Serial ATA Controller
+ pci:v00001095d00003512sv00001095sd00003512*
+- ID_MODEL_FROM_DATABASE=SiI 3512 SATALink Controller
++ ID_MODEL_FROM_DATABASE=SiI 3512 [SATALink/SATARaid] Serial ATA Controller (SiI 3512 SATALink Controller)
+ pci:v00001095d00003512sv00001095sd00006512*
+- ID_MODEL_FROM_DATABASE=SiI 3512 SATARaid Controller
++ ID_MODEL_FROM_DATABASE=SiI 3512 [SATALink/SATARaid] Serial ATA Controller (SiI 3512 SATARaid Controller)
+ pci:v00001095d00003531*
+  ID_MODEL_FROM_DATABASE=SiI 3531 [SATALink/SATARaid] Serial ATA Controller
+@@ -17949,412 +17949,412 @@ pci:v0000109Ed00000369*
+  ID_MODEL_FROM_DATABASE=Bt878 Video Capture
+ pci:v0000109Ed00000369sv00001002sd00000001*
+- ID_MODEL_FROM_DATABASE=TV-Wonder
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (TV-Wonder)
+ pci:v0000109Ed00000369sv00001002sd00000003*
+- ID_MODEL_FROM_DATABASE=TV-Wonder/VE
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (TV-Wonder/VE)
+ pci:v0000109Ed0000036C*
+  ID_MODEL_FROM_DATABASE=Bt879(??) Video Capture
+ pci:v0000109Ed0000036Csv000013E9sd00000070*
+- ID_MODEL_FROM_DATABASE=Win/TV (Video Section)
++ ID_MODEL_FROM_DATABASE=Bt879(??) Video Capture (Win/TV (Video Section))
+ pci:v0000109Ed0000036E*
+  ID_MODEL_FROM_DATABASE=Bt878 Video Capture
+ pci:v0000109Ed0000036Esv00000070sd000013EB*
+- ID_MODEL_FROM_DATABASE=WinTV Series
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (WinTV Series)
+ pci:v0000109Ed0000036Esv00000070sd0000FF01*
+- ID_MODEL_FROM_DATABASE=Viewcast Osprey 200
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Viewcast Osprey 200)
+ pci:v0000109Ed0000036Esv00000071sd00000101*
+- ID_MODEL_FROM_DATABASE=DigiTV PCI
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (DigiTV PCI)
+ pci:v0000109Ed0000036Esv0000107Dsd00006606*
+- ID_MODEL_FROM_DATABASE=WinFast TV 2000
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (WinFast TV 2000)
+ pci:v0000109Ed0000036Esv000011BDsd00000012*
+- ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver)
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (PCTV pro (TV + FM stereo receiver))
+ pci:v0000109Ed0000036Esv000011BDsd0000001C*
+- ID_MODEL_FROM_DATABASE=PCTV Sat (DBC receiver)
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (PCTV Sat (DBC receiver))
+ pci:v0000109Ed0000036Esv0000127Asd00000001*
+- ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878 Mediastream Controller NTSC)
+ pci:v0000109Ed0000036Esv0000127Asd00000002*
+- ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller PAL BG
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878 Mediastream Controller PAL BG)
+ pci:v0000109Ed0000036Esv0000127Asd00000003*
+- ID_MODEL_FROM_DATABASE=Bt878a Mediastream Controller PAL BG
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878a Mediastream Controller PAL BG)
+ pci:v0000109Ed0000036Esv0000127Asd00000048*
+- ID_MODEL_FROM_DATABASE=Bt878/832 Mediastream Controller
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878/832 Mediastream Controller)
+ pci:v0000109Ed0000036Esv0000144Fsd00003000*
+- ID_MODEL_FROM_DATABASE=MagicTView CPH060 - Video
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (MagicTView CPH060 - Video)
+ pci:v0000109Ed0000036Esv00001461sd00000002*
+- ID_MODEL_FROM_DATABASE=TV98 Series (TV/No FM/Remote)
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (TV98 Series (TV/No FM/Remote))
+ pci:v0000109Ed0000036Esv00001461sd00000003*
+- ID_MODEL_FROM_DATABASE=AverMedia UltraTV PCI 350
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (AverMedia UltraTV PCI 350)
+ pci:v0000109Ed0000036Esv00001461sd00000004*
+- ID_MODEL_FROM_DATABASE=AVerTV WDM Video Capture
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (AVerTV WDM Video Capture)
+ pci:v0000109Ed0000036Esv00001461sd00000761*
+- ID_MODEL_FROM_DATABASE=AverTV DVB-T
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (AverTV DVB-T)
+ pci:v0000109Ed0000036Esv00001461sd00000771*
+- ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (AverMedia AVerTV DVB-T 771)
+ pci:v0000109Ed0000036Esv000014F1sd00000001*
+- ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878 Mediastream Controller NTSC)
+ pci:v0000109Ed0000036Esv000014F1sd00000002*
+- ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller PAL BG
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878 Mediastream Controller PAL BG)
+ pci:v0000109Ed0000036Esv000014F1sd00000003*
+- ID_MODEL_FROM_DATABASE=Bt878a Mediastream Controller PAL BG
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878a Mediastream Controller PAL BG)
+ pci:v0000109Ed0000036Esv000014F1sd00000048*
+- ID_MODEL_FROM_DATABASE=Bt878/832 Mediastream Controller
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Bt878/832 Mediastream Controller)
+ pci:v0000109Ed0000036Esv00001822sd00000001*
+- ID_MODEL_FROM_DATABASE=VisionPlus DVB card
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (VisionPlus DVB card)
+ pci:v0000109Ed0000036Esv00001851sd00001850*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (FlyVideo'98 - Video)
+ pci:v0000109Ed0000036Esv00001851sd00001851*
+- ID_MODEL_FROM_DATABASE=FlyVideo II
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (FlyVideo II)
+ pci:v0000109Ed0000036Esv00001852sd00001852*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video (with FM Tuner)
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (FlyVideo'98 - Video (with FM Tuner))
+ pci:v0000109Ed0000036Esv000018ACsd0000D500*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Lite
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (DViCO FusionHDTV5 Lite)
+ pci:v0000109Ed0000036Esv0000270Fsd0000FC00*
+- ID_MODEL_FROM_DATABASE=Digitop DTT-1000
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Digitop DTT-1000)
+ pci:v0000109Ed0000036Esv0000AA00sd00001460*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardA Input0
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardA Input0)
+ pci:v0000109Ed0000036Esv0000AA01sd00001461*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardA Input1
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardA Input1)
+ pci:v0000109Ed0000036Esv0000AA02sd00001462*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardA Input2
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardA Input2)
+ pci:v0000109Ed0000036Esv0000AA03sd00001463*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardA Input3
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardA Input3)
+ pci:v0000109Ed0000036Esv0000AA04sd00001464*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardB Input0
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardB Input0)
+ pci:v0000109Ed0000036Esv0000AA05sd00001465*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardB Input1
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardB Input1)
+ pci:v0000109Ed0000036Esv0000AA06sd00001466*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardB Input2
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardB Input2)
+ pci:v0000109Ed0000036Esv0000AA07sd00001467*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardB Input3
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardB Input3)
+ pci:v0000109Ed0000036Esv0000AA08sd00001468*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardC Input0
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardC Input0)
+ pci:v0000109Ed0000036Esv0000AA09sd00001469*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardC Input1
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardC Input1)
+ pci:v0000109Ed0000036Esv0000AA0Asd0000146A*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardC Input2
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardC Input2)
+ pci:v0000109Ed0000036Esv0000AA0Bsd0000146B*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardC Input3
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardC Input3)
+ pci:v0000109Ed0000036Esv0000AA0Csd0000146C*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardD Input0
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardD Input0)
+ pci:v0000109Ed0000036Esv0000AA0Dsd0000146D*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardD Input1
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardD Input1)
+ pci:v0000109Ed0000036Esv0000AA0Esd0000146E*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardD Input2
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardD Input2)
+ pci:v0000109Ed0000036Esv0000AA0Fsd0000146F*
+- ID_MODEL_FROM_DATABASE=Spectra8 CardD Input3
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Spectra8 CardD Input3)
+ pci:v0000109Ed0000036Esv0000BD11sd00001200*
+- ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver)
++ ID_MODEL_FROM_DATABASE=Bt878 Video Capture (PCTV pro (TV + FM stereo receiver))
+ pci:v0000109Ed0000036F*
+  ID_MODEL_FROM_DATABASE=Bt879 Video Capture
+ pci:v0000109Ed0000036Fsv0000127Asd00000044*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv0000127Asd00000122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL I)
+ pci:v0000109Ed0000036Fsv0000127Asd00000144*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv0000127Asd00000222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL BG)
+ pci:v0000109Ed0000036Fsv0000127Asd00000244*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture NTSC)
+ pci:v0000109Ed0000036Fsv0000127Asd00000322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv0000127Asd00000422*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv0000127Asd00001122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL I)
+ pci:v0000109Ed0000036Fsv0000127Asd00001222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL BG)
+ pci:v0000109Ed0000036Fsv0000127Asd00001322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv0000127Asd00001522*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL I
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture PAL I)
+ pci:v0000109Ed0000036Fsv0000127Asd00001622*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL BG
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture PAL BG)
+ pci:v0000109Ed0000036Fsv0000127Asd00001722*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00000044*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00000122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL I)
+ pci:v0000109Ed0000036Fsv000014F1sd00000144*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00000222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL BG)
+ pci:v0000109Ed0000036Fsv000014F1sd00000244*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00000322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00000422*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00001122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL I)
+ pci:v0000109Ed0000036Fsv000014F1sd00001222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (PAL BG)
+ pci:v0000109Ed0000036Fsv000014F1sd00001322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (NTSC)
+ pci:v0000109Ed0000036Fsv000014F1sd00001522*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL I
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture PAL I)
+ pci:v0000109Ed0000036Fsv000014F1sd00001622*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL BG
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture PAL BG)
+ pci:v0000109Ed0000036Fsv000014F1sd00001722*
+- ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Bt879a Video Capture NTSC)
+ pci:v0000109Ed0000036Fsv00001851sd00001850*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (FlyVideo'98 - Video)
+ pci:v0000109Ed0000036Fsv00001851sd00001851*
+- ID_MODEL_FROM_DATABASE=FlyVideo II
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (FlyVideo II)
+ pci:v0000109Ed0000036Fsv00001852sd00001852*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video (with FM Tuner)
++ ID_MODEL_FROM_DATABASE=Bt879 Video Capture (FlyVideo'98 - Video (with FM Tuner))
+ pci:v0000109Ed00000370*
+  ID_MODEL_FROM_DATABASE=Bt880 Video Capture
+ pci:v0000109Ed00000370sv00001851sd00001850*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98
++ ID_MODEL_FROM_DATABASE=Bt880 Video Capture (FlyVideo'98)
+ pci:v0000109Ed00000370sv00001851sd00001851*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98 EZ - video
++ ID_MODEL_FROM_DATABASE=Bt880 Video Capture (FlyVideo'98 EZ - video)
+ pci:v0000109Ed00000370sv00001852sd00001852*
+- ID_MODEL_FROM_DATABASE=FlyVideo'98 (with FM Tuner)
++ ID_MODEL_FROM_DATABASE=Bt880 Video Capture (FlyVideo'98 (with FM Tuner))
+ pci:v0000109Ed00000878*
+  ID_MODEL_FROM_DATABASE=Bt878 Audio Capture
+ pci:v0000109Ed00000878sv00000070sd000013EB*
+- ID_MODEL_FROM_DATABASE=WinTV Series
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (WinTV Series)
+ pci:v0000109Ed00000878sv00000070sd0000FF01*
+- ID_MODEL_FROM_DATABASE=Viewcast Osprey 200
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Viewcast Osprey 200)
+ pci:v0000109Ed00000878sv00000071sd00000101*
+- ID_MODEL_FROM_DATABASE=DigiTV PCI
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (DigiTV PCI)
+ pci:v0000109Ed00000878sv00001002sd00000001*
+- ID_MODEL_FROM_DATABASE=TV-Wonder
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (TV-Wonder)
+ pci:v0000109Ed00000878sv00001002sd00000003*
+- ID_MODEL_FROM_DATABASE=TV-Wonder/VE
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (TV-Wonder/VE)
+ pci:v0000109Ed00000878sv000011BDsd00000012*
+- ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver, audio section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (PCTV pro (TV + FM stereo receiver, audio section))
+ pci:v0000109Ed00000878sv000011BDsd0000001C*
+- ID_MODEL_FROM_DATABASE=PCTV Sat (DBC receiver)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (PCTV Sat (DBC receiver))
+ pci:v0000109Ed00000878sv0000127Asd00000001*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv0000127Asd00000002*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv0000127Asd00000003*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv0000127Asd00000048*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv000013E9sd00000070*
+- ID_MODEL_FROM_DATABASE=Win/TV (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Win/TV (Audio Section))
+ pci:v0000109Ed00000878sv0000144Fsd00003000*
+- ID_MODEL_FROM_DATABASE=MagicTView CPH060 - Audio
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (MagicTView CPH060 - Audio)
+ pci:v0000109Ed00000878sv00001461sd00000002*
+- ID_MODEL_FROM_DATABASE=Avermedia PCTV98 Audio Capture
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Avermedia PCTV98 Audio Capture)
+ pci:v0000109Ed00000878sv00001461sd00000003*
+- ID_MODEL_FROM_DATABASE=UltraTV PCI 350
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (UltraTV PCI 350)
+ pci:v0000109Ed00000878sv00001461sd00000004*
+- ID_MODEL_FROM_DATABASE=AVerTV WDM Audio Capture
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (AVerTV WDM Audio Capture)
+ pci:v0000109Ed00000878sv00001461sd00000761*
+- ID_MODEL_FROM_DATABASE=AVerTV DVB-T
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (AVerTV DVB-T)
+ pci:v0000109Ed00000878sv00001461sd00000771*
+- ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (AverMedia AVerTV DVB-T 771)
+ pci:v0000109Ed00000878sv000014F1sd00000001*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv000014F1sd00000002*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv000014F1sd00000003*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv000014F1sd00000048*
+- ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Bt878 Video Capture (Audio Section))
+ pci:v0000109Ed00000878sv00001822sd00000001*
+- ID_MODEL_FROM_DATABASE=VisionPlus DVB Card
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (VisionPlus DVB Card)
+ pci:v0000109Ed00000878sv000018ACsd0000D500*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Lite
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (DViCO FusionHDTV5 Lite)
+ pci:v0000109Ed00000878sv0000270Fsd0000FC00*
+- ID_MODEL_FROM_DATABASE=Digitop DTT-1000
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (Digitop DTT-1000)
+ pci:v0000109Ed00000878sv0000BD11sd00001200*
+- ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver, audio section)
++ ID_MODEL_FROM_DATABASE=Bt878 Audio Capture (PCTV pro (TV + FM stereo receiver, audio section))
+ pci:v0000109Ed00000879*
+  ID_MODEL_FROM_DATABASE=Bt879 Audio Capture
+ pci:v0000109Ed00000879sv0000127Asd00000044*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00000122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00000144*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00000222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00000244*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00000322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00000422*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00001122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00001222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00001322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00001522*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00001622*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv0000127Asd00001722*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000044*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000144*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000244*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00000422*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00001122*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00001222*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00001322*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00001522*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00001622*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000879sv000014F1sd00001722*
+- ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section)
++ ID_MODEL_FROM_DATABASE=Bt879 Audio Capture (Bt879 Video Capture (Audio Section))
+ pci:v0000109Ed00000880*
+  ID_MODEL_FROM_DATABASE=Bt880 Audio Capture
+@@ -18585,7 +18585,7 @@ pci:v000010B4d00001B1D*
+  ID_MODEL_FROM_DATABASE=Velocity 128 3D
+ pci:v000010B4d00001B1Dsv000010B4sd0000237E*
+- ID_MODEL_FROM_DATABASE=Velocity 4400
++ ID_MODEL_FROM_DATABASE=Velocity 128 3D (Velocity 4400)
+ pci:v000010B5*
+  ID_VENDOR_FROM_DATABASE=PLX Technology, Inc.
+@@ -18597,13 +18597,13 @@ pci:v000010B5d00000557*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00000557sv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card)
+ pci:v000010B5d00001000*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00001000sv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=ATCOM AT400P Quad T1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (ATCOM AT400P Quad T1 PCI card)
+ pci:v000010B5d00001024*
+  ID_MODEL_FROM_DATABASE=Acromag, Inc. IndustryPack Carrier Card
+@@ -18636,7 +18636,7 @@ pci:v000010B5d00002000*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00002000sv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=ATCOM AE400P Quad E1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (ATCOM AE400P Quad E1 PCI card)
+ pci:v000010B5d00002540*
+  ID_MODEL_FROM_DATABASE=IXXAT CAN-Interface PC-I 04/PCI
+@@ -18651,19 +18651,19 @@ pci:v000010B5d00004000*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00004000sv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card)
+ pci:v000010B5d00004001*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00004001sv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=ATCOM A400PE Quad E1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (ATCOM A400PE Quad E1 PCI card)
+ pci:v000010B5d00004002*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00004002sv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=ATCOM A400PT Quad T1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (ATCOM A400PT Quad T1 PCI card)
+ pci:v000010B5d00006140*
+  ID_MODEL_FROM_DATABASE=PCI6140 32-bit 33MHz PCI-to-PCI Bridge
+@@ -18690,28 +18690,28 @@ pci:v000010B5d00006540*
+  ID_MODEL_FROM_DATABASE=PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge
+ pci:v000010B5d00006540sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge (CR11 Single Board Computer)
+ pci:v000010B5d00006540sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge (PSL09 PrPMC)
+ pci:v000010B5d00006541*
+  ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side)
+ pci:v000010B5d00006541sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) (CR11 Single Board Computer)
+ pci:v000010B5d00006541sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) (PSL09 PrPMC)
+ pci:v000010B5d00006542*
+  ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side)
+ pci:v000010B5d00006542sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) (CR11 Single Board Computer)
+ pci:v000010B5d00006542sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) (PSL09 PrPMC)
+ pci:v000010B5d00008111*
+  ID_MODEL_FROM_DATABASE=PEX 8111 PCI Express-to-PCI Bridge
+@@ -18807,7 +18807,7 @@ pci:v000010B5d00008624*
+  ID_MODEL_FROM_DATABASE=PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane]
+ pci:v000010B5d00008624sv000013A3sd00001845*
+- ID_MODEL_FROM_DATABASE=DX1845 Acceleration Card
++ ID_MODEL_FROM_DATABASE=PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] (DX1845 Acceleration Card)
+ pci:v000010B5d00008625*
+  ID_MODEL_FROM_DATABASE=PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch
+@@ -18861,85 +18861,85 @@ pci:v000010B5d00009030*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00009030sv000010B5sd00002695*
+- ID_MODEL_FROM_DATABASE=Hilscher CIF50-PB/DPS Profibus
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Hilscher CIF50-PB/DPS Profibus)
+ pci:v000010B5d00009030sv000010B5sd00002862*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board)
+ pci:v000010B5d00009030sv000010B5sd00002906*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board)
+ pci:v000010B5d00009030sv000010B5sd00002940*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board)
+ pci:v000010B5d00009030sv000010B5sd00002977*
+- ID_MODEL_FROM_DATABASE=IXXAT iPC-I XC16/PCI CAN Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (IXXAT iPC-I XC16/PCI CAN Board)
+ pci:v000010B5d00009030sv000010B5sd00002978*
+- ID_MODEL_FROM_DATABASE=SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card)
+ pci:v000010B5d00009030sv000010B5sd00003025*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board)
+ pci:v000010B5d00009030sv000010B5sd00003068*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board)
+ pci:v000010B5d00009030sv000010B5sd00003463*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board)
+ pci:v000010B5d00009030sv000012FEsd00000111*
+- ID_MODEL_FROM_DATABASE=CPCI-ASIO4 (ESD 4-port Serial Interface Board)
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (CPCI-ASIO4 (ESD 4-port Serial Interface Board))
+ pci:v000010B5d00009030sv00001369sd00009C01*
+- ID_MODEL_FROM_DATABASE=VX222v2
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (VX222v2)
+ pci:v000010B5d00009030sv00001369sd00009D01*
+- ID_MODEL_FROM_DATABASE=VX222-Mic
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (VX222-Mic)
+ pci:v000010B5d00009030sv00001369sd00009D02*
+- ID_MODEL_FROM_DATABASE=VX222-Mic
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (VX222-Mic)
+ pci:v000010B5d00009030sv00001369sd00009E01*
+- ID_MODEL_FROM_DATABASE=PCX924v2
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (PCX924v2)
+ pci:v000010B5d00009030sv00001369sd00009F01*
+- ID_MODEL_FROM_DATABASE=PCX924-Mic
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (PCX924-Mic)
+ pci:v000010B5d00009030sv00001369sd00009F02*
+- ID_MODEL_FROM_DATABASE=PCX924-Mic
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (PCX924-Mic)
+ pci:v000010B5d00009030sv00001369sd0000A001*
+- ID_MODEL_FROM_DATABASE=PCX22v2
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (PCX22v2)
+ pci:v000010B5d00009030sv00001369sd0000A701*
+- ID_MODEL_FROM_DATABASE=LCM220v2
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (LCM220v2)
+ pci:v000010B5d00009030sv00001369sd0000A801*
+- ID_MODEL_FROM_DATABASE=LCM200
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (LCM200)
+ pci:v000010B5d00009030sv00001397sd00003136*
+- ID_MODEL_FROM_DATABASE=4xS0-ISDN PCI Adapter
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (4xS0-ISDN PCI Adapter)
+ pci:v000010B5d00009030sv00001397sd00003137*
+- ID_MODEL_FROM_DATABASE=S2M-E1-ISDN PCI Adapter
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (S2M-E1-ISDN PCI Adapter)
+ pci:v000010B5d00009030sv00001518sd00000200*
+- ID_MODEL_FROM_DATABASE=Kontron ThinkIO-C
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Kontron ThinkIO-C)
+ pci:v000010B5d00009030sv000015EDsd00001002*
+- ID_MODEL_FROM_DATABASE=MCCS 8-port Serial Hot Swap
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (MCCS 8-port Serial Hot Swap)
+ pci:v000010B5d00009030sv000015EDsd00001003*
+- ID_MODEL_FROM_DATABASE=MCCS 16-port Serial Hot Swap
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (MCCS 16-port Serial Hot Swap)
+ pci:v000010B5d00009030sv0000E1C5sd00000001*
+- ID_MODEL_FROM_DATABASE=TE1-PCI
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (TE1-PCI)
+ pci:v000010B5d00009030sv0000E1C5sd00000005*
+- ID_MODEL_FROM_DATABASE=TA1-PCI
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (TA1-PCI)
+ pci:v000010B5d00009030sv0000E1C5sd00000006*
+- ID_MODEL_FROM_DATABASE=TA1-PCI4
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (TA1-PCI4)
+ pci:v000010B5d00009036*
+  ID_MODEL_FROM_DATABASE=9036
+@@ -18948,145 +18948,145 @@ pci:v000010B5d00009050*
+  ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge
+ pci:v000010B5d00009050sv000010B5sd00001067*
+- ID_MODEL_FROM_DATABASE=IXXAT CAN i165
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IXXAT CAN i165)
+ pci:v000010B5d00009050sv000010B5sd0000114E*
+- ID_MODEL_FROM_DATABASE=Wasco WITIO PCI168extended
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Wasco WITIO PCI168extended)
+ pci:v000010B5d00009050sv000010B5sd00001169*
+- ID_MODEL_FROM_DATABASE=Wasco OPTOIO32standard 32 digital in, 32 digital out
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Wasco OPTOIO32standard 32 digital in, 32 digital out)
+ pci:v000010B5d00009050sv000010B5sd00001172*
+- ID_MODEL_FROM_DATABASE=IK220 (Heidenhain)
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IK220 (Heidenhain))
+ pci:v000010B5d00009050sv000010B5sd00002036*
+- ID_MODEL_FROM_DATABASE=SatPak GPS
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (SatPak GPS)
+ pci:v000010B5d00009050sv000010B5sd00002221*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI LV: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI LV: Timecode Reader Board)
+ pci:v000010B5d00009050sv000010B5sd00002273*
+- ID_MODEL_FROM_DATABASE=SH ARC-PCI SOHARD ARCNET card
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (SH ARC-PCI SOHARD ARCNET card)
+ pci:v000010B5d00009050sv000010B5sd00002431*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI D: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Alpermann+Velte PCL PCI D: Timecode Reader Board)
+ pci:v000010B5d00009050sv000010B5sd00002905*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCI TS: Time Synchronisation Board
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Alpermann+Velte PCI TS: Time Synchronisation Board)
+ pci:v000010B5d00009050sv000010B5sd00003196*
+- ID_MODEL_FROM_DATABASE=Goramo PLX200SYN sync serial card
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Goramo PLX200SYN sync serial card)
+ pci:v000010B5d00009050sv000010B5sd00009050*
+- ID_MODEL_FROM_DATABASE=PCI-I04 PCI Passive PC/CAN Interface
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCI-I04 PCI Passive PC/CAN Interface)
+ pci:v000010B5d00009050sv00001369sd00008901*
+- ID_MODEL_FROM_DATABASE=PCX11+ PCI
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCX11+ PCI)
+ pci:v000010B5d00009050sv00001369sd00008F01*
+- ID_MODEL_FROM_DATABASE=VX222
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (VX222)
+ pci:v000010B5d00009050sv00001369sd00009401*
+- ID_MODEL_FROM_DATABASE=PCX924
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCX924)
+ pci:v000010B5d00009050sv00001369sd00009501*
+- ID_MODEL_FROM_DATABASE=PCX22
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCX22)
+ pci:v000010B5d00009050sv00001498sd00000362*
+- ID_MODEL_FROM_DATABASE=TPMC866 8 Channel Serial Card
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (TPMC866 8 Channel Serial Card)
+ pci:v000010B5d00009050sv00001522sd00000001*
+- ID_MODEL_FROM_DATABASE=RockForce 4 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce 4 Port V.90 Data/Fax/Voice Modem)
+ pci:v000010B5d00009050sv00001522sd00000002*
+- ID_MODEL_FROM_DATABASE=RockForce 2 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce 2 Port V.90 Data/Fax/Voice Modem)
+ pci:v000010B5d00009050sv00001522sd00000003*
+- ID_MODEL_FROM_DATABASE=RockForce 6 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce 6 Port V.90 Data/Fax/Voice Modem)
+ pci:v000010B5d00009050sv00001522sd00000004*
+- ID_MODEL_FROM_DATABASE=RockForce 8 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce 8 Port V.90 Data/Fax/Voice Modem)
+ pci:v000010B5d00009050sv00001522sd00000010*
+- ID_MODEL_FROM_DATABASE=RockForce2000 4 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce2000 4 Port V.90 Data/Fax/Voice Modem)
+ pci:v000010B5d00009050sv00001522sd00000020*
+- ID_MODEL_FROM_DATABASE=RockForce2000 2 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce2000 2 Port V.90 Data/Fax/Voice Modem)
+ pci:v000010B5d00009050sv000015EDsd00001000*
+- ID_MODEL_FROM_DATABASE=Macrolink MCCS 8-port Serial
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Macrolink MCCS 8-port Serial)
+ pci:v000010B5d00009050sv000015EDsd00001001*
+- ID_MODEL_FROM_DATABASE=Macrolink MCCS 16-port Serial
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Macrolink MCCS 16-port Serial)
+ pci:v000010B5d00009050sv000015EDsd00001002*
+- ID_MODEL_FROM_DATABASE=Macrolink MCCS 8-port Serial Hot Swap
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Macrolink MCCS 8-port Serial Hot Swap)
+ pci:v000010B5d00009050sv000015EDsd00001003*
+- ID_MODEL_FROM_DATABASE=Macrolink MCCS 16-port Serial Hot Swap
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (Macrolink MCCS 16-port Serial Hot Swap)
+ pci:v000010B5d00009050sv00005654sd00002036*
+- ID_MODEL_FROM_DATABASE=OpenSwitch 6 Telephony card
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (OpenSwitch 6 Telephony card)
+ pci:v000010B5d00009050sv00005654sd00003132*
+- ID_MODEL_FROM_DATABASE=OpenSwitch 12 Telephony card
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (OpenSwitch 12 Telephony card)
+ pci:v000010B5d00009050sv00005654sd00005634*
+- ID_MODEL_FROM_DATABASE=OpenLine4 Telephony Card
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (OpenLine4 Telephony Card)
+ pci:v000010B5d00009050sv0000D531sd0000C002*
+- ID_MODEL_FROM_DATABASE=PCIntelliCAN 2xSJA1000 CAN bus
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (PCIntelliCAN 2xSJA1000 CAN bus)
+ pci:v000010B5d00009050sv0000D84Dsd00004006*
+- ID_MODEL_FROM_DATABASE=EX-4006 1P
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4006 1P)
+ pci:v000010B5d00009050sv0000D84Dsd00004008*
+- ID_MODEL_FROM_DATABASE=EX-4008 1P EPP/ECP
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4008 1P EPP/ECP)
+ pci:v000010B5d00009050sv0000D84Dsd00004014*
+- ID_MODEL_FROM_DATABASE=EX-4014 2P
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4014 2P)
+ pci:v000010B5d00009050sv0000D84Dsd00004018*
+- ID_MODEL_FROM_DATABASE=EX-4018 3P EPP/ECP
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4018 3P EPP/ECP)
+ pci:v000010B5d00009050sv0000D84Dsd00004025*
+- ID_MODEL_FROM_DATABASE=EX-4025 1S(16C550) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4025 1S(16C550) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004027*
+- ID_MODEL_FROM_DATABASE=EX-4027 1S(16C650) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4027 1S(16C650) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004028*
+- ID_MODEL_FROM_DATABASE=EX-4028 1S(16C850) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4028 1S(16C850) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004036*
+- ID_MODEL_FROM_DATABASE=EX-4036 2S(16C650) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4036 2S(16C650) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004037*
+- ID_MODEL_FROM_DATABASE=EX-4037 2S(16C650) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4037 2S(16C650) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004038*
+- ID_MODEL_FROM_DATABASE=EX-4038 2S(16C850) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4038 2S(16C850) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004052*
+- ID_MODEL_FROM_DATABASE=EX-4052 1S(16C550) RS-422/485
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4052 1S(16C550) RS-422/485)
+ pci:v000010B5d00009050sv0000D84Dsd00004053*
+- ID_MODEL_FROM_DATABASE=EX-4053 2S(16C550) RS-422/485
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4053 2S(16C550) RS-422/485)
+ pci:v000010B5d00009050sv0000D84Dsd00004055*
+- ID_MODEL_FROM_DATABASE=EX-4055 4S(16C550) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4055 4S(16C550) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004058*
+- ID_MODEL_FROM_DATABASE=EX-4055 4S(16C650) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4055 4S(16C650) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004065*
+- ID_MODEL_FROM_DATABASE=EX-4065 8S(16C550) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4065 8S(16C550) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004068*
+- ID_MODEL_FROM_DATABASE=EX-4068 8S(16C650) RS-232
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4068 8S(16C650) RS-232)
+ pci:v000010B5d00009050sv0000D84Dsd00004078*
+- ID_MODEL_FROM_DATABASE=EX-4078 2S(16C552) RS-232+1P
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (EX-4078 2S(16C552) RS-232+1P)
+ pci:v000010B5d00009052*
+  ID_MODEL_FROM_DATABASE=PCI9052 PCI <-> IOBus Bridge
+@@ -19095,88 +19095,88 @@ pci:v000010B5d00009054*
+  ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00009054sv000010B5sd00002455*
+- ID_MODEL_FROM_DATABASE=Wessex Techology PHIL-PCI
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Wessex Techology PHIL-PCI)
+ pci:v000010B5d00009054sv000010B5sd00002696*
+- ID_MODEL_FROM_DATABASE=Innes Corp AM Radcap card
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Innes Corp AM Radcap card)
+ pci:v000010B5d00009054sv000010B5sd00002717*
+- ID_MODEL_FROM_DATABASE=Innes Corp Auricon card
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Innes Corp Auricon card)
+ pci:v000010B5d00009054sv000010B5sd00002844*
+- ID_MODEL_FROM_DATABASE=Innes Corp TVS Encoder card
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Innes Corp TVS Encoder card)
+ pci:v000010B5d00009054sv000012C7sd00004001*
+- ID_MODEL_FROM_DATABASE=Intel Dialogic DM/V960-4T1 PCI
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Intel Dialogic DM/V960-4T1 PCI)
+ pci:v000010B5d00009054sv000012D9sd00000002*
+- ID_MODEL_FROM_DATABASE=PCI Prosody Card rev 1.5
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PCI Prosody Card rev 1.5)
+ pci:v000010B5d00009054sv000014B4sd0000D100*
+- ID_MODEL_FROM_DATABASE=Dektec DTA-100
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Dektec DTA-100)
+ pci:v000010B5d00009054sv000014B4sd0000D114*
+- ID_MODEL_FROM_DATABASE=Dektec DTA-120
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (Dektec DTA-120)
+ pci:v000010B5d00009054sv000016DFsd00000011*
+- ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM PCI
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PIKA PrimeNet MM PCI)
+ pci:v000010B5d00009054sv000016DFsd00000012*
+- ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM cPCI 8
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PIKA PrimeNet MM cPCI 8)
+ pci:v000010B5d00009054sv000016DFsd00000013*
+- ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM cPCI 8 (without CAS Signaling)
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PIKA PrimeNet MM cPCI 8 (without CAS Signaling))
+ pci:v000010B5d00009054sv000016DFsd00000014*
+- ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM cPCI 4
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PIKA PrimeNet MM cPCI 4)
+ pci:v000010B5d00009054sv000016DFsd00000015*
+- ID_MODEL_FROM_DATABASE=PIKA Daytona MM
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PIKA Daytona MM)
+ pci:v000010B5d00009054sv000016DFsd00000016*
+- ID_MODEL_FROM_DATABASE=PIKA InLine MM
++ ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge (PIKA InLine MM)
+ pci:v000010B5d00009056*
+  ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00009056sv000010B5sd00002979*
+- ID_MODEL_FROM_DATABASE=CellinkBlade 11 - CPCI board VoATM AAL1
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (CellinkBlade 11 - CPCI board VoATM AAL1)
+ pci:v000010B5d00009056sv000010B5sd00003268*
+- ID_MODEL_FROM_DATABASE=IXXAT iPC-I XC16/PCIe CAN Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (IXXAT iPC-I XC16/PCIe CAN Board)
+ pci:v000010B5d00009056sv000010B5sd00003352*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe HD: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCIe HD: Timecode Reader Board)
+ pci:v000010B5d00009056sv000010B5sd00003353*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe D: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCIe D: Timecode Reader Board)
+ pci:v000010B5d00009056sv000010B5sd00003354*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe LV: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCIe LV: Timecode Reader Board)
+ pci:v000010B5d00009056sv000010B5sd00003355*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe L: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCIe L: Timecode Reader Board)
+ pci:v000010B5d00009056sv000010B5sd00003415*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCIe TS: Time Synchronisation Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Alpermann+Velte PCIe TS: Time Synchronisation Board)
+ pci:v000010B5d00009056sv000010B5sd00003493*
+- ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe 3G: Timecode Reader Board
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Alpermann+Velte PCL PCIe 3G: Timecode Reader Board)
+ pci:v000010B5d00009056sv00001369sd0000C001*
+- ID_MODEL_FROM_DATABASE=LX6464ES
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (LX6464ES)
+ pci:v000010B5d00009056sv00001369sd0000C201*
+- ID_MODEL_FROM_DATABASE=LX1616ES
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (LX1616ES)
+ pci:v000010B5d00009056sv000014B4sd0000D10A*
+- ID_MODEL_FROM_DATABASE=DekTec DTA-110T
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (DekTec DTA-110T)
+ pci:v000010B5d00009056sv000014B4sd0000D140*
+- ID_MODEL_FROM_DATABASE=Dektec DTA-140
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Dektec DTA-140)
+ pci:v000010B5d00009056sv00001A0Esd0000006F*
+- ID_MODEL_FROM_DATABASE=Dektec DTA-111
++ ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge (Dektec DTA-111)
+ pci:v000010B5d00009060*
+  ID_MODEL_FROM_DATABASE=PCI9060 32-bit 33MHz PCI <-> IOBus Bridge
+@@ -19185,7 +19185,7 @@ pci:v000010B5d0000906D*
+  ID_MODEL_FROM_DATABASE=9060SD
+ pci:v000010B5d0000906Dsv0000125Csd00000640*
+- ID_MODEL_FROM_DATABASE=Aries 16000P
++ ID_MODEL_FROM_DATABASE=9060SD (Aries 16000P)
+ pci:v000010B5d0000906E*
+  ID_MODEL_FROM_DATABASE=9060ES
+@@ -19194,61 +19194,61 @@ pci:v000010B5d00009080*
+  ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d00009080sv0000103Csd000010EB*
+- ID_MODEL_FROM_DATABASE=(Agilent) E2777B 83K Series Optical Communication Interface
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge ((Agilent) E2777B 83K Series Optical Communication Interface)
+ pci:v000010B5d00009080sv0000103Csd000010EC*
+- ID_MODEL_FROM_DATABASE=(Agilent) E6978-66442 PCI CIC
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge ((Agilent) E6978-66442 PCI CIC)
+ pci:v000010B5d00009080sv000010B5sd00001123*
+- ID_MODEL_FROM_DATABASE=Sectra KK631 encryption board
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (Sectra KK631 encryption board)
+ pci:v000010B5d00009080sv000010B5sd00009080*
+- ID_MODEL_FROM_DATABASE=9080 [real subsystem ID not set]
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (9080 [real subsystem ID not set])
+ pci:v000010B5d00009080sv000012D9sd00000002*
+- ID_MODEL_FROM_DATABASE=PCI Prosody Card
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (PCI Prosody Card)
+ pci:v000010B5d00009080sv000012DFsd00004422*
+- ID_MODEL_FROM_DATABASE=4422PCI ["Do-All" Telemetry Data Aquisition System]
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (4422PCI ["Do-All" Telemetry Data Aquisition System])
+ pci:v000010B5d00009080sv00001369sd00009601*
+- ID_MODEL_FROM_DATABASE=PCX822np
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (PCX822np)
+ pci:v000010B5d00009080sv00001369sd0000A102*
+- ID_MODEL_FROM_DATABASE=PCX822v2
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (PCX822v2)
+ pci:v000010B5d00009080sv00001369sd0000A201*
+- ID_MODEL_FROM_DATABASE=PCX442
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (PCX442)
+ pci:v000010B5d00009080sv00001369sd0000A301*
+- ID_MODEL_FROM_DATABASE=LCM440v2
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (LCM440v2)
+ pci:v000010B5d00009080sv00001369sd0000A401*
+- ID_MODEL_FROM_DATABASE=VX822
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (VX822)
+ pci:v000010B5d00009080sv00001369sd0000A402*
+- ID_MODEL_FROM_DATABASE=VX822v2
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (VX822v2)
+ pci:v000010B5d00009080sv00001369sd0000A901*
+- ID_MODEL_FROM_DATABASE=LCM420
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (LCM420)
+ pci:v000010B5d00009080sv00001369sd0000AA01*
+- ID_MODEL_FROM_DATABASE=VX820v2
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (VX820v2)
+ pci:v000010B5d00009080sv00001517sd0000000B*
+- ID_MODEL_FROM_DATABASE=ECSG-1R3ADC-PMC Clock synthesizer
++ ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge (ECSG-1R3ADC-PMC Clock synthesizer)
+ pci:v000010B5d00009656*
+  ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge
+ pci:v000010B5d00009656sv00001517sd0000000F*
+- ID_MODEL_FROM_DATABASE=ECDR-GC314-PMC Receiver
++ ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge (ECDR-GC314-PMC Receiver)
+ pci:v000010B5d00009656sv00001885sd00000700*
+- ID_MODEL_FROM_DATABASE=Tsunami FPGA PMC with Altera Stratix S40
++ ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge (Tsunami FPGA PMC with Altera Stratix S40)
+ pci:v000010B5d00009656sv00001885sd00000701*
+- ID_MODEL_FROM_DATABASE=Tsunami FPGA PMC with Altera Stratix S30
++ ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge (Tsunami FPGA PMC with Altera Stratix S30)
+ pci:v000010B5d0000A100*
+  ID_MODEL_FROM_DATABASE=Blackmagic Design DeckLink
+@@ -19263,28 +19263,28 @@ pci:v000010B5d0000D00D*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d0000D00Dsv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card)
+ pci:v000010B5d0000D33D*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d0000D33Dsv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=Tormenta 3 Varion V401PT Quad T1/J1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Tormenta 3 Varion V401PT Quad T1/J1 PCI card)
+ pci:v000010B5d0000D44D*
+  ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge
+ pci:v000010B5d0000D44Dsv000010B5sd000017F6*
+- ID_MODEL_FROM_DATABASE=Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card)
+ pci:v000010B5d0000D44Dsv000010B5sd000017F7*
+- ID_MODEL_FROM_DATABASE=Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card)
+ pci:v000010B5d0000D44Dsv000010B5sd000017F8*
+- ID_MODEL_FROM_DATABASE=Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card)
+ pci:v000010B5d0000D44Dsv000010B5sd00009030*
+- ID_MODEL_FROM_DATABASE=Tormenta 3 Varion V401PE Quad E1 PCI card
++ ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge (Tormenta 3 Varion V401PE Quad E1 PCI card)
+ pci:v000010B6*
+  ID_VENDOR_FROM_DATABASE=Madge Networks
+@@ -19299,19 +19299,19 @@ pci:v000010B6d00000002sv000010B6sd00000002*
+  ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk2
+ pci:v000010B6d00000002sv000010B6sd00000006*
+- ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter
++ ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk2 (16/4 CardBus Adapter)
+ pci:v000010B6d00000003*
+  ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3
+ pci:v000010B6d00000003sv00000E11sd0000B0FD*
+- ID_MODEL_FROM_DATABASE=Compaq NC4621 PCI, 4/16, WOL
++ ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3 (Compaq NC4621 PCI, 4/16, WOL)
+ pci:v000010B6d00000003sv000010B6sd00000003*
+  ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3
+ pci:v000010B6d00000003sv000010B6sd00000007*
+- ID_MODEL_FROM_DATABASE=Presto PCI Plus Adapter
++ ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3 (Presto PCI Plus Adapter)
+ pci:v000010B6d00000004*
+  ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk1
+@@ -19320,13 +19320,13 @@ pci:v000010B6d00000006*
+  ID_MODEL_FROM_DATABASE=16/4 Cardbus Adapter
+ pci:v000010B6d00000006sv000010B6sd00000006*
+- ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter
++ ID_MODEL_FROM_DATABASE=16/4 Cardbus Adapter (16/4 CardBus Adapter)
+ pci:v000010B6d00000007*
+  ID_MODEL_FROM_DATABASE=Presto PCI Adapter
+ pci:v000010B6d00000007sv000010B6sd00000007*
+- ID_MODEL_FROM_DATABASE=Presto PCI
++ ID_MODEL_FROM_DATABASE=Presto PCI Adapter (Presto PCI)
+ pci:v000010B6d00000009*
+  ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI-HS Ringnode
+@@ -19347,7 +19347,7 @@ pci:v000010B6d0000000Bsv000010B6sd00000008*
+  ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter Mk2
+ pci:v000010B6d0000000Bsv000010B6sd0000000B*
+- ID_MODEL_FROM_DATABASE=16/4 Cardbus Adapter Mk2
++ ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter Mk2 (16/4 Cardbus Adapter Mk2)
+ pci:v000010B6d0000000C*
+  ID_MODEL_FROM_DATABASE=RapidFire 3140V2 16/4 TR Adapter
+@@ -19368,13 +19368,13 @@ pci:v000010B7d00000001*
+  ID_MODEL_FROM_DATABASE=3c985 1000BaseSX (SX/TX)
+ pci:v000010B7d00000001sv00009850sd00000001*
+- ID_MODEL_FROM_DATABASE=3c985B-SX
++ ID_MODEL_FROM_DATABASE=3c985 1000BaseSX (SX/TX) (3c985B-SX)
+ pci:v000010B7d00000013*
+  ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC (3CRDAG675)
+ pci:v000010B7d00000013sv000010B7sd00002031*
+- ID_MODEL_FROM_DATABASE=3CRDAG675 11a/b/g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC (3CRDAG675) (3CRDAG675 11a/b/g Wireless PCI Adapter)
+ pci:v000010B7d00000910*
+  ID_MODEL_FROM_DATABASE=3C910-A01
+@@ -19386,10 +19386,10 @@ pci:v000010B7d00001007*
+  ID_MODEL_FROM_DATABASE=Mini PCI 56k Winmodem
+ pci:v000010B7d00001007sv000010B7sd0000615B*
+- ID_MODEL_FROM_DATABASE=Mini PCI 56K Modem
++ ID_MODEL_FROM_DATABASE=Mini PCI 56k Winmodem (Mini PCI 56K Modem)
+ pci:v000010B7d00001007sv000010B7sd0000615C*
+- ID_MODEL_FROM_DATABASE=Mini PCI 56K Modem
++ ID_MODEL_FROM_DATABASE=Mini PCI 56k Winmodem (Mini PCI 56K Modem)
+ pci:v000010B7d00001201*
+  ID_MODEL_FROM_DATABASE=3c982-TXM 10/100baseTX Dual Port A [Hydra]
+@@ -19401,16 +19401,16 @@ pci:v000010B7d00001700*
+  ID_MODEL_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell]
+ pci:v000010B7d00001700sv00001043sd000080EB*
+- ID_MODEL_FROM_DATABASE=A7V600/P4P800/K8V motherboard
++ ID_MODEL_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell] (A7V600/P4P800/K8V motherboard)
+ pci:v000010B7d00001700sv000010B7sd00000010*
+- ID_MODEL_FROM_DATABASE=3C940 Gigabit LOM Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell] (3C940 Gigabit LOM Ethernet Adapter)
+ pci:v000010B7d00001700sv000010B7sd00000020*
+- ID_MODEL_FROM_DATABASE=3C941 Gigabit LOM Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell] (3C941 Gigabit LOM Ethernet Adapter)
+ pci:v000010B7d00001700sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell] (KV8-MAX3 motherboard)
+ pci:v000010B7d00003390*
+  ID_MODEL_FROM_DATABASE=3c339 TokenLink Velocity
+@@ -19419,7 +19419,7 @@ pci:v000010B7d00003590*
+  ID_MODEL_FROM_DATABASE=3c359 TokenLink Velocity XL
+ pci:v000010B7d00003590sv000010B7sd00003590*
+- ID_MODEL_FROM_DATABASE=TokenLink Velocity XL Adapter (3C359/359B)
++ ID_MODEL_FROM_DATABASE=3c359 TokenLink Velocity XL (TokenLink Velocity XL Adapter (3C359/359B))
+ pci:v000010B7d00004500*
+  ID_MODEL_FROM_DATABASE=3c450 HomePNA [Tornado]
+@@ -19431,19 +19431,19 @@ pci:v000010B7d00005057*
+  ID_MODEL_FROM_DATABASE=3c575 Megahertz 10/100 LAN CardBus [Boomerang]
+ pci:v000010B7d00005057sv000010B7sd00005A57*
+- ID_MODEL_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card
++ ID_MODEL_FROM_DATABASE=3c575 Megahertz 10/100 LAN CardBus [Boomerang] (3C575 Megahertz 10/100 LAN Cardbus PC Card)
+ pci:v000010B7d00005157*
+  ID_MODEL_FROM_DATABASE=3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone]
+ pci:v000010B7d00005157sv000010B7sd00005B57*
+- ID_MODEL_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card
++ ID_MODEL_FROM_DATABASE=3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] (3C575 Megahertz 10/100 LAN Cardbus PC Card)
+ pci:v000010B7d00005257*
+  ID_MODEL_FROM_DATABASE=3cCFE575CT CardBus [Cyclone]
+ pci:v000010B7d00005257sv000010B7sd00005C57*
+- ID_MODEL_FROM_DATABASE=FE575C-3Com 10/100 LAN CardBus-Fast Ethernet
++ ID_MODEL_FROM_DATABASE=3cCFE575CT CardBus [Cyclone] (FE575C-3Com 10/100 LAN CardBus-Fast Ethernet)
+ pci:v000010B7d00005900*
+  ID_MODEL_FROM_DATABASE=3c590 10BaseT [Vortex]
+@@ -19467,7 +19467,7 @@ pci:v000010B7d00005B57*
+  ID_MODEL_FROM_DATABASE=3c595 Megahertz 10/100 LAN CardBus [Boomerang]
+ pci:v000010B7d00005B57sv000010B7sd00005B57*
+- ID_MODEL_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card
++ ID_MODEL_FROM_DATABASE=3c595 Megahertz 10/100 LAN CardBus [Boomerang] (3C575 Megahertz 10/100 LAN Cardbus PC Card)
+ pci:v000010B7d00006000*
+  ID_MODEL_FROM_DATABASE=3CRSHPW796 [OfficeConnect Wireless CardBus]
+@@ -19482,31 +19482,31 @@ pci:v000010B7d00006056*
+  ID_MODEL_FROM_DATABASE=3c556B CardBus [Tornado]
+ pci:v000010B7d00006056sv000010B7sd00006556*
+- ID_MODEL_FROM_DATABASE=10/100 Mini PCI Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=3c556B CardBus [Tornado] (10/100 Mini PCI Ethernet Adapter)
+ pci:v000010B7d00006560*
+  ID_MODEL_FROM_DATABASE=3cCFE656 CardBus [Cyclone]
+ pci:v000010B7d00006560sv000010B7sd0000656A*
+- ID_MODEL_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus
++ ID_MODEL_FROM_DATABASE=3cCFE656 CardBus [Cyclone] (3CCFEM656 10/100 LAN+56K Modem CardBus)
+ pci:v000010B7d00006561*
+  ID_MODEL_FROM_DATABASE=3cCFEM656 10/100 LAN+56K Modem CardBus
+ pci:v000010B7d00006561sv000010B7sd0000656B*
+- ID_MODEL_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus
++ ID_MODEL_FROM_DATABASE=3cCFEM656 10/100 LAN+56K Modem CardBus (3CCFEM656 10/100 LAN+56K Modem CardBus)
+ pci:v000010B7d00006562*
+  ID_MODEL_FROM_DATABASE=3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone]
+ pci:v000010B7d00006562sv000010B7sd0000656B*
+- ID_MODEL_FROM_DATABASE=3CCFEM656B 10/100 LAN+56K Modem CardBus
++ ID_MODEL_FROM_DATABASE=3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] (3CCFEM656B 10/100 LAN+56K Modem CardBus)
+ pci:v000010B7d00006563*
+  ID_MODEL_FROM_DATABASE=3cCFEM656B 10/100 LAN+56K Modem CardBus
+ pci:v000010B7d00006563sv000010B7sd0000656B*
+- ID_MODEL_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus
++ ID_MODEL_FROM_DATABASE=3cCFEM656B 10/100 LAN+56K Modem CardBus (3CCFEM656 10/100 LAN+56K Modem CardBus)
+ pci:v000010B7d00006564*
+  ID_MODEL_FROM_DATABASE=3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado]
+@@ -19542,13 +19542,13 @@ pci:v000010B7d00009004*
+  ID_MODEL_FROM_DATABASE=3c900B-TPO Etherlink XL [Cyclone]
+ pci:v000010B7d00009004sv000010B7sd00009004*
+- ID_MODEL_FROM_DATABASE=3C900B-TPO Etherlink XL TPO 10Mb
++ ID_MODEL_FROM_DATABASE=3c900B-TPO Etherlink XL [Cyclone] (3C900B-TPO Etherlink XL TPO 10Mb)
+ pci:v000010B7d00009005*
+  ID_MODEL_FROM_DATABASE=3c900B-Combo Etherlink XL [Cyclone]
+ pci:v000010B7d00009005sv000010B7sd00009005*
+- ID_MODEL_FROM_DATABASE=3C900B-Combo Etherlink XL Combo
++ ID_MODEL_FROM_DATABASE=3c900B-Combo Etherlink XL [Cyclone] (3C900B-Combo Etherlink XL Combo)
+ pci:v000010B7d00009006*
+  ID_MODEL_FROM_DATABASE=3c900B-TPC Etherlink XL [Cyclone]
+@@ -19572,67 +19572,67 @@ pci:v000010B7d00009055*
+  ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone]
+ pci:v000010B7d00009055sv00001028sd00000080*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000081*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000082*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000083*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000084*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000085*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000086*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000087*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000088*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000089*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000090*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000091*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000092*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000093*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000094*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000095*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000096*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000097*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000098*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv00001028sd00000099*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009055sv000010B7sd00009055*
+- ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100
++ ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] (3C905B Fast Etherlink XL 10/100)
+ pci:v000010B7d00009056*
+  ID_MODEL_FROM_DATABASE=3c905B-T4 Fast EtherLink XL [Cyclone]
+@@ -19647,40 +19647,40 @@ pci:v000010B7d00009200*
+  ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado]
+ pci:v000010B7d00009200sv00001028sd00000095*
+- ID_MODEL_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (3C920 Integrated Fast Ethernet Controller)
+ pci:v000010B7d00009200sv00001028sd00000097*
+- ID_MODEL_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (3C920 Integrated Fast Ethernet Controller)
+ pci:v000010B7d00009200sv00001028sd000000B4*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX110
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (OptiPlex GX110)
+ pci:v000010B7d00009200sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (Precision 530)
+ pci:v000010B7d00009200sv00001028sd000000FE*
+- ID_MODEL_FROM_DATABASE=Optiplex GX240
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (Optiplex GX240)
+ pci:v000010B7d00009200sv00001028sd0000012A*
+- ID_MODEL_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller [Latitude C640]
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (3C920 Integrated Fast Ethernet Controller [Latitude C640])
+ pci:v000010B7d00009200sv000010B7sd00001000*
+- ID_MODEL_FROM_DATABASE=3C905CX-TX/TX-M Fast Etherlink for PC Management NIC
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (3C905CX-TX/TX-M Fast Etherlink for PC Management NIC)
+ pci:v000010B7d00009200sv000010B7sd00007000*
+- ID_MODEL_FROM_DATABASE=10/100 Mini PCI Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (10/100 Mini PCI Ethernet Adapter)
+ pci:v000010B7d00009200sv000010F1sd00002466*
+- ID_MODEL_FROM_DATABASE=Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller)
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller))
+ pci:v000010B7d00009200sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] (X10 Laptop)
+ pci:v000010B7d00009201*
+  ID_MODEL_FROM_DATABASE=3C920B-EMB Integrated Fast Ethernet Controller [Tornado]
+ pci:v000010B7d00009201sv00001043sd000080AB*
+- ID_MODEL_FROM_DATABASE=A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller
++ ID_MODEL_FROM_DATABASE=3C920B-EMB Integrated Fast Ethernet Controller [Tornado] (A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller)
+ pci:v000010B7d00009202*
+  ID_MODEL_FROM_DATABASE=3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller
+@@ -19695,22 +19695,22 @@ pci:v000010B7d00009800*
+  ID_MODEL_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter [Cyclone]
+ pci:v000010B7d00009800sv000010B7sd00009800*
+- ID_MODEL_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter
++ ID_MODEL_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter [Cyclone] (3c980-TX Fast Etherlink XL Server Adapter)
+ pci:v000010B7d00009805*
+  ID_MODEL_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T]
+ pci:v000010B7d00009805sv000010B7sd00001201*
+- ID_MODEL_FROM_DATABASE=EtherLink Server 10/100 Dual Port A
++ ID_MODEL_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T] (EtherLink Server 10/100 Dual Port A)
+ pci:v000010B7d00009805sv000010B7sd00001202*
+- ID_MODEL_FROM_DATABASE=EtherLink Server 10/100 Dual Port B
++ ID_MODEL_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T] (EtherLink Server 10/100 Dual Port B)
+ pci:v000010B7d00009805sv000010B7sd00009805*
+- ID_MODEL_FROM_DATABASE=3c980 10/100baseTX NIC [Python-T]
++ ID_MODEL_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T] (3c980 10/100baseTX NIC [Python-T])
+ pci:v000010B7d00009805sv000010F1sd00002462*
+- ID_MODEL_FROM_DATABASE=Thunder K7 S2462
++ ID_MODEL_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T] (Thunder K7 S2462)
+ pci:v000010B7d00009900*
+  ID_MODEL_FROM_DATABASE=3C990-TX [Typhoon]
+@@ -19725,25 +19725,25 @@ pci:v000010B7d00009904*
+  ID_MODEL_FROM_DATABASE=3C990B-TX-M/3C990BSVR [Typhoon2]
+ pci:v000010B7d00009904sv000010B7sd00001000*
+- ID_MODEL_FROM_DATABASE=3CR990B-TX-M [Typhoon2]
++ ID_MODEL_FROM_DATABASE=3C990B-TX-M/3C990BSVR [Typhoon2] (3CR990B-TX-M [Typhoon2])
+ pci:v000010B7d00009904sv000010B7sd00002000*
+- ID_MODEL_FROM_DATABASE=3CR990BSVR [Typhoon2 Server]
++ ID_MODEL_FROM_DATABASE=3C990B-TX-M/3C990BSVR [Typhoon2] (3CR990BSVR [Typhoon2 Server])
+ pci:v000010B7d00009905*
+  ID_MODEL_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber]
+ pci:v000010B7d00009905sv000010B7sd00001101*
+- ID_MODEL_FROM_DATABASE=3CR990-FX-95 [Typhoon Fiber 56-bit]
++ ID_MODEL_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber] (3CR990-FX-95 [Typhoon Fiber 56-bit])
+ pci:v000010B7d00009905sv000010B7sd00001102*
+- ID_MODEL_FROM_DATABASE=3CR990-FX-97 [Typhoon Fiber 168-bit]
++ ID_MODEL_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber] (3CR990-FX-97 [Typhoon Fiber 168-bit])
+ pci:v000010B7d00009905sv000010B7sd00002101*
+- ID_MODEL_FROM_DATABASE=3CR990-FX-95 Server [Typhoon Fiber 56-bit]
++ ID_MODEL_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber] (3CR990-FX-95 Server [Typhoon Fiber 56-bit])
+ pci:v000010B7d00009905sv000010B7sd00002102*
+- ID_MODEL_FROM_DATABASE=3CR990-FX-97 Server [Typhoon Fiber 168-bit]
++ ID_MODEL_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber] (3CR990-FX-97 Server [Typhoon Fiber 168-bit])
+ pci:v000010B7d00009908*
+  ID_MODEL_FROM_DATABASE=3CR990SVR95 [Typhoon Server 56-bit]
+@@ -19764,49 +19764,49 @@ pci:v000010B8d00000005*
+  ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter
+ pci:v000010B8d00000005sv00001055sd0000E000*
+- ID_MODEL_FROM_DATABASE=LANEPIC 10/100 [EVB171Q-PCI]
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (LANEPIC 10/100 [EVB171Q-PCI])
+ pci:v000010B8d00000005sv00001055sd0000E002*
+- ID_MODEL_FROM_DATABASE=LANEPIC 10/100 [EVB171G-PCI]
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (LANEPIC 10/100 [EVB171G-PCI])
+ pci:v000010B8d00000005sv000010B8sd0000A011*
+- ID_MODEL_FROM_DATABASE=EtherPower II 10/100
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (EtherPower II 10/100)
+ pci:v000010B8d00000005sv000010B8sd0000A014*
+- ID_MODEL_FROM_DATABASE=EtherPower II 10/100
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (EtherPower II 10/100)
+ pci:v000010B8d00000005sv000010B8sd0000A015*
+- ID_MODEL_FROM_DATABASE=EtherPower II 10/100
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (EtherPower II 10/100)
+ pci:v000010B8d00000005sv000010B8sd0000A016*
+- ID_MODEL_FROM_DATABASE=EtherPower II 10/100
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (EtherPower II 10/100)
+ pci:v000010B8d00000005sv000010B8sd0000A017*
+- ID_MODEL_FROM_DATABASE=EtherPower II 10/100
++ ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter (EtherPower II 10/100)
+ pci:v000010B8d00000006*
+  ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter
+ pci:v000010B8d00000006sv00001055sd0000E100*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00000006sv00001055sd0000E102*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00000006sv00001055sd0000E300*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00000006sv00001055sd0000E302*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00000006sv000010B8sd0000A012*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00000006sv000013A2sd00008002*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00000006sv000013A2sd00008006*
+- ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter (LANEPIC Cardbus Fast Ethernet Adapter)
+ pci:v000010B8d00001000*
+  ID_MODEL_FROM_DATABASE=FDC 37c665
+@@ -19869,13 +19869,13 @@ pci:v000010B9d00001521*
+  ID_MODEL_FROM_DATABASE=M1521 [Aladdin III]
+ pci:v000010B9d00001521sv000010B9sd00001521*
+- ID_MODEL_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge
++ ID_MODEL_FROM_DATABASE=M1521 [Aladdin III] (ALI M1521 Aladdin III CPU Bridge)
+ pci:v000010B9d00001523*
+  ID_MODEL_FROM_DATABASE=M1523
+ pci:v000010B9d00001523sv000010B9sd00001523*
+- ID_MODEL_FROM_DATABASE=ALI M1523 ISA Bridge
++ ID_MODEL_FROM_DATABASE=M1523 (ALI M1523 ISA Bridge)
+ pci:v000010B9d00001531*
+  ID_MODEL_FROM_DATABASE=M1531 [Aladdin IV]
+@@ -19884,16 +19884,16 @@ pci:v000010B9d00001533*
+  ID_MODEL_FROM_DATABASE=M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+]
+ pci:v000010B9d00001533sv00001014sd0000053B*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] (ThinkPad R40e)
+ pci:v000010B9d00001533sv000010B9sd00001533*
+- ID_MODEL_FROM_DATABASE=ALi M1533 Aladdin IV/V ISA Bridge
++ ID_MODEL_FROM_DATABASE=M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] (ALi M1533 Aladdin IV/V ISA Bridge)
+ pci:v000010B9d00001541*
+  ID_MODEL_FROM_DATABASE=M1541
+ pci:v000010B9d00001541sv000010B9sd00001541*
+- ID_MODEL_FROM_DATABASE=ALI M1541 Aladdin V/V+ AGP System Controller
++ ID_MODEL_FROM_DATABASE=M1541 (ALI M1541 Aladdin V/V+ AGP System Controller)
+ pci:v000010B9d00001543*
+  ID_MODEL_FROM_DATABASE=M1543
+@@ -19902,10 +19902,10 @@ pci:v000010B9d00001563*
+  ID_MODEL_FROM_DATABASE=M1563 HyperTransport South Bridge
+ pci:v000010B9d00001563sv000010B9sd00001563*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=M1563 HyperTransport South Bridge (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00001563sv00001849sd00001563*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=M1563 HyperTransport South Bridge (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00001573*
+  ID_MODEL_FROM_DATABASE=PCI to LPC Controller
+@@ -20007,22 +20007,22 @@ pci:v000010B9d00005229*
+  ID_MODEL_FROM_DATABASE=M5229 IDE
+ pci:v000010B9d00005229sv00001014sd0000050F*
+- ID_MODEL_FROM_DATABASE=ThinkPad R30
++ ID_MODEL_FROM_DATABASE=M5229 IDE (ThinkPad R30)
+ pci:v000010B9d00005229sv00001014sd0000053D*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=M5229 IDE (ThinkPad R40e)
+ pci:v000010B9d00005229sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin IDE
++ ID_MODEL_FROM_DATABASE=M5229 IDE (Pavilion ze4400 builtin IDE)
+ pci:v000010B9d00005229sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=M5229 IDE (XE4500 Notebook)
+ pci:v000010B9d00005229sv00001043sd00008053*
+- ID_MODEL_FROM_DATABASE=A7A266 Motherboard IDE
++ ID_MODEL_FROM_DATABASE=M5229 IDE (A7A266 Motherboard IDE)
+ pci:v000010B9d00005229sv00001849sd00005229*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard IDE (PATA)
++ ID_MODEL_FROM_DATABASE=M5229 IDE (ASRock 939Dual-SATA2 Motherboard IDE (PATA))
+ pci:v000010B9d00005235*
+  ID_MODEL_FROM_DATABASE=M5225
+@@ -20031,31 +20031,31 @@ pci:v000010B9d00005237*
+  ID_MODEL_FROM_DATABASE=USB 1.1 Controller
+ pci:v000010B9d00005237sv00001014sd00000540*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (ThinkPad R40e)
+ pci:v000010B9d00005237sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin USB
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (Pavilion ze4400 builtin USB)
+ pci:v000010B9d00005237sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (XE4500 Notebook)
+ pci:v000010B9d00005237sv0000104Dsd0000810F*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-U1 USB/OHCI Revision 1.0
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (VAIO PCG-U1 USB/OHCI Revision 1.0)
+ pci:v000010B9d00005237sv000010B9sd00005237*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00005237sv00001849sd00005237*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=USB 1.1 Controller (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00005239*
+  ID_MODEL_FROM_DATABASE=USB 2.0 Controller
+ pci:v000010B9d00005239sv000010B9sd00005239*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 Controller (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00005239sv00001849sd00005239*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 Controller (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00005243*
+  ID_MODEL_FROM_DATABASE=M1541 PCI to AGP Controller
+@@ -20103,7 +20103,7 @@ pci:v000010B9d00005288*
+  ID_MODEL_FROM_DATABASE=ULi M5288 SATA
+ pci:v000010B9d00005288sv00001043sd00008056*
+- ID_MODEL_FROM_DATABASE=A8R-MVP Mainboard
++ ID_MODEL_FROM_DATABASE=ULi M5288 SATA (A8R-MVP Mainboard)
+ pci:v000010B9d00005289*
+  ID_MODEL_FROM_DATABASE=ULi 5289 SATA
+@@ -20115,16 +20115,16 @@ pci:v000010B9d00005451*
+  ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device
+ pci:v000010B9d00005451sv00001014sd00000506*
+- ID_MODEL_FROM_DATABASE=ThinkPad R30
++ ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device (ThinkPad R30)
+ pci:v000010B9d00005451sv00001014sd0000053E*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device (ThinkPad R40e)
+ pci:v000010B9d00005451sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Audio
++ ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device (Pavilion ze4400 builtin Audio)
+ pci:v000010B9d00005451sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device (XE4500 Notebook)
+ pci:v000010B9d00005453*
+  ID_MODEL_FROM_DATABASE=M5453 PCI AC-Link Controller Modem Device
+@@ -20133,22 +20133,22 @@ pci:v000010B9d00005455*
+  ID_MODEL_FROM_DATABASE=M5455 PCI AC-Link Controller Audio Device
+ pci:v000010B9d00005455sv000010B9sd00005455*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=M5455 PCI AC-Link Controller Audio Device (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00005455sv00001849sd00000850*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=M5455 PCI AC-Link Controller Audio Device (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010B9d00005457*
+  ID_MODEL_FROM_DATABASE=M5457 AC'97 Modem Controller
+ pci:v000010B9d00005457sv00001014sd00000535*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=M5457 AC'97 Modem Controller (ThinkPad R40e)
+ pci:v000010B9d00005457sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Modem Device
++ ID_MODEL_FROM_DATABASE=M5457 AC'97 Modem Controller (Pavilion ze4400 builtin Modem Device)
+ pci:v000010B9d00005457sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=M5457 AC'97 Modem Controller (XE4500 Notebook)
+ pci:v000010B9d00005459*
+  ID_MODEL_FROM_DATABASE=SmartLink SmartPCI561 56K Modem
+@@ -20169,19 +20169,19 @@ pci:v000010B9d00007101*
+  ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU]
+ pci:v000010B9d00007101sv00001014sd00000510*
+- ID_MODEL_FROM_DATABASE=ThinkPad R30
++ ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU] (ThinkPad R30)
+ pci:v000010B9d00007101sv00001014sd0000053C*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU] (ThinkPad R40e)
+ pci:v000010B9d00007101sv0000103Csd00000024*
+- ID_MODEL_FROM_DATABASE=Pavilion ze4400
++ ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU] (Pavilion ze4400)
+ pci:v000010B9d00007101sv0000103Csd00000025*
+- ID_MODEL_FROM_DATABASE=XE4500 Notebook
++ ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU] (XE4500 Notebook)
+ pci:v000010B9d00007101sv00001849sd00007101*
+- ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard
++ ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU] (ASRock 939Dual-SATA2 Motherboard)
+ pci:v000010BA*
+  ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Corp.
+@@ -20196,7 +20196,7 @@ pci:v000010BAd00000308*
+  ID_MODEL_FROM_DATABASE=Tornado 3000 [OEM Evans & Sutherland]
+ pci:v000010BAd00000308sv000010DDsd00000024*
+- ID_MODEL_FROM_DATABASE=Tornado 3000
++ ID_MODEL_FROM_DATABASE=Tornado 3000 [OEM Evans & Sutherland] (Tornado 3000)
+ pci:v000010BAd00001002*
+  ID_MODEL_FROM_DATABASE=VG500 [VolumePro Volume Rendering Accelerator]
+@@ -20259,79 +20259,79 @@ pci:v000010C8d00000004*
+  ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD]
+ pci:v000010C8d00000004sv00001014sd000000BA*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv00001025sd00001007*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv00001028sd00000074*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv00001028sd00000075*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv00001028sd0000007D*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv00001028sd0000007E*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv00001033sd0000802F*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv0000104Dsd0000801B*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv0000104Dsd0000802F*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv0000104Dsd0000830B*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010BAsd00000E00*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010C8sd00000004*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010CFsd00001029*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010F7sd00008308*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010F7sd00008309*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010F7sd0000830B*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010F7sd0000830D*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000004sv000010F7sd00008312*
+- ID_MODEL_FROM_DATABASE=MagicGraph 128XD
++ ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] (MagicGraph 128XD)
+ pci:v000010C8d00000005*
+  ID_MODEL_FROM_DATABASE=NM2200 [MagicGraph 256AV]
+ pci:v000010C8d00000005sv00001014sd000000DD*
+- ID_MODEL_FROM_DATABASE=ThinkPad 570
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicGraph 256AV] (ThinkPad 570)
+ pci:v000010C8d00000005sv00001028sd00000088*
+- ID_MODEL_FROM_DATABASE=Latitude CPi A
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicGraph 256AV] (Latitude CPi A)
+ pci:v000010C8d00000006*
+  ID_MODEL_FROM_DATABASE=NM2360 [MagicMedia 256ZX]
+ pci:v000010C8d00000006sv00001014sd00000152*
+- ID_MODEL_FROM_DATABASE=ThinkPad 600X
++ ID_MODEL_FROM_DATABASE=NM2360 [MagicMedia 256ZX] (ThinkPad 600X)
+ pci:v000010C8d00000016*
+  ID_MODEL_FROM_DATABASE=NM2380 [MagicMedia 256XL+]
+ pci:v000010C8d00000016sv000010C8sd00000016*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256XL+
++ ID_MODEL_FROM_DATABASE=NM2380 [MagicMedia 256XL+] (MagicMedia 256XL+)
+ pci:v000010C8d00000025*
+  ID_MODEL_FROM_DATABASE=NM2230 [MagicGraph 256AV+]
+@@ -20343,40 +20343,40 @@ pci:v000010C8d00008005*
+  ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio]
+ pci:v000010C8d00008005sv00000E11sd0000B0D1*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Discovery
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on Discovery)
+ pci:v000010C8d00008005sv00000E11sd0000B126*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Durango
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on Durango)
+ pci:v000010C8d00008005sv00001014sd000000DD*
+- ID_MODEL_FROM_DATABASE=ThinkPad 390/i1720/i1721
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (ThinkPad 390/i1720/i1721)
+ pci:v000010C8d00008005sv00001025sd00001003*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on TravelMate 720
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on TravelMate 720)
+ pci:v000010C8d00008005sv00001028sd00000088*
+- ID_MODEL_FROM_DATABASE=Latitude CPi A
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (Latitude CPi A)
+ pci:v000010C8d00008005sv00001028sd0000008F*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Colorado Inspiron
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on Colorado Inspiron)
+ pci:v000010C8d00008005sv0000103Csd00000007*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Voyager II
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on Voyager II)
+ pci:v000010C8d00008005sv0000103Csd00000008*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Voyager III
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on Voyager III)
+ pci:v000010C8d00008005sv0000103Csd0000000D*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Omnibook 900
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on Omnibook 900)
+ pci:v000010C8d00008005sv000010C8sd00008005*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on FireAnt
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device on FireAnt)
+ pci:v000010C8d00008005sv0000110Asd00008005*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device)
+ pci:v000010C8d00008005sv000014C0sd00000004*
+- ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device
++ ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] (MagicMedia 256AV Audio Device)
+ pci:v000010C8d00008006*
+  ID_MODEL_FROM_DATABASE=NM2360 [MagicMedia 256ZX Audio]
+@@ -20415,10 +20415,10 @@ pci:v000010CDd00001300*
+  ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U
+ pci:v000010CDd00001300sv000010CDsd00001310*
+- ID_MODEL_FROM_DATABASE=ASC1300 SCSI Adapter
++ ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U (ASC1300 SCSI Adapter)
+ pci:v000010CDd00001300sv00001195sd00001320*
+- ID_MODEL_FROM_DATABASE=Ultra-SCSI CardBus PC Card REX CB31
++ ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U (Ultra-SCSI CardBus PC Card REX CB31)
+ pci:v000010CDd00002300*
+  ID_MODEL_FROM_DATABASE=ABP940-UW
+@@ -20511,7 +20511,7 @@ pci:v000010D9d00000531*
+  ID_MODEL_FROM_DATABASE=MX987x5
+ pci:v000010D9d00000531sv00001186sd00001200*
+- ID_MODEL_FROM_DATABASE=DFE-540TX ProFAST 10/100 Adapter
++ ID_MODEL_FROM_DATABASE=MX987x5 (DFE-540TX ProFAST 10/100 Adapter)
+ pci:v000010D9d00008625*
+  ID_MODEL_FROM_DATABASE=MX86250
+@@ -20559,7 +20559,7 @@ pci:v000010DDd00000100*
+  ID_MODEL_FROM_DATABASE=Lightning 1200
+ pci:v000010DDd00000100sv000010DDsd00000023*
+- ID_MODEL_FROM_DATABASE=Lightning 1200 15+16M
++ ID_MODEL_FROM_DATABASE=Lightning 1200 (15+16M)
+ pci:v000010DE*
+  ID_VENDOR_FROM_DATABASE=NVIDIA Corporation
+@@ -20574,193 +20574,193 @@ pci:v000010DEd00000020*
+  ID_MODEL_FROM_DATABASE=NV4 [Riva TNT]
+ pci:v000010DEd00000020sv00001043sd00000200*
+- ID_MODEL_FROM_DATABASE=V3400 TNT
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (V3400 TNT)
+ pci:v000010DEd00000020sv00001048sd00000C18*
+- ID_MODEL_FROM_DATABASE=Erazor II SGRAM
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Erazor II SGRAM)
+ pci:v000010DEd00000020sv00001048sd00000C19*
+- ID_MODEL_FROM_DATABASE=Erazor II
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Erazor II)
+ pci:v000010DEd00000020sv00001048sd00000C1B*
+- ID_MODEL_FROM_DATABASE=Erazor II
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Erazor II)
+ pci:v000010DEd00000020sv00001048sd00000C1C*
+- ID_MODEL_FROM_DATABASE=Erazor II
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Erazor II)
+ pci:v000010DEd00000020sv00001092sd00000550*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00000552*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004804*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004808*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004810*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004812*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004815*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004820*
+- ID_MODEL_FROM_DATABASE=Viper V550 with TV out
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550 with TV out)
+ pci:v000010DEd00000020sv00001092sd00004822*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004904*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00004914*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv00001092sd00008225*
+- ID_MODEL_FROM_DATABASE=Viper V550
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Viper V550)
+ pci:v000010DEd00000020sv000010B4sd0000273D*
+- ID_MODEL_FROM_DATABASE=Velocity 4400
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Velocity 4400)
+ pci:v000010DEd00000020sv000010B4sd0000273E*
+- ID_MODEL_FROM_DATABASE=Velocity 4400
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Velocity 4400)
+ pci:v000010DEd00000020sv000010B4sd00002740*
+- ID_MODEL_FROM_DATABASE=Velocity 4400
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Velocity 4400)
+ pci:v000010DEd00000020sv000010DEsd00000020*
+- ID_MODEL_FROM_DATABASE=Riva TNT
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Riva TNT)
+ pci:v000010DEd00000020sv00001102sd00001015*
+- ID_MODEL_FROM_DATABASE=Graphics Blaster CT6710
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Graphics Blaster CT6710)
+ pci:v000010DEd00000020sv00001102sd00001016*
+- ID_MODEL_FROM_DATABASE=Graphics Blaster RIVA TNT
++ ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] (Graphics Blaster RIVA TNT)
+ pci:v000010DEd00000028*
+  ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro]
+ pci:v000010DEd00000028sv00001043sd00000200*
+- ID_MODEL_FROM_DATABASE=AGP-V3800 SGRAM
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (AGP-V3800 SGRAM)
+ pci:v000010DEd00000028sv00001043sd00000201*
+- ID_MODEL_FROM_DATABASE=AGP-V3800 SDRAM
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (AGP-V3800 SDRAM)
+ pci:v000010DEd00000028sv00001043sd00000205*
+- ID_MODEL_FROM_DATABASE=PCI-V3800
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (PCI-V3800)
+ pci:v000010DEd00000028sv00001043sd00004000*
+- ID_MODEL_FROM_DATABASE=AGP-V3800PRO
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (AGP-V3800PRO)
+ pci:v000010DEd00000028sv00001048sd00000C21*
+- ID_MODEL_FROM_DATABASE=Synergy II
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Synergy II)
+ pci:v000010DEd00000028sv00001048sd00000C28*
+- ID_MODEL_FROM_DATABASE=Erazor III
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III)
+ pci:v000010DEd00000028sv00001048sd00000C29*
+- ID_MODEL_FROM_DATABASE=Erazor III
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III)
+ pci:v000010DEd00000028sv00001048sd00000C2A*
+- ID_MODEL_FROM_DATABASE=Erazor III
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III)
+ pci:v000010DEd00000028sv00001048sd00000C2B*
+- ID_MODEL_FROM_DATABASE=Erazor III
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III)
+ pci:v000010DEd00000028sv00001048sd00000C31*
+- ID_MODEL_FROM_DATABASE=Erazor III Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III Pro)
+ pci:v000010DEd00000028sv00001048sd00000C32*
+- ID_MODEL_FROM_DATABASE=Erazor III Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III Pro)
+ pci:v000010DEd00000028sv00001048sd00000C33*
+- ID_MODEL_FROM_DATABASE=Erazor III Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III Pro)
+ pci:v000010DEd00000028sv00001048sd00000C34*
+- ID_MODEL_FROM_DATABASE=Erazor III Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Erazor III Pro)
+ pci:v000010DEd00000028sv0000107Dsd00002134*
+- ID_MODEL_FROM_DATABASE=WinFast 3D S320 II + TV-Out
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (WinFast 3D S320 II + TV-Out)
+ pci:v000010DEd00000028sv00001092sd00004804*
+- ID_MODEL_FROM_DATABASE=Viper V770
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Viper V770)
+ pci:v000010DEd00000028sv00001092sd00004A00*
+- ID_MODEL_FROM_DATABASE=Viper V770
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Viper V770)
+ pci:v000010DEd00000028sv00001092sd00004A02*
+- ID_MODEL_FROM_DATABASE=Viper V770 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Viper V770 Ultra)
+ pci:v000010DEd00000028sv00001092sd00005A00*
+- ID_MODEL_FROM_DATABASE=RIVA TNT2/TNT2 Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (RIVA TNT2/TNT2 Pro)
+ pci:v000010DEd00000028sv00001092sd00005A40*
+- ID_MODEL_FROM_DATABASE=Viper V770D AGP
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Viper V770D AGP)
+ pci:v000010DEd00000028sv00001092sd00006A02*
+- ID_MODEL_FROM_DATABASE=Viper V770 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Viper V770 Ultra)
+ pci:v000010DEd00000028sv00001092sd00007A02*
+- ID_MODEL_FROM_DATABASE=Viper V770 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Viper V770 Ultra)
+ pci:v000010DEd00000028sv000010DEsd00000005*
+- ID_MODEL_FROM_DATABASE=RIVA TNT2 Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (RIVA TNT2 Pro)
+ pci:v000010DEd00000028sv000010DEsd0000000F*
+- ID_MODEL_FROM_DATABASE=Compaq NVIDIA TNT2 Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Compaq NVIDIA TNT2 Pro)
+ pci:v000010DEd00000028sv00001102sd00001020*
+- ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (3D Blaster RIVA TNT2)
+ pci:v000010DEd00000028sv00001102sd00001026*
+- ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Digital
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (3D Blaster RIVA TNT2 Digital)
+ pci:v000010DEd00000028sv00001462sd00008806*
+- ID_MODEL_FROM_DATABASE=MS-8806 AGPhantom Graphics Card
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (MS-8806 AGPhantom Graphics Card)
+ pci:v000010DEd00000028sv000014AFsd00005810*
+- ID_MODEL_FROM_DATABASE=Maxi Gamer Xentor
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] (Maxi Gamer Xentor)
+ pci:v000010DEd00000029*
+  ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra]
+ pci:v000010DEd00000029sv00001043sd00000200*
+- ID_MODEL_FROM_DATABASE=AGP-V3800 Deluxe
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (AGP-V3800 Deluxe)
+ pci:v000010DEd00000029sv00001043sd00000201*
+- ID_MODEL_FROM_DATABASE=AGP-V3800 Ultra SDRAM
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (AGP-V3800 Ultra SDRAM)
+ pci:v000010DEd00000029sv00001043sd00000205*
+- ID_MODEL_FROM_DATABASE=PCI-V3800 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (PCI-V3800 Ultra)
+ pci:v000010DEd00000029sv00001048sd00000C2E*
+- ID_MODEL_FROM_DATABASE=Erazor III Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (Erazor III Ultra)
+ pci:v000010DEd00000029sv00001048sd00000C2F*
+- ID_MODEL_FROM_DATABASE=Erazor III Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (Erazor III Ultra)
+ pci:v000010DEd00000029sv00001048sd00000C30*
+- ID_MODEL_FROM_DATABASE=Erazor III Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (Erazor III Ultra)
+ pci:v000010DEd00000029sv00001102sd00001021*
+- ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (3D Blaster RIVA TNT2 Ultra)
+ pci:v000010DEd00000029sv00001102sd00001029*
+- ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (3D Blaster RIVA TNT2 Ultra)
+ pci:v000010DEd00000029sv00001102sd0000102F*
+- ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (3D Blaster RIVA TNT2 Ultra)
+ pci:v000010DEd00000029sv000014AFsd00005820*
+- ID_MODEL_FROM_DATABASE=Maxi Gamer Xentor 32
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (Maxi Gamer Xentor 32)
+ pci:v000010DEd00000029sv00004843sd00004F34*
+- ID_MODEL_FROM_DATABASE=Dynamite
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] (Dynamite)
+ pci:v000010DEd0000002A*
+  ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2]
+@@ -20772,85 +20772,85 @@ pci:v000010DEd0000002C*
+  ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT]
+ pci:v000010DEd0000002Csv00001043sd00000200*
+- ID_MODEL_FROM_DATABASE=AGP-V3800 Combat SDRAM
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (AGP-V3800 Combat SDRAM)
+ pci:v000010DEd0000002Csv00001043sd00000201*
+- ID_MODEL_FROM_DATABASE=AGP-V3800 Combat
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (AGP-V3800 Combat)
+ pci:v000010DEd0000002Csv00001048sd00000C20*
+- ID_MODEL_FROM_DATABASE=TNT2 Vanta
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (TNT2 Vanta)
+ pci:v000010DEd0000002Csv00001048sd00000C21*
+- ID_MODEL_FROM_DATABASE=TNT2 Vanta
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (TNT2 Vanta)
+ pci:v000010DEd0000002Csv00001048sd00000C25*
+- ID_MODEL_FROM_DATABASE=TNT2 Vanta 16MB
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (TNT2 Vanta 16MB)
+ pci:v000010DEd0000002Csv00001092sd00006820*
+- ID_MODEL_FROM_DATABASE=Viper V730
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (Viper V730)
+ pci:v000010DEd0000002Csv00001102sd00001031*
+- ID_MODEL_FROM_DATABASE=CT6938 VANTA 8MB
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (CT6938 VANTA 8MB)
+ pci:v000010DEd0000002Csv00001102sd00001034*
+- ID_MODEL_FROM_DATABASE=CT6894 VANTA 16MB
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (CT6894 VANTA 16MB)
+ pci:v000010DEd0000002Csv000014AFsd00005008*
+- ID_MODEL_FROM_DATABASE=Maxi Gamer Phoenix 2
++ ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] (Maxi Gamer Phoenix 2)
+ pci:v000010DEd0000002D*
+  ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro]
+ pci:v000010DEd0000002Dsv00001043sd00000200*
+- ID_MODEL_FROM_DATABASE=AGP-V3800M
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (AGP-V3800M)
+ pci:v000010DEd0000002Dsv00001043sd00000201*
+- ID_MODEL_FROM_DATABASE=AGP-V3800M
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (AGP-V3800M)
+ pci:v000010DEd0000002Dsv00001048sd00000C3A*
+- ID_MODEL_FROM_DATABASE=Erazor III LT
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (Erazor III LT)
+ pci:v000010DEd0000002Dsv00001048sd00000C3B*
+- ID_MODEL_FROM_DATABASE=Erazor III LT
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (Erazor III LT)
+ pci:v000010DEd0000002Dsv0000107Dsd00002137*
+- ID_MODEL_FROM_DATABASE=WinFast 3D S325
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (WinFast 3D S325)
+ pci:v000010DEd0000002Dsv000010DEsd00000006*
+- ID_MODEL_FROM_DATABASE=RIVA TNT2 Model 64/Model 64 Pro
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (RIVA TNT2 Model 64/Model 64 Pro)
+ pci:v000010DEd0000002Dsv000010DEsd0000001E*
+- ID_MODEL_FROM_DATABASE=M64 AGP4x
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (M64 AGP4x)
+ pci:v000010DEd0000002Dsv00001102sd00001023*
+- ID_MODEL_FROM_DATABASE=CT6892 RIVA TNT2 Value
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (CT6892 RIVA TNT2 Value)
+ pci:v000010DEd0000002Dsv00001102sd00001024*
+- ID_MODEL_FROM_DATABASE=CT6932 RIVA TNT2 Value 32Mb
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (CT6932 RIVA TNT2 Value 32Mb)
+ pci:v000010DEd0000002Dsv00001102sd0000102C*
+- ID_MODEL_FROM_DATABASE=CT6931 RIVA TNT2 Value [Jumper]
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (CT6931 RIVA TNT2 Value [Jumper])
+ pci:v000010DEd0000002Dsv00001102sd00001030*
+- ID_MODEL_FROM_DATABASE=CT6931 RIVA TNT2 Value
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (CT6931 RIVA TNT2 Value)
+ pci:v000010DEd0000002Dsv0000110Asd0000006F*
+- ID_MODEL_FROM_DATABASE=GM1000-16
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (GM1000-16)
+ pci:v000010DEd0000002Dsv0000110Asd00000081*
+- ID_MODEL_FROM_DATABASE=GM1000-16
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (GM1000-16)
+ pci:v000010DEd0000002Dsv00001462sd00008808*
+- ID_MODEL_FROM_DATABASE=MSI-8808
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (MSI-8808)
+ pci:v000010DEd0000002Dsv000014AFsd00005620*
+- ID_MODEL_FROM_DATABASE=Gamer Cougar Video Edition
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (Gamer Cougar Video Edition)
+ pci:v000010DEd0000002Dsv00001554sd00001041*
+- ID_MODEL_FROM_DATABASE=Pixelview RIVA TNT2 M64
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (Pixelview RIVA TNT2 M64)
+ pci:v000010DEd0000002Dsv00001569sd0000002D*
+- ID_MODEL_FROM_DATABASE=Palit Microsystems Daytona TNT2 M64
++ ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] (Palit Microsystems Daytona TNT2 M64)
+ pci:v000010DEd00000034*
+  ID_MODEL_FROM_DATABASE=MCP04 SMBus
+@@ -20889,19 +20889,19 @@ pci:v000010DEd00000041*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800]
+ pci:v000010DEd00000041sv00001043sd0000817B*
+- ID_MODEL_FROM_DATABASE=V9999 Gamer Edition
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800] (V9999 Gamer Edition)
+ pci:v000010DEd00000041sv0000107Dsd00002992*
+- ID_MODEL_FROM_DATABASE=WinFast A400
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800] (WinFast A400)
+ pci:v000010DEd00000041sv00001458sd0000310F*
+- ID_MODEL_FROM_DATABASE=Geforce 6800 GV-N6812
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800] (Geforce 6800 GV-N6812)
+ pci:v000010DEd00000042*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 LE]
+ pci:v000010DEd00000042sv0000107Dsd0000299B*
+- ID_MODEL_FROM_DATABASE=WinFast A400 LE
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 LE] (WinFast A400 LE)
+ pci:v000010DEd00000043*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 XE]
+@@ -20913,16 +20913,16 @@ pci:v000010DEd00000045*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT]
+ pci:v000010DEd00000045sv00001043sd0000817D*
+- ID_MODEL_FROM_DATABASE=V9999GT
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT] (V9999GT)
+ pci:v000010DEd00000045sv00001458sd00003140*
+- ID_MODEL_FROM_DATABASE=GV-N68T256D
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT] (GV-N68T256D)
+ pci:v000010DEd00000047*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GS]
+ pci:v000010DEd00000047sv00001682sd00002109*
+- ID_MODEL_FROM_DATABASE=GeForce 6800 GS
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GS] (GeForce 6800 GS)
+ pci:v000010DEd00000048*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 XT]
+@@ -20934,133 +20934,133 @@ pci:v000010DEd00000050*
+  ID_MODEL_FROM_DATABASE=CK804 ISA Bridge
+ pci:v000010DEd00000050sv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (K8N4/A8N Series Mainboard)
+ pci:v000010DEd00000050sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (Tomcat K8E (S2865))
+ pci:v000010DEd00000050sv00001458sd00000C11*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd00000050sv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (MSI K8N Diamond)
+ pci:v000010DEd00000050sv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (K8N Neo4-F mainboard)
+ pci:v000010DEd00000050sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (KN8-Ultra Mainboard)
+ pci:v000010DEd00000050sv00001565sd00003402*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (NF4 AM2L Mainboard)
+ pci:v000010DEd00000051*
+  ID_MODEL_FROM_DATABASE=CK804 ISA Bridge
+ pci:v000010DEd00000051sv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 ISA Bridge
++ ID_MODEL_FROM_DATABASE=CK804 ISA Bridge (PowerEdge T105 ISA Bridge)
+ pci:v000010DEd00000052*
+  ID_MODEL_FROM_DATABASE=CK804 SMBus
+ pci:v000010DEd00000052sv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 SMBus
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (PowerEdge T105 SMBus)
+ pci:v000010DEd00000052sv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (K8N4/A8N Series Mainboard)
+ pci:v000010DEd00000052sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (Tomcat K8E (S2865))
+ pci:v000010DEd00000052sv00001458sd00000C11*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd00000052sv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (MSI K8N Diamond)
+ pci:v000010DEd00000052sv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (K8N Neo4-F mainboard)
+ pci:v000010DEd00000052sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (KN8-Ultra Mainboard)
+ pci:v000010DEd00000052sv00001565sd00003402*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 SMBus (NF4 AM2L Mainboard)
+ pci:v000010DEd00000053*
+  ID_MODEL_FROM_DATABASE=CK804 IDE
+ pci:v000010DEd00000053sv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 IDE (K8N4/A8N Series Mainboard)
+ pci:v000010DEd00000053sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 IDE (Tomcat K8E (S2865))
+ pci:v000010DEd00000053sv00001458sd00005002*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 IDE (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd00000053sv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 IDE (MSI K8N Diamond)
+ pci:v000010DEd00000053sv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 IDE (K8N Neo4-F mainboard)
+ pci:v000010DEd00000053sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 IDE (KN8-Ultra Mainboard)
+ pci:v000010DEd00000053sv00001565sd00003402*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 IDE (NF4 AM2L Mainboard)
+ pci:v000010DEd00000054*
+  ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller
+ pci:v000010DEd00000054sv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 Serial ATA
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (PowerEdge T105 Serial ATA)
+ pci:v000010DEd00000054sv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (A8N Series Mainboard)
+ pci:v000010DEd00000054sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (Tomcat K8E (S2865))
+ pci:v000010DEd00000054sv00001458sd0000B003*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd00000054sv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (MSI K8N Diamond)
+ pci:v000010DEd00000054sv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (K8N Neo4-F mainboard)
+ pci:v000010DEd00000054sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd00000054sv00001565sd00005401*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd00000055*
+  ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller
+ pci:v000010DEd00000055sv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 Serial ATA
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (PowerEdge T105 Serial ATA)
+ pci:v000010DEd00000055sv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (K8N4/A8N Series Mainboard)
+ pci:v000010DEd00000055sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (Tomcat K8E (S2865))
+ pci:v000010DEd00000055sv00001458sd0000B003*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd00000055sv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (K8N Neo4-F mainboard)
+ pci:v000010DEd00000055sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd00000055sv00001565sd00005401*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd00000056*
+  ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller
+@@ -21069,28 +21069,28 @@ pci:v000010DEd00000057*
+  ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller
+ pci:v000010DEd00000057sv00001043sd00008141*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (K8N4/A8N Series Mainboard)
+ pci:v000010DEd00000057sv000010DEsd0000CB84*
+- ID_MODEL_FROM_DATABASE=NF4 Lanparty
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (NF4 Lanparty)
+ pci:v000010DEd00000057sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (Tomcat K8E (S2865))
+ pci:v000010DEd00000057sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd00000057sv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (MSI K8N Diamond)
+ pci:v000010DEd00000057sv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (K8N Neo4-F mainboard)
+ pci:v000010DEd00000057sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd00000057sv00001565sd00002501*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd00000058*
+  ID_MODEL_FROM_DATABASE=CK804 AC'97 Modem
+@@ -21099,73 +21099,73 @@ pci:v000010DEd00000059*
+  ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller
+ pci:v000010DEd00000059sv00001043sd0000812A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller (K8N4/A8N Series Mainboard)
+ pci:v000010DEd00000059sv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller (Tomcat K8E (S2865))
+ pci:v000010DEd00000059sv00001462sd00007585*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller (K8N Neo4-F mainboard)
+ pci:v000010DEd00000059sv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd00000059sv00001565sd00008211*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd0000005A*
+  ID_MODEL_FROM_DATABASE=CK804 USB Controller
+ pci:v000010DEd0000005Asv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 onboard USB
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (PowerEdge T105 onboard USB)
+ pci:v000010DEd0000005Asv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (K8N4/A8N Series Mainboard)
+ pci:v000010DEd0000005Asv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (Tomcat K8E (S2865))
+ pci:v000010DEd0000005Asv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd0000005Asv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (MSI K8N Diamond)
+ pci:v000010DEd0000005Asv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (K8N Neo4-F mainboard)
+ pci:v000010DEd0000005Asv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd0000005Asv00001565sd00003402*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd0000005B*
+  ID_MODEL_FROM_DATABASE=CK804 USB Controller
+ pci:v000010DEd0000005Bsv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 onboard USB
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (PowerEdge T105 onboard USB)
+ pci:v000010DEd0000005Bsv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=K8N4/A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (K8N4/A8N Series Mainboard)
+ pci:v000010DEd0000005Bsv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (Tomcat K8E (S2865))
+ pci:v000010DEd0000005Bsv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd0000005Bsv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=MSI K8N Diamond
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (MSI K8N Diamond)
+ pci:v000010DEd0000005Bsv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (K8N Neo4-F mainboard)
+ pci:v000010DEd0000005Bsv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd0000005Bsv00001565sd00003402*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 USB Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd0000005C*
+  ID_MODEL_FROM_DATABASE=CK804 PCI Bridge
+@@ -21177,34 +21177,34 @@ pci:v000010DEd0000005E*
+  ID_MODEL_FROM_DATABASE=CK804 Memory Controller
+ pci:v000010DEd0000005Esv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 Memory Controller
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (PowerEdge T105 Memory Controller)
+ pci:v000010DEd0000005Esv00001043sd0000815A*
+- ID_MODEL_FROM_DATABASE=A8N Series Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (A8N Series Mainboard)
+ pci:v000010DEd0000005Esv000010DEsd0000005E*
+- ID_MODEL_FROM_DATABASE=ECS Elitegroup NFORCE3-A939 motherboard.
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (ECS Elitegroup NFORCE3-A939 motherboard.)
+ pci:v000010DEd0000005Esv000010F1sd00002865*
+- ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865)
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (Tomcat K8E (S2865))
+ pci:v000010DEd0000005Esv000010F1sd00002891*
+- ID_MODEL_FROM_DATABASE=Thunder K8SRE Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (Thunder K8SRE Mainboard)
+ pci:v000010DEd0000005Esv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (GA-K8N Ultra-9 Mainboard)
+ pci:v000010DEd0000005Esv00001462sd00007100*
+- ID_MODEL_FROM_DATABASE=K8N Diamond Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (K8N Diamond Mainboard)
+ pci:v000010DEd0000005Esv00001462sd00007125*
+- ID_MODEL_FROM_DATABASE=K8N Neo4-F Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (K8N Neo4-F Mainboard)
+ pci:v000010DEd0000005Esv0000147Bsd00001C1A*
+- ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (KN8-Ultra Mainboard)
+ pci:v000010DEd0000005Esv00001565sd00003402*
+- ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard
++ ID_MODEL_FROM_DATABASE=CK804 Memory Controller (NF4 AM2L Mainboard)
+ pci:v000010DEd0000005F*
+  ID_MODEL_FROM_DATABASE=CK804 Memory Controller
+@@ -21213,61 +21213,61 @@ pci:v000010DEd00000060*
+  ID_MODEL_FROM_DATABASE=nForce2 ISA Bridge
+ pci:v000010DEd00000060sv00001043sd000080AD*
+- ID_MODEL_FROM_DATABASE=A7N8X Mainboard
++ ID_MODEL_FROM_DATABASE=nForce2 ISA Bridge (A7N8X Mainboard)
+ pci:v000010DEd00000060sv0000147Bsd00001C02*
+- ID_MODEL_FROM_DATABASE=NF7-S/NF7 (nVidia-nForce2) 2.X
++ ID_MODEL_FROM_DATABASE=nForce2 ISA Bridge (NF7-S/NF7 (nVidia-nForce2) 2.X)
+ pci:v000010DEd00000060sv0000A0A0sd000003BA*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 ISA Bridge (UK79G-1394 motherboard)
+ pci:v000010DEd00000064*
+  ID_MODEL_FROM_DATABASE=nForce2 SMBus (MCP)
+ pci:v000010DEd00000064sv0000147Bsd00001C02*
+- ID_MODEL_FROM_DATABASE=NF7-S/NF7 (nVidia-nForce2) 2.X
++ ID_MODEL_FROM_DATABASE=nForce2 SMBus (MCP) (NF7-S/NF7 (nVidia-nForce2) 2.X)
+ pci:v000010DEd00000064sv0000A0A0sd000003BB*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 SMBus (MCP) (UK79G-1394 motherboard)
+ pci:v000010DEd00000065*
+  ID_MODEL_FROM_DATABASE=nForce2 IDE
+ pci:v000010DEd00000065sv000010DEsd00000C11*
+- ID_MODEL_FROM_DATABASE=nForce 2 EIDE Controller
++ ID_MODEL_FROM_DATABASE=nForce2 IDE (nForce 2 EIDE Controller)
+ pci:v000010DEd00000065sv0000A0A0sd000003B2*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 IDE (UK79G-1394 motherboard)
+ pci:v000010DEd00000066*
+  ID_MODEL_FROM_DATABASE=nForce2 Ethernet Controller
+ pci:v000010DEd00000066sv00001043sd000080A7*
+- ID_MODEL_FROM_DATABASE=A7N8X Mainboard onboard nForce2 Ethernet
++ ID_MODEL_FROM_DATABASE=nForce2 Ethernet Controller (A7N8X Mainboard onboard nForce2 Ethernet)
+ pci:v000010DEd00000066sv000010DEsd00000C11*
+- ID_MODEL_FROM_DATABASE=nForce MCP-T Networking Adapter
++ ID_MODEL_FROM_DATABASE=nForce2 Ethernet Controller (nForce MCP-T Networking Adapter)
+ pci:v000010DEd00000066sv0000A0A0sd000003B3*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Ethernet Controller (UK79G-1394 motherboard)
+ pci:v000010DEd00000067*
+  ID_MODEL_FROM_DATABASE=nForce2 USB Controller
+ pci:v000010DEd00000067sv00001043sd00000C11*
+- ID_MODEL_FROM_DATABASE=A7N8X Mainboard
++ ID_MODEL_FROM_DATABASE=nForce2 USB Controller (A7N8X Mainboard)
+ pci:v000010DEd00000067sv0000A0A0sd000003B4*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 USB Controller (UK79G-1394 motherboard)
+ pci:v000010DEd00000068*
+  ID_MODEL_FROM_DATABASE=nForce2 USB Controller
+ pci:v000010DEd00000068sv00001043sd00000C11*
+- ID_MODEL_FROM_DATABASE=A7N8X Mainboard
++ ID_MODEL_FROM_DATABASE=nForce2 USB Controller (A7N8X Mainboard)
+ pci:v000010DEd00000068sv0000A0A0sd000003B4*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 USB Controller (UK79G-1394 motherboard)
+ pci:v000010DEd0000006A*
+  ID_MODEL_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP)
+@@ -21276,16 +21276,16 @@ pci:v000010DEd0000006Asv00001043sd00008095*
+  ID_MODEL_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP)
+ pci:v000010DEd0000006Asv0000A0A0sd00000304*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP) (UK79G-1394 motherboard)
+ pci:v000010DEd0000006B*
+  ID_MODEL_FROM_DATABASE=nForce Audio Processing Unit
+ pci:v000010DEd0000006Bsv000010DEsd0000006B*
+- ID_MODEL_FROM_DATABASE=nForce2 MCP Audio Processing Unit
++ ID_MODEL_FROM_DATABASE=nForce Audio Processing Unit (nForce2 MCP Audio Processing Unit)
+ pci:v000010DEd0000006Bsv0000A0A0sd00000304*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce Audio Processing Unit (UK79G-1394 motherboard)
+ pci:v000010DEd0000006C*
+  ID_MODEL_FROM_DATABASE=nForce2 External PCI Bridge
+@@ -21297,25 +21297,25 @@ pci:v000010DEd0000006E*
+  ID_MODEL_FROM_DATABASE=nForce2 FireWire (IEEE 1394) Controller
+ pci:v000010DEd0000006Esv0000A0A0sd00000306*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 FireWire (IEEE 1394) Controller (UK79G-1394 motherboard)
+ pci:v000010DEd00000080*
+  ID_MODEL_FROM_DATABASE=MCP2A ISA bridge
+ pci:v000010DEd00000080sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=MCP2A ISA bridge (NV7 Motherboard)
+ pci:v000010DEd00000084*
+  ID_MODEL_FROM_DATABASE=MCP2A SMBus
+ pci:v000010DEd00000084sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=MCP2A SMBus (NV7 Motherboard)
+ pci:v000010DEd00000085*
+  ID_MODEL_FROM_DATABASE=MCP2A IDE
+ pci:v000010DEd00000085sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=MCP2A IDE (NV7 Motherboard)
+ pci:v000010DEd00000086*
+  ID_MODEL_FROM_DATABASE=MCP2A Ethernet Controller
+@@ -21324,19 +21324,19 @@ pci:v000010DEd00000087*
+  ID_MODEL_FROM_DATABASE=MCP2A USB Controller
+ pci:v000010DEd00000087sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=MCP2A USB Controller (NV7 Motherboard)
+ pci:v000010DEd00000088*
+  ID_MODEL_FROM_DATABASE=MCP2A USB Controller
+ pci:v000010DEd00000088sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=MCP2A USB Controller (NV7 Motherboard)
+ pci:v000010DEd0000008A*
+  ID_MODEL_FROM_DATABASE=MCP2S AC'97 Audio Controller
+ pci:v000010DEd0000008Asv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=MCP2S AC'97 Audio Controller (NV7 Motherboard)
+ pci:v000010DEd0000008B*
+  ID_MODEL_FROM_DATABASE=MCP2A PCI Bridge
+@@ -21378,7 +21378,7 @@ pci:v000010DEd000000A0*
+  ID_MODEL_FROM_DATABASE=NV5 [Aladdin TNT2]
+ pci:v000010DEd000000A0sv000014AFsd00005810*
+- ID_MODEL_FROM_DATABASE=Maxi Gamer Xentor
++ ID_MODEL_FROM_DATABASE=NV5 [Aladdin TNT2] (Maxi Gamer Xentor)
+ pci:v000010DEd000000C0*
+  ID_MODEL_FROM_DATABASE=NV41 [GeForce 6800 GS]
+@@ -21459,46 +21459,46 @@ pci:v000010DEd000000DF*
+  ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller
+ pci:v000010DEd000000DFsv00001043sd000080A7*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller (K8N-E)
+ pci:v000010DEd000000DFsv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller (Winfast NF3250K8AA)
+ pci:v000010DEd000000DFsv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller (NF8 Mainboard)
+ pci:v000010DEd000000E0*
+  ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge
+ pci:v000010DEd000000E0sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge (K8N-E)
+ pci:v000010DEd000000E0sv000010DEsd00000C11*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge (Winfast NF3250K8AA)
+ pci:v000010DEd000000E0sv00001462sd00007030*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000E0sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge (NF8 Mainboard)
+ pci:v000010DEd000000E0sv00001849sd000000E0*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge (Motherboard (one of many))
+ pci:v000010DEd000000E1*
+  ID_MODEL_FROM_DATABASE=nForce3 250Gb Host Bridge
+ pci:v000010DEd000000E1sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb Host Bridge (K8N-E)
+ pci:v000010DEd000000E1sv00001462sd00007030*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb Host Bridge (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000E1sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb Host Bridge (NF8 Mainboard)
+ pci:v000010DEd000000E1sv00001849sd000000E1*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb Host Bridge (Motherboard (one of many))
+ pci:v000010DEd000000E2*
+  ID_MODEL_FROM_DATABASE=nForce3 250Gb AGP Host to PCI Bridge
+@@ -21507,55 +21507,55 @@ pci:v000010DEd000000E3*
+  ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller
+ pci:v000010DEd000000E3sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller (K8N-E)
+ pci:v000010DEd000000E3sv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller (Winfast NF3250K8AA)
+ pci:v000010DEd000000E3sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller (NF8 Mainboard)
+ pci:v000010DEd000000E3sv00001849sd000000E3*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller (Motherboard (one of many))
+ pci:v000010DEd000000E4*
+  ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management
+ pci:v000010DEd000000E4sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management (K8N-E)
+ pci:v000010DEd000000E4sv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management (Winfast NF3250K8AA)
+ pci:v000010DEd000000E4sv00001462sd00007030*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000E4sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management (NF8 Mainboard)
+ pci:v000010DEd000000E4sv00001849sd000000E4*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management (Motherboard (one of many))
+ pci:v000010DEd000000E5*
+  ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5)
+ pci:v000010DEd000000E5sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) (K8N-E)
+ pci:v000010DEd000000E5sv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) (Winfast NF3250K8AA)
+ pci:v000010DEd000000E5sv00001462sd00007030*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000E5sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) (NF8 Mainboard)
+ pci:v000010DEd000000E5sv00001849sd000000E5*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) (Motherboard (one of many))
+ pci:v000010DEd000000E5sv0000F849sd000000E5*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) (Motherboard (one of many))
+ pci:v000010DEd000000E6*
+  ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller
+@@ -21564,52 +21564,52 @@ pci:v000010DEd000000E7*
+  ID_MODEL_FROM_DATABASE=CK8S USB Controller
+ pci:v000010DEd000000E7sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=CK8S USB Controller (K8N-E)
+ pci:v000010DEd000000E7sv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=CK8S USB Controller (Winfast NF3250K8AA)
+ pci:v000010DEd000000E7sv00001462sd00007030*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=CK8S USB Controller (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000E7sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=CK8S USB Controller (NF8 Mainboard)
+ pci:v000010DEd000000E7sv00001849sd000000E7*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=CK8S USB Controller (Motherboard (one of many))
+ pci:v000010DEd000000E8*
+  ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller
+ pci:v000010DEd000000E8sv00001043sd0000813F*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller (K8N-E)
+ pci:v000010DEd000000E8sv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller (Winfast NF3250K8AA)
+ pci:v000010DEd000000E8sv00001462sd00007030*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000E8sv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller (NF8 Mainboard)
+ pci:v000010DEd000000E8sv00001849sd000000E8*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller (Motherboard (one of many))
+ pci:v000010DEd000000EA*
+  ID_MODEL_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller
+ pci:v000010DEd000000EAsv00001043sd0000819D*
+- ID_MODEL_FROM_DATABASE=K8N-E
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller (K8N-E)
+ pci:v000010DEd000000EAsv0000105Bsd00000C43*
+- ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller (Winfast NF3250K8AA)
+ pci:v000010DEd000000EAsv00001462sd0000B010*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller (K8N Neo-FSR v2.0)
+ pci:v000010DEd000000EAsv0000147Bsd00001C0B*
+- ID_MODEL_FROM_DATABASE=NF8 Mainboard
++ ID_MODEL_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller (NF8 Mainboard)
+ pci:v000010DEd000000ED*
+  ID_MODEL_FROM_DATABASE=nForce3 250Gb PCI-to-PCI Bridge
+@@ -21621,28 +21621,28 @@ pci:v000010DEd000000F1*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT]
+ pci:v000010DEd000000F1sv00001043sd000081A6*
+- ID_MODEL_FROM_DATABASE=N6600GT TD 128M AGP
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (N6600GT TD 128M AGP)
+ pci:v000010DEd000000F1sv00001043sd000081C6*
+- ID_MODEL_FROM_DATABASE=N6600GT TD 128M AGP
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (N6600GT TD 128M AGP)
+ pci:v000010DEd000000F1sv00001458sd00003150*
+- ID_MODEL_FROM_DATABASE=GV-N66T128VP
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (GV-N66T128VP)
+ pci:v000010DEd000000F1sv00001554sd00001191*
+- ID_MODEL_FROM_DATABASE=PixelView PV-N43UA (128KD)
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (PixelView PV-N43UA (128KD))
+ pci:v000010DEd000000F1sv00001682sd00002119*
+- ID_MODEL_FROM_DATABASE=GeForce 6600 GT AGP
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (GeForce 6600 GT AGP)
+ pci:v000010DEd000000F2*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600]
+ pci:v000010DEd000000F2sv00001554sd00001194*
+- ID_MODEL_FROM_DATABASE=PixelView PV-N43AT (256KD)
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] (PixelView PV-N43AT (256KD))
+ pci:v000010DEd000000F2sv00001682sd0000211C*
+- ID_MODEL_FROM_DATABASE=GeForce 6600 256MB DDR DUAL DVI TV
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] (GeForce 6600 256MB DDR DUAL DVI TV)
+ pci:v000010DEd000000F3*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6200]
+@@ -21657,7 +21657,7 @@ pci:v000010DEd000000F6*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6800 GS/XT]
+ pci:v000010DEd000000F6sv00001682sd0000217E*
+- ID_MODEL_FROM_DATABASE=XFX GeForce 6800 XTreme 256MB DDR3 AGP
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6800 GS/XT] (XFX GeForce 6800 XTreme 256MB DDR3 AGP)
+ pci:v000010DEd000000F8*
+  ID_MODEL_FROM_DATABASE=NV40GL [Quadro FX 3400/4400]
+@@ -21666,10 +21666,10 @@ pci:v000010DEd000000F9*
+  ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT/GTO/Ultra]
+ pci:v000010DEd000000F9sv000010DEsd000000F9*
+- ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT]
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT/GTO/Ultra] (NV40 [GeForce 6800 GT])
+ pci:v000010DEd000000F9sv00001682sd00002120*
+- ID_MODEL_FROM_DATABASE=GEFORCE 6800 GT PCI-E
++ ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT/GTO/Ultra] (GEFORCE 6800 GT PCI-E)
+ pci:v000010DEd000000FA*
+  ID_MODEL_FROM_DATABASE=NV36 [GeForce PCX 5750]
+@@ -21693,130 +21693,130 @@ pci:v000010DEd00000100*
+  ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR]
+ pci:v000010DEd00000100sv00001043sd00000200*
+- ID_MODEL_FROM_DATABASE=AGP-V6600 SGRAM
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (AGP-V6600 SGRAM)
+ pci:v000010DEd00000100sv00001043sd00000201*
+- ID_MODEL_FROM_DATABASE=AGP-V6600 SDRAM
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (AGP-V6600 SDRAM)
+ pci:v000010DEd00000100sv00001043sd00004008*
+- ID_MODEL_FROM_DATABASE=AGP-V6600 SGRAM
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (AGP-V6600 SGRAM)
+ pci:v000010DEd00000100sv00001043sd00004009*
+- ID_MODEL_FROM_DATABASE=AGP-V6600 SDRAM
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (AGP-V6600 SDRAM)
+ pci:v000010DEd00000100sv00001048sd00000C41*
+- ID_MODEL_FROM_DATABASE=Erazor X
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (Erazor X)
+ pci:v000010DEd00000100sv00001048sd00000C43*
+- ID_MODEL_FROM_DATABASE=ERAZOR X PCI
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (ERAZOR X PCI)
+ pci:v000010DEd00000100sv00001048sd00000C48*
+- ID_MODEL_FROM_DATABASE=Synergy Force
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (Synergy Force)
+ pci:v000010DEd00000100sv00001102sd0000102D*
+- ID_MODEL_FROM_DATABASE=CT6941 GeForce 256
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (CT6941 GeForce 256)
+ pci:v000010DEd00000100sv000014AFsd00005022*
+- ID_MODEL_FROM_DATABASE=3D Prophet SE
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] (3D Prophet SE)
+ pci:v000010DEd00000101*
+  ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR]
+ pci:v000010DEd00000101sv00001043sd00000202*
+- ID_MODEL_FROM_DATABASE=AGP-V6800 DDR
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (AGP-V6800 DDR)
+ pci:v000010DEd00000101sv00001043sd0000400A*
+- ID_MODEL_FROM_DATABASE=AGP-V6800 DDR SGRAM
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (AGP-V6800 DDR SGRAM)
+ pci:v000010DEd00000101sv00001043sd0000400B*
+- ID_MODEL_FROM_DATABASE=AGP-V6800 DDR SDRAM
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (AGP-V6800 DDR SDRAM)
+ pci:v000010DEd00000101sv00001048sd00000C42*
+- ID_MODEL_FROM_DATABASE=Erazor X
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (Erazor X)
+ pci:v000010DEd00000101sv0000107Dsd00002822*
+- ID_MODEL_FROM_DATABASE=WinFast GeForce 256
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (WinFast GeForce 256)
+ pci:v000010DEd00000101sv00001102sd0000102E*
+- ID_MODEL_FROM_DATABASE=CT6970/CT6971
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (CT6970/CT6971)
+ pci:v000010DEd00000101sv000014AFsd00005021*
+- ID_MODEL_FROM_DATABASE=3D Prophet DDR-DVI
++ ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] (3D Prophet DDR-DVI)
+ pci:v000010DEd00000103*
+  ID_MODEL_FROM_DATABASE=NV10GL [Quadro]
+ pci:v000010DEd00000103sv00001048sd00000C40*
+- ID_MODEL_FROM_DATABASE=GLoria II-64
++ ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II-64)
+ pci:v000010DEd00000103sv00001048sd00000C44*
+- ID_MODEL_FROM_DATABASE=GLoria II
++ ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II)
+ pci:v000010DEd00000103sv00001048sd00000C45*
+- ID_MODEL_FROM_DATABASE=GLoria II
++ ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II)
+ pci:v000010DEd00000103sv00001048sd00000C4A*
+- ID_MODEL_FROM_DATABASE=GLoria II-64 Pro
++ ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II-64 Pro)
+ pci:v000010DEd00000103sv00001048sd00000C4B*
+- ID_MODEL_FROM_DATABASE=GLoria II-64 Pro DVII
++ ID_MODEL_FROM_DATABASE=NV10GL [Quadro] (GLoria II-64 Pro DVII)
+ pci:v000010DEd00000110*
+  ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400]
+ pci:v000010DEd00000110sv00001043sd00004015*
+- ID_MODEL_FROM_DATABASE=AGP-V7100 Pro
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (AGP-V7100 Pro)
+ pci:v000010DEd00000110sv00001043sd00004021*
+- ID_MODEL_FROM_DATABASE=V7100 Deluxe Combo
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (V7100 Deluxe Combo)
+ pci:v000010DEd00000110sv00001043sd00004031*
+- ID_MODEL_FROM_DATABASE=V7100 Pro with TV output
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (V7100 Pro with TV output)
+ pci:v000010DEd00000110sv00001048sd00000C60*
+- ID_MODEL_FROM_DATABASE=Gladiac MX
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Gladiac MX)
+ pci:v000010DEd00000110sv00001048sd00000C61*
+- ID_MODEL_FROM_DATABASE=Gladiac 511PCI
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Gladiac 511PCI)
+ pci:v000010DEd00000110sv00001048sd00000C63*
+- ID_MODEL_FROM_DATABASE=Gladiac 511TV-OUT 32MB
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Gladiac 511TV-OUT 32MB)
+ pci:v000010DEd00000110sv00001048sd00000C64*
+- ID_MODEL_FROM_DATABASE=Gladiac 511TV-OUT 64MB
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Gladiac 511TV-OUT 64MB)
+ pci:v000010DEd00000110sv00001048sd00000C65*
+- ID_MODEL_FROM_DATABASE=Gladiac 511TWIN
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Gladiac 511TWIN)
+ pci:v000010DEd00000110sv00001048sd00000C66*
+- ID_MODEL_FROM_DATABASE=Gladiac 311
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Gladiac 311)
+ pci:v000010DEd00000110sv000010B0sd00000001*
+- ID_MODEL_FROM_DATABASE=GeForce2 MX Jumbo TV
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (GeForce2 MX Jumbo TV)
+ pci:v000010DEd00000110sv000010DEsd00000091*
+- ID_MODEL_FROM_DATABASE=Dell OEM GeForce 2 MX 400
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Dell OEM GeForce 2 MX 400)
+ pci:v000010DEd00000110sv000010DEsd000000A1*
+- ID_MODEL_FROM_DATABASE=Apple OEM GeForce2 MX
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Apple OEM GeForce2 MX)
+ pci:v000010DEd00000110sv00001462sd00008523*
+- ID_MODEL_FROM_DATABASE=MS-8852
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (MS-8852)
+ pci:v000010DEd00000110sv00001462sd00008817*
+- ID_MODEL_FROM_DATABASE=MSI GeForce2 MX400 Pro32S [MS-8817]
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (MSI GeForce2 MX400 Pro32S [MS-8817])
+ pci:v000010DEd00000110sv000014AFsd00007102*
+- ID_MODEL_FROM_DATABASE=3D Prophet II MX
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (3D Prophet II MX)
+ pci:v000010DEd00000110sv000014AFsd00007103*
+- ID_MODEL_FROM_DATABASE=3D Prophet II MX Dual-Display
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (3D Prophet II MX Dual-Display)
+ pci:v000010DEd00000110sv00001545sd00000023*
+- ID_MODEL_FROM_DATABASE=Xtasy Rev. B2
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (Xtasy Rev. B2)
+ pci:v000010DEd00000110sv00001554sd00001081*
+- ID_MODEL_FROM_DATABASE=MVGA-NVG11AM(400)
++ ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] (MVGA-NVG11AM(400))
+ pci:v000010DEd00000111*
+  ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX200]
+@@ -21831,28 +21831,28 @@ pci:v000010DEd00000140*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT]
+ pci:v000010DEd00000140sv00001458sd00003125*
+- ID_MODEL_FROM_DATABASE=GV-NX66T128D
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (GV-NX66T128D)
+ pci:v000010DEd00000140sv00001458sd00003126*
+- ID_MODEL_FROM_DATABASE=GV-NX66T256DE
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (GV-NX66T256DE)
+ pci:v000010DEd00000140sv00001462sd00008939*
+- ID_MODEL_FROM_DATABASE=MS-8983
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] (MS-8983)
+ pci:v000010DEd00000141*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600]
+ pci:v000010DEd00000141sv00001043sd000081B0*
+- ID_MODEL_FROM_DATABASE=EN6600 Silencer
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] (EN6600 Silencer)
+ pci:v000010DEd00000141sv0000107Dsd0000593A*
+- ID_MODEL_FROM_DATABASE=LR2A22 128MB TV OUT
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] (LR2A22 128MB TV OUT)
+ pci:v000010DEd00000141sv0000107Dsd0000597B*
+- ID_MODEL_FROM_DATABASE=WINFAST PX6600
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] (WINFAST PX6600)
+ pci:v000010DEd00000141sv00001458sd00003124*
+- ID_MODEL_FROM_DATABASE=GV-NX66128DP Turbo Force Edition
++ ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] (GV-NX66128DP Turbo Force Edition)
+ pci:v000010DEd00000142*
+  ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 LE]
+@@ -21897,49 +21897,49 @@ pci:v000010DEd00000150*
+  ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro]
+ pci:v000010DEd00000150sv00001043sd00004016*
+- ID_MODEL_FROM_DATABASE=V7700 AGP Video Card
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (V7700 AGP Video Card)
+ pci:v000010DEd00000150sv00001043sd0000402A*
+- ID_MODEL_FROM_DATABASE=AGP-V7700
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (AGP-V7700)
+ pci:v000010DEd00000150sv00001048sd00000C50*
+- ID_MODEL_FROM_DATABASE=Gladiac
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (Gladiac)
+ pci:v000010DEd00000150sv00001048sd00000C52*
+- ID_MODEL_FROM_DATABASE=Gladiac-64
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (Gladiac-64)
+ pci:v000010DEd00000150sv0000107Dsd00002840*
+- ID_MODEL_FROM_DATABASE=WinFast GeForce2 GTS with TV output
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (WinFast GeForce2 GTS with TV output)
+ pci:v000010DEd00000150sv0000107Dsd00002842*
+- ID_MODEL_FROM_DATABASE=WinFast GeForce 2 Pro
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (WinFast GeForce 2 Pro)
+ pci:v000010DEd00000150sv000010DEsd0000002E*
+- ID_MODEL_FROM_DATABASE=GeForce2 GTS
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (GeForce2 GTS)
+ pci:v000010DEd00000150sv00001462sd0000815A*
+- ID_MODEL_FROM_DATABASE=MS-8815
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (MS-8815)
+ pci:v000010DEd00000150sv00001462sd00008831*
+- ID_MODEL_FROM_DATABASE=Creative GeForce2 Pro
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] (Creative GeForce2 Pro)
+ pci:v000010DEd00000151*
+  ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ti]
+ pci:v000010DEd00000151sv00001043sd0000405F*
+- ID_MODEL_FROM_DATABASE=V7700Ti
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ti] (V7700Ti)
+ pci:v000010DEd00000151sv00001462sd00005506*
+- ID_MODEL_FROM_DATABASE=Creative 3D Blaster GeForce2 Titanium
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ti] (Creative 3D Blaster GeForce2 Titanium)
+ pci:v000010DEd00000151sv00001462sd00008364*
+- ID_MODEL_FROM_DATABASE=MS-8836
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ti] (MS-8836)
+ pci:v000010DEd00000152*
+  ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ultra]
+ pci:v000010DEd00000152sv00001048sd00000C56*
+- ID_MODEL_FROM_DATABASE=GLADIAC Ultra
++ ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ultra] (GLADIAC Ultra)
+ pci:v000010DEd00000153*
+  ID_MODEL_FROM_DATABASE=NV15GL [Quadro2 Pro]
+@@ -21990,40 +21990,40 @@ pci:v000010DEd00000170*
+  ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 460]
+ pci:v000010DEd00000170sv00001462sd00008630*
+- ID_MODEL_FROM_DATABASE=MS-8863
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 460] (MS-8863)
+ pci:v000010DEd00000171*
+  ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440]
+ pci:v000010DEd00000171sv000010B0sd00000002*
+- ID_MODEL_FROM_DATABASE=Gainward Pro/600 TV
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (Gainward Pro/600 TV)
+ pci:v000010DEd00000171sv000010DEsd00000008*
+- ID_MODEL_FROM_DATABASE=Apple OEM GeForce4 MX 440
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (Apple OEM GeForce4 MX 440)
+ pci:v000010DEd00000171sv00001462sd00008661*
+- ID_MODEL_FROM_DATABASE=G4MX440-VTP
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (G4MX440-VTP)
+ pci:v000010DEd00000171sv00001462sd00008730*
+- ID_MODEL_FROM_DATABASE=MX440SES-T (MS-8873)
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (MX440SES-T (MS-8873))
+ pci:v000010DEd00000171sv00001462sd00008743*
+- ID_MODEL_FROM_DATABASE=MS-8874
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (MS-8874)
+ pci:v000010DEd00000171sv00001462sd00008852*
+- ID_MODEL_FROM_DATABASE=GeForce4 MX440 PCI
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (GeForce4 MX440 PCI)
+ pci:v000010DEd00000171sv0000147Bsd00008F00*
+- ID_MODEL_FROM_DATABASE=Abit Siluro GeForce4MX440
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] (Abit Siluro GeForce4MX440)
+ pci:v000010DEd00000172*
+  ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 420]
+ pci:v000010DEd00000172sv00001462sd00008730*
+- ID_MODEL_FROM_DATABASE=MS-8873
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 420] (MS-8873)
+ pci:v000010DEd00000172sv00001462sd00008784*
+- ID_MODEL_FROM_DATABASE=MS-8878
++ ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 420] (MS-8878)
+ pci:v000010DEd00000173*
+  ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440-SE]
+@@ -22038,13 +22038,13 @@ pci:v000010DEd00000176*
+  ID_MODEL_FROM_DATABASE=NV17M [GeForce4 420 Go 32M]
+ pci:v000010DEd00000176sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=NV17M [GeForce4 420 Go 32M] (tc1100 tablet)
+ pci:v000010DEd00000176sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=NV17M [GeForce4 420 Go 32M] (X10 Laptop)
+ pci:v000010DEd00000176sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=NV17M [GeForce4 420 Go 32M] (Cx9 / Vx9 mainboard)
+ pci:v000010DEd00000177*
+  ID_MODEL_FROM_DATABASE=NV17M [GeForce4 460 Go]
+@@ -22056,7 +22056,7 @@ pci:v000010DEd00000179*
+  ID_MODEL_FROM_DATABASE=NV17M [GeForce4 440 Go 64M]
+ pci:v000010DEd00000179sv000010DEsd00000179*
+- ID_MODEL_FROM_DATABASE=GeForce4 MX (Mac)
++ ID_MODEL_FROM_DATABASE=NV17M [GeForce4 440 Go 64M] (GeForce4 MX (Mac))
+ pci:v000010DEd0000017A*
+  ID_MODEL_FROM_DATABASE=NV17GL [Quadro NVS]
+@@ -22074,25 +22074,25 @@ pci:v000010DEd00000181*
+  ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x]
+ pci:v000010DEd00000181sv00001043sd00008063*
+- ID_MODEL_FROM_DATABASE=GeForce4 MX 440 AGP 8X
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (GeForce4 MX 440 AGP 8X)
+ pci:v000010DEd00000181sv00001043sd0000806F*
+- ID_MODEL_FROM_DATABASE=V9180 Magic
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (V9180 Magic)
+ pci:v000010DEd00000181sv00001462sd00008880*
+- ID_MODEL_FROM_DATABASE=MS-StarForce GeForce4 MX 440 with AGP8X
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (MS-StarForce GeForce4 MX 440 with AGP8X)
+ pci:v000010DEd00000181sv00001462sd00008900*
+- ID_MODEL_FROM_DATABASE=MS-8890 GeForce 4 MX440 AGP8X
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (MS-8890 GeForce 4 MX440 AGP8X)
+ pci:v000010DEd00000181sv00001462sd00009350*
+- ID_MODEL_FROM_DATABASE=MSI GeForce4 MX T8X with AGP8X
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (MSI GeForce4 MX T8X with AGP8X)
+ pci:v000010DEd00000181sv0000147Bsd00008F0D*
+- ID_MODEL_FROM_DATABASE=Siluro GF4 MX-8X
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (Siluro GF4 MX-8X)
+ pci:v000010DEd00000181sv00001554sd00001111*
+- ID_MODEL_FROM_DATABASE=PixelView MVGA-NVG18A
++ ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] (PixelView MVGA-NVG18A)
+ pci:v000010DEd00000182*
+  ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440SE AGP 8x]
+@@ -22146,7 +22146,7 @@ pci:v000010DEd00000193*
+  ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 GTS]
+ pci:v000010DEd00000193sv0000107Dsd000020BD*
+- ID_MODEL_FROM_DATABASE=WinFast PX 8800 GTS TDH
++ ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 GTS] (WinFast PX 8800 GTS TDH)
+ pci:v000010DEd00000194*
+  ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 Ultra]
+@@ -22212,13 +22212,13 @@ pci:v000010DEd000001D1*
+  ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 LE]
+ pci:v000010DEd000001D1sv0000107Dsd00005EFA*
+- ID_MODEL_FROM_DATABASE=WinFast PX7300LE-TD128
++ ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 LE] (WinFast PX7300LE-TD128)
+ pci:v000010DEd000001D1sv0000107Dsd00005EFB*
+- ID_MODEL_FROM_DATABASE=WinFast PX7300LE-TD256
++ ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 LE] (WinFast PX7300LE-TD256)
+ pci:v000010DEd000001D1sv00001462sd00000345*
+- ID_MODEL_FROM_DATABASE=7300LE PCI Express Graphics Adapter
++ ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 LE] (7300LE PCI Express Graphics Adapter)
+ pci:v000010DEd000001D2*
+  ID_MODEL_FROM_DATABASE=G72 [GeForce 7550 LE]
+@@ -22239,7 +22239,7 @@ pci:v000010DEd000001D8*
+  ID_MODEL_FROM_DATABASE=G72M [GeForce Go 7400]
+ pci:v000010DEd000001D8sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=G72M [GeForce Go 7400] (XPS M1210)
+ pci:v000010DEd000001D9*
+  ID_MODEL_FROM_DATABASE=G72M [GeForce Go 7450]
+@@ -22260,7 +22260,7 @@ pci:v000010DEd000001DE*
+  ID_MODEL_FROM_DATABASE=G72GL [Quadro FX 350]
+ pci:v000010DEd000001DEsv000010DEsd000001DC*
+- ID_MODEL_FROM_DATABASE=Quadro  FX Go350M
++ ID_MODEL_FROM_DATABASE=G72GL [Quadro FX 350] (Quadro  FX Go350M)
+ pci:v000010DEd000001DF*
+  ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 GS]
+@@ -22269,7 +22269,7 @@ pci:v000010DEd000001E0*
+  ID_MODEL_FROM_DATABASE=nForce2 IGP2
+ pci:v000010DEd000001E0sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 IGP2 (NV7 Motherboard)
+ pci:v000010DEd000001E8*
+  ID_MODEL_FROM_DATABASE=nForce2 AGP
+@@ -22278,55 +22278,55 @@ pci:v000010DEd000001EA*
+  ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 0
+ pci:v000010DEd000001EAsv0000A0A0sd000003B9*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 0 (UK79G-1394 motherboard)
+ pci:v000010DEd000001EB*
+  ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 1
+ pci:v000010DEd000001EBsv0000A0A0sd000003B9*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 1 (UK79G-1394 motherboard)
+ pci:v000010DEd000001EC*
+  ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 2
+ pci:v000010DEd000001ECsv0000A0A0sd000003B9*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 2 (UK79G-1394 motherboard)
+ pci:v000010DEd000001ED*
+  ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 3
+ pci:v000010DEd000001EDsv0000A0A0sd000003B9*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 3 (UK79G-1394 motherboard)
+ pci:v000010DEd000001EE*
+  ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 4
+ pci:v000010DEd000001EEsv000010DEsd000001EE*
+- ID_MODEL_FROM_DATABASE=MSI Delta-L nForce2 memory controller
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 4 (MSI Delta-L nForce2 memory controller)
+ pci:v000010DEd000001EEsv0000A0A0sd000003B9*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 4 (UK79G-1394 motherboard)
+ pci:v000010DEd000001EF*
+  ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 5
+ pci:v000010DEd000001EFsv0000A0A0sd000003B9*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 5 (UK79G-1394 motherboard)
+ pci:v000010DEd000001F0*
+  ID_MODEL_FROM_DATABASE=C17 [GeForce4 MX IGP]
+ pci:v000010DEd000001F0sv0000A0A0sd000003B5*
+- ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard
++ ID_MODEL_FROM_DATABASE=C17 [GeForce4 MX IGP] (UK79G-1394 motherboard)
+ pci:v000010DEd00000200*
+  ID_MODEL_FROM_DATABASE=NV20 [GeForce3]
+ pci:v000010DEd00000200sv00001043sd0000402F*
+- ID_MODEL_FROM_DATABASE=AGP-V8200 DDR
++ ID_MODEL_FROM_DATABASE=NV20 [GeForce3] (AGP-V8200 DDR)
+ pci:v000010DEd00000200sv00001048sd00000C70*
+- ID_MODEL_FROM_DATABASE=GLADIAC 920
++ ID_MODEL_FROM_DATABASE=NV20 [GeForce3] (GLADIAC 920)
+ pci:v000010DEd00000201*
+  ID_MODEL_FROM_DATABASE=NV20 [GeForce3 Ti 200]
+@@ -22335,10 +22335,10 @@ pci:v000010DEd00000202*
+  ID_MODEL_FROM_DATABASE=NV20 [GeForce3 Ti 500]
+ pci:v000010DEd00000202sv00001043sd0000405B*
+- ID_MODEL_FROM_DATABASE=V8200 T5
++ ID_MODEL_FROM_DATABASE=NV20 [GeForce3 Ti 500] (V8200 T5)
+ pci:v000010DEd00000202sv00001545sd0000002F*
+- ID_MODEL_FROM_DATABASE=Xtasy 6964
++ ID_MODEL_FROM_DATABASE=NV20 [GeForce3 Ti 500] (Xtasy 6964)
+ pci:v000010DEd00000203*
+  ID_MODEL_FROM_DATABASE=NV20GL [Quadro DCC]
+@@ -22359,10 +22359,10 @@ pci:v000010DEd00000221*
+  ID_MODEL_FROM_DATABASE=NV44A [GeForce 6200]
+ pci:v000010DEd00000221sv00001043sd000081E1*
+- ID_MODEL_FROM_DATABASE=N6200/TD/256M/A
++ ID_MODEL_FROM_DATABASE=NV44A [GeForce 6200] (N6200/TD/256M/A)
+ pci:v000010DEd00000221sv00003842sd0000A341*
+- ID_MODEL_FROM_DATABASE=256A8N341DX
++ ID_MODEL_FROM_DATABASE=NV44A [GeForce 6200] (256A8N341DX)
+ pci:v000010DEd00000222*
+  ID_MODEL_FROM_DATABASE=NV44 [GeForce 6200 A-LE]
+@@ -22374,10 +22374,10 @@ pci:v000010DEd00000240*
+  ID_MODEL_FROM_DATABASE=C51PV [GeForce 6150]
+ pci:v000010DEd00000240sv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM
++ ID_MODEL_FROM_DATABASE=C51PV [GeForce 6150] (A8N-VM CSM)
+ pci:v000010DEd00000240sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51PV [GeForce 6150] (K8NGM2 series)
+ pci:v000010DEd00000241*
+  ID_MODEL_FROM_DATABASE=C51 [GeForce 6150 LE]
+@@ -22386,7 +22386,7 @@ pci:v000010DEd00000242*
+  ID_MODEL_FROM_DATABASE=C51G [GeForce 6100]
+ pci:v000010DEd00000242sv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=C51G [GeForce 6100] (Winfast 6100K8MB)
+ pci:v000010DEd00000243*
+  ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge
+@@ -22395,13 +22395,13 @@ pci:v000010DEd00000244*
+  ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6150]
+ pci:v000010DEd00000244sv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6150] (Presario V3242AU)
+ pci:v000010DEd00000244sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6150] (Presario V6133CL)
+ pci:v000010DEd00000244sv000010DEsd00000244*
+- ID_MODEL_FROM_DATABASE=GeForce Go 6150
++ ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6150] (GeForce Go 6150)
+ pci:v000010DEd00000245*
+  ID_MODEL_FROM_DATABASE=C51 [Quadro NVS 210S/GeForce 6150LE]
+@@ -22413,7 +22413,7 @@ pci:v000010DEd00000247*
+  ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6100]
+ pci:v000010DEd00000247sv00001043sd00001382*
+- ID_MODEL_FROM_DATABASE=MCP51 PCI-X GeForce Go 6100
++ ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6100] (MCP51 PCI-X GeForce Go 6100)
+ pci:v000010DEd00000248*
+  ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge
+@@ -22446,13 +22446,13 @@ pci:v000010DEd00000251*
+  ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4400]
+ pci:v000010DEd00000251sv00001043sd00008023*
+- ID_MODEL_FROM_DATABASE=v8440 GeForce 4 Ti4400
++ ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4400] (v8440 GeForce 4 Ti4400)
+ pci:v000010DEd00000251sv000010DEsd00000251*
+- ID_MODEL_FROM_DATABASE=PNY GeForce4 Ti 4400
++ ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4400] (PNY GeForce4 Ti 4400)
+ pci:v000010DEd00000251sv00001462sd00008710*
+- ID_MODEL_FROM_DATABASE=PNY GeForce4 Ti 4400
++ ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4400] (PNY GeForce4 Ti 4400)
+ pci:v000010DEd00000252*
+  ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti]
+@@ -22461,10 +22461,10 @@ pci:v000010DEd00000253*
+  ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4200]
+ pci:v000010DEd00000253sv0000107Dsd00002896*
+- ID_MODEL_FROM_DATABASE=WinFast A250 LE TD (Dual VGA/TV-out/DVI)
++ ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4200] (WinFast A250 LE TD (Dual VGA/TV-out/DVI))
+ pci:v000010DEd00000253sv0000147Bsd00008F09*
+- ID_MODEL_FROM_DATABASE=Siluro (Dual VGA/TV-out/DVI)
++ ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4200] (Siluro (Dual VGA/TV-out/DVI))
+ pci:v000010DEd00000258*
+  ID_MODEL_FROM_DATABASE=NV25GL [Quadro4 900 XGL]
+@@ -22479,25 +22479,25 @@ pci:v000010DEd00000260*
+  ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge
+ pci:v000010DEd00000260sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge (Pavilion a1677c)
+ pci:v000010DEd00000260sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge (Presario V6133CL)
+ pci:v000010DEd00000260sv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000260sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge (GA-M55plus-S3G)
+ pci:v000010DEd00000260sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge (K8NGM2 series)
+ pci:v000010DEd00000261*
+  ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge
+ pci:v000010DEd00000261sv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge (Winfast 6100K8MB)
+ pci:v000010DEd00000262*
+  ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge
+@@ -22509,64 +22509,64 @@ pci:v000010DEd00000264*
+  ID_MODEL_FROM_DATABASE=MCP51 SMBus
+ pci:v000010DEd00000264sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 SMBus (Pavilion a1677c)
+ pci:v000010DEd00000264sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 SMBus (Presario V6133CL)
+ pci:v000010DEd00000264sv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 SMBus (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000264sv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 SMBus (Winfast 6100K8MB)
+ pci:v000010DEd00000264sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 SMBus (K8NGM2 series)
+ pci:v000010DEd00000265*
+  ID_MODEL_FROM_DATABASE=MCP51 IDE
+ pci:v000010DEd00000265sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 IDE (Pavilion a1677c)
+ pci:v000010DEd00000265sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 IDE (Presario V6133CL)
+ pci:v000010DEd00000265sv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 IDE (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000265sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 IDE (K8NGM2 series)
+ pci:v000010DEd00000265sv0000F05Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 IDE (Winfast 6100K8MB)
+ pci:v000010DEd00000266*
+  ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller
+ pci:v000010DEd00000266sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (Pavilion a1677c)
+ pci:v000010DEd00000266sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (Presario V6133CL)
+ pci:v000010DEd00000266sv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000266sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (K8NGM2 series)
+ pci:v000010DEd00000267*
+  ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller
+ pci:v000010DEd00000267sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (Pavilion a1677c)
+ pci:v000010DEd00000267sv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000267sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller (K8NGM2 series)
+ pci:v000010DEd00000268*
+  ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller
+@@ -22575,16 +22575,16 @@ pci:v000010DEd00000269*
+  ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller
+ pci:v000010DEd00000269sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller (Pavilion a1677c)
+ pci:v000010DEd00000269sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller (Presario V6133CL)
+ pci:v000010DEd00000269sv00001043sd00008141*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000269sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller (K8NGM2 series)
+ pci:v000010DEd0000026A*
+  ID_MODEL_FROM_DATABASE=MCP51 MCI
+@@ -22593,142 +22593,142 @@ pci:v000010DEd0000026B*
+  ID_MODEL_FROM_DATABASE=MCP51 AC97 Audio Controller
+ pci:v000010DEd0000026Bsv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 AC97 Audio Controller (Winfast 6100K8MB)
+ pci:v000010DEd0000026C*
+  ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio
+ pci:v000010DEd0000026Csv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio (Pavilion a1677c)
+ pci:v000010DEd0000026Csv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio (Presario V3242AU)
+ pci:v000010DEd0000026Csv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio (Presario V6133CL)
+ pci:v000010DEd0000026Csv000010DEsd0000CB84*
+- ID_MODEL_FROM_DATABASE=ASUSTeK Computer Inc. A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio (ASUSTeK Computer Inc. A8N-VM CSM Mainboard)
+ pci:v000010DEd0000026Csv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio (K8NGM2 series)
+ pci:v000010DEd0000026D*
+  ID_MODEL_FROM_DATABASE=MCP51 USB Controller
+ pci:v000010DEd0000026Dsv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (Pavilion a1677c)
+ pci:v000010DEd0000026Dsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (Presario V6133CL)
+ pci:v000010DEd0000026Dsv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (A8N-VM CSM Mainboard)
+ pci:v000010DEd0000026Dsv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (Winfast 6100K8MB)
+ pci:v000010DEd0000026Dsv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (K8NGM2 series)
+ pci:v000010DEd0000026E*
+  ID_MODEL_FROM_DATABASE=MCP51 USB Controller
+ pci:v000010DEd0000026Esv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (Pavilion a1677c)
+ pci:v000010DEd0000026Esv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (Presario V6133CL)
+ pci:v000010DEd0000026Esv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (A8N-VM CSM Mainboard)
+ pci:v000010DEd0000026Esv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (Winfast 6100K8MB)
+ pci:v000010DEd0000026Esv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 USB Controller (K8NGM2 series)
+ pci:v000010DEd0000026F*
+  ID_MODEL_FROM_DATABASE=MCP51 PCI Bridge
+ pci:v000010DEd0000026Fsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 PCI Bridge (Presario V6133CL)
+ pci:v000010DEd00000270*
+  ID_MODEL_FROM_DATABASE=MCP51 Host Bridge
+ pci:v000010DEd00000270sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 Host Bridge (Pavilion a1677c)
+ pci:v000010DEd00000270sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 Host Bridge (Presario V6133CL)
+ pci:v000010DEd00000270sv00001043sd000081BC*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=MCP51 Host Bridge (A8N-VM CSM Mainboard)
+ pci:v000010DEd00000270sv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 Host Bridge (Winfast 6100K8MB)
+ pci:v000010DEd00000270sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=MCP51 Host Bridge (GA-M55plus-S3G)
+ pci:v000010DEd00000270sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=MCP51 Host Bridge (K8NGM2 series)
+ pci:v000010DEd00000271*
+  ID_MODEL_FROM_DATABASE=MCP51 PMU
+ pci:v000010DEd00000271sv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=MCP51 PMU (Presario V3242AU)
+ pci:v000010DEd00000271sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=MCP51 PMU (Presario V6133CL)
+ pci:v000010DEd00000272*
+  ID_MODEL_FROM_DATABASE=MCP51 Memory Controller 0
+ pci:v000010DEd00000272sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=MCP51 Memory Controller 0 (Pavilion a1677c)
+ pci:v000010DEd00000272sv0000105Bsd00000CAD*
+- ID_MODEL_FROM_DATABASE=Winfast 6100K8MB
++ ID_MODEL_FROM_DATABASE=MCP51 Memory Controller 0 (Winfast 6100K8MB)
+ pci:v000010DEd0000027E*
+  ID_MODEL_FROM_DATABASE=C51 Memory Controller 2
+ pci:v000010DEd0000027Esv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 2 (Pavilion a1677c)
+ pci:v000010DEd0000027Esv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 2 (Presario V6133CL)
+ pci:v000010DEd0000027Esv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 2 (A8N-VM CSM Mainboard)
+ pci:v000010DEd0000027Esv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 2 (GA-M55plus-S3G)
+ pci:v000010DEd0000027Esv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 2 (K8NGM2 series)
+ pci:v000010DEd0000027F*
+  ID_MODEL_FROM_DATABASE=C51 Memory Controller 3
+ pci:v000010DEd0000027Fsv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 3 (Pavilion a1677c)
+ pci:v000010DEd0000027Fsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 3 (Presario V6133CL)
+ pci:v000010DEd0000027Fsv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 3 (A8N-VM CSM Mainboard)
+ pci:v000010DEd0000027Fsv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 3 (GA-M55plus-S3G)
+ pci:v000010DEd0000027Fsv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 3 (K8NGM2 series)
+ pci:v000010DEd00000280*
+  ID_MODEL_FROM_DATABASE=NV28 [GeForce4 Ti 4800]
+@@ -22758,7 +22758,7 @@ pci:v000010DEd00000291*
+  ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GT/GTO]
+ pci:v000010DEd00000291sv000010DEsd0000042B*
+- ID_MODEL_FROM_DATABASE=NX7900GTO-T2D512E [7900 GTO]
++ ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GT/GTO] (NX7900GTO-T2D512E [7900 GTO])
+ pci:v000010DEd00000292*
+  ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GS]
+@@ -22773,13 +22773,13 @@ pci:v000010DEd00000295*
+  ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT]
+ pci:v000010DEd00000295sv00001043sd00008225*
+- ID_MODEL_FROM_DATABASE=GeForce 7950 GT
++ ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT] (GeForce 7950 GT)
+ pci:v000010DEd00000295sv0000107Dsd00002A68*
+- ID_MODEL_FROM_DATABASE=WinFast PX7950GT TDH
++ ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT] (WinFast PX7950GT TDH)
+ pci:v000010DEd00000295sv00001462sd00000663*
+- ID_MODEL_FROM_DATABASE=NX7950GT-VT2D512EZ-HD
++ ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT] (NX7950GT-VT2D512EZ-HD)
+ pci:v000010DEd00000297*
+  ID_MODEL_FROM_DATABASE=G71M [GeForce Go 7950 GTX]
+@@ -22803,7 +22803,7 @@ pci:v000010DEd0000029D*
+  ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 3500]
+ pci:v000010DEd0000029Dsv00001028sd0000019B*
+- ID_MODEL_FROM_DATABASE=G71GLM [Quadro FX 3500M]
++ ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 3500] (G71GLM [Quadro FX 3500M])
+ pci:v000010DEd0000029E*
+  ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 1500]
+@@ -22824,16 +22824,16 @@ pci:v000010DEd000002E0*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT]
+ pci:v000010DEd000002E0sv000002E0sd00002249*
+- ID_MODEL_FROM_DATABASE=GF 7600GT 560M 256MB DDR3 DUAL DVI TV
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT] (GF 7600GT 560M 256MB DDR3 DUAL DVI TV)
+ pci:v000010DEd000002E1*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS]
+ pci:v000010DEd000002E1sv00001682sd0000222B*
+- ID_MODEL_FROM_DATABASE=PV-T73K-UAL3 (256MB)
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS] (PV-T73K-UAL3 (256MB))
+ pci:v000010DEd000002E1sv00001682sd00002247*
+- ID_MODEL_FROM_DATABASE=GF 7600GS 512MB DDR2
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS] (GF 7600GS 512MB DDR2)
+ pci:v000010DEd000002E2*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT]
+@@ -22845,28 +22845,28 @@ pci:v000010DEd000002E4*
+  ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT]
+ pci:v000010DEd000002E4sv00001682sd00002271*
+- ID_MODEL_FROM_DATABASE=PV-T71A-YDF7 (512MB)
++ ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT] (PV-T71A-YDF7 (512MB))
+ pci:v000010DEd000002F0*
+  ID_MODEL_FROM_DATABASE=C51 Host Bridge
+ pci:v000010DEd000002F0sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (Pavilion a1677c)
+ pci:v000010DEd000002F0sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (Presario V6133CL)
+ pci:v000010DEd000002F0sv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (A8N-VM CSM Mainboard)
+ pci:v000010DEd000002F0sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (K8NGM2 series)
+ pci:v000010DEd000002F1*
+  ID_MODEL_FROM_DATABASE=C51 Host Bridge
+ pci:v000010DEd000002F1sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (GA-M55plus-S3G)
+ pci:v000010DEd000002F2*
+  ID_MODEL_FROM_DATABASE=C51 Host Bridge
+@@ -22890,55 +22890,55 @@ pci:v000010DEd000002F8*
+  ID_MODEL_FROM_DATABASE=C51 Memory Controller 5
+ pci:v000010DEd000002F8sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 5 (Pavilion a1677c)
+ pci:v000010DEd000002F8sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 5 (Presario V6133CL)
+ pci:v000010DEd000002F8sv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 5 (A8N-VM CSM Mainboard)
+ pci:v000010DEd000002F8sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 5 (GA-M55plus-S3G)
+ pci:v000010DEd000002F8sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 5 (K8NGM2 series)
+ pci:v000010DEd000002F9*
+  ID_MODEL_FROM_DATABASE=C51 Memory Controller 4
+ pci:v000010DEd000002F9sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 4 (Pavilion a1677c)
+ pci:v000010DEd000002F9sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 4 (Presario V6133CL)
+ pci:v000010DEd000002F9sv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 4 (A8N-VM CSM Mainboard)
+ pci:v000010DEd000002F9sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 4 (GA-M55plus-S3G)
+ pci:v000010DEd000002F9sv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 4 (K8NGM2 series)
+ pci:v000010DEd000002FA*
+  ID_MODEL_FROM_DATABASE=C51 Memory Controller 0
+ pci:v000010DEd000002FAsv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 0 (Pavilion a1677c)
+ pci:v000010DEd000002FAsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 0 (Presario V6133CL)
+ pci:v000010DEd000002FAsv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 0 (A8N-VM CSM Mainboard)
+ pci:v000010DEd000002FAsv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 0 (GA-M55plus-S3G)
+ pci:v000010DEd000002FAsv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 0 (K8NGM2 series)
+ pci:v000010DEd000002FB*
+  ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge
+@@ -22947,49 +22947,49 @@ pci:v000010DEd000002FC*
+  ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge
+ pci:v000010DEd000002FCsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge (Presario V6133CL)
+ pci:v000010DEd000002FD*
+  ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge
+ pci:v000010DEd000002FDsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge (Presario V6133CL)
+ pci:v000010DEd000002FE*
+  ID_MODEL_FROM_DATABASE=C51 Memory Controller 1
+ pci:v000010DEd000002FEsv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 1 (Pavilion a1677c)
+ pci:v000010DEd000002FEsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 1 (Presario V6133CL)
+ pci:v000010DEd000002FEsv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 1 (A8N-VM CSM Mainboard)
+ pci:v000010DEd000002FEsv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 1 (GA-M55plus-S3G)
+ pci:v000010DEd000002FEsv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Memory Controller 1 (K8NGM2 series)
+ pci:v000010DEd000002FF*
+  ID_MODEL_FROM_DATABASE=C51 Host Bridge
+ pci:v000010DEd000002FFsv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (Pavilion a1677c)
+ pci:v000010DEd000002FFsv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (Presario V6133CL)
+ pci:v000010DEd000002FFsv00001043sd000081CD*
+- ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (A8N-VM CSM Mainboard)
+ pci:v000010DEd000002FFsv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-M55plus-S3G
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (GA-M55plus-S3G)
+ pci:v000010DEd000002FFsv00001462sd00007207*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series
++ ID_MODEL_FROM_DATABASE=C51 Host Bridge (K8NGM2 series)
+ pci:v000010DEd00000300*
+  ID_MODEL_FROM_DATABASE=NV30 [GeForce FX]
+@@ -23016,7 +23016,7 @@ pci:v000010DEd00000314*
+  ID_MODEL_FROM_DATABASE=NV31 [GeForce FX 5600XT]
+ pci:v000010DEd00000314sv00001043sd0000814A*
+- ID_MODEL_FROM_DATABASE=V9560XT/TD
++ ID_MODEL_FROM_DATABASE=NV31 [GeForce FX 5600XT] (V9560XT/TD)
+ pci:v000010DEd00000316*
+  ID_MODEL_FROM_DATABASE=NV31M
+@@ -23043,25 +23043,25 @@ pci:v000010DEd00000322*
+  ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200]
+ pci:v000010DEd00000322sv00001043sd000002FB*
+- ID_MODEL_FROM_DATABASE=V9250 Magic
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (V9250 Magic)
+ pci:v000010DEd00000322sv00001043sd00008180*
+- ID_MODEL_FROM_DATABASE=V9520-X/TD/128M
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (V9520-X/TD/128M)
+ pci:v000010DEd00000322sv0000107Dsd00002967*
+- ID_MODEL_FROM_DATABASE=WinFast A340T 128MB
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (WinFast A340T 128MB)
+ pci:v000010DEd00000322sv00001462sd00009110*
+- ID_MODEL_FROM_DATABASE=MS-8911 (FX5200-TD128)
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (MS-8911 (FX5200-TD128))
+ pci:v000010DEd00000322sv00001462sd00009171*
+- ID_MODEL_FROM_DATABASE=MS-8917 (FX5200-T128)
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (MS-8917 (FX5200-T128))
+ pci:v000010DEd00000322sv00001462sd00009360*
+- ID_MODEL_FROM_DATABASE=MS-8936 (FX5200-T128)
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (MS-8936 (FX5200-T128))
+ pci:v000010DEd00000322sv00001682sd00001351*
+- ID_MODEL_FROM_DATABASE=GeForce FX 5200
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] (GeForce FX 5200)
+ pci:v000010DEd00000323*
+  ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200LE]
+@@ -23070,13 +23070,13 @@ pci:v000010DEd00000324*
+  ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200 64M]
+ pci:v000010DEd00000324sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200 64M] (Inspiron 5160)
+ pci:v000010DEd00000324sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=Pavilion ZD7000 laptop
++ ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200 64M] (Pavilion ZD7000 laptop)
+ pci:v000010DEd00000324sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200 64M] (MIM2000)
+ pci:v000010DEd00000325*
+  ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5250]
+@@ -23085,10 +23085,10 @@ pci:v000010DEd00000326*
+  ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5500]
+ pci:v000010DEd00000326sv00001458sd0000310D*
+- ID_MODEL_FROM_DATABASE=GeForce FX 5500 128 MB
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5500] (GeForce FX 5500 128 MB)
+ pci:v000010DEd00000326sv00001682sd00002034*
+- ID_MODEL_FROM_DATABASE=GeForce 5500 256 MB
++ ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5500] (GeForce 5500 256 MB)
+ pci:v000010DEd00000327*
+  ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5100]
+@@ -23100,7 +23100,7 @@ pci:v000010DEd00000329*
+  ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200]
+ pci:v000010DEd00000329sv000010DEsd00000010*
+- ID_MODEL_FROM_DATABASE=Powerbook G4
++ ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200] (Powerbook G4)
+ pci:v000010DEd0000032A*
+  ID_MODEL_FROM_DATABASE=NV34GL [Quadro NVS 280 PCI]
+@@ -23124,13 +23124,13 @@ pci:v000010DEd00000330*
+  ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900 Ultra]
+ pci:v000010DEd00000330sv00001043sd00008137*
+- ID_MODEL_FROM_DATABASE=V9950 Ultra / 256 MB
++ ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900 Ultra] (V9950 Ultra / 256 MB)
+ pci:v000010DEd00000331*
+  ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900]
+ pci:v000010DEd00000331sv00001043sd00008145*
+- ID_MODEL_FROM_DATABASE=V9950GE
++ ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900] (V9950GE)
+ pci:v000010DEd00000332*
+  ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900XT]
+@@ -23142,7 +23142,7 @@ pci:v000010DEd00000334*
+  ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900ZT]
+ pci:v000010DEd00000334sv00001462sd00009373*
+- ID_MODEL_FROM_DATABASE=FX5900ZT-VTD128 (MS-8937)
++ ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900ZT] (FX5900ZT-VTD128 (MS-8937))
+ pci:v000010DEd00000338*
+  ID_MODEL_FROM_DATABASE=NV35GL [Quadro FX 3000]
+@@ -23154,7 +23154,7 @@ pci:v000010DEd00000341*
+  ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700 Ultra]
+ pci:v000010DEd00000341sv00001462sd00009380*
+- ID_MODEL_FROM_DATABASE=MS-8938 (FX5700U-TD128)
++ ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700 Ultra] (MS-8938 (FX5700U-TD128))
+ pci:v000010DEd00000342*
+  ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700]
+@@ -23169,7 +23169,7 @@ pci:v000010DEd00000347*
+  ID_MODEL_FROM_DATABASE=NV36M [GeForce FX Go5700]
+ pci:v000010DEd00000347sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=NV36M [GeForce FX Go5700] (NX9500)
+ pci:v000010DEd00000348*
+  ID_MODEL_FROM_DATABASE=NV36M [GeForce FX Go5700]
+@@ -23190,13 +23190,13 @@ pci:v000010DEd00000361*
+  ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge
+ pci:v000010DEd00000361sv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 LPC Bridge
++ ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge (PowerEdge R805 MCP55 LPC Bridge)
+ pci:v000010DEd00000362*
+  ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge
+ pci:v000010DEd00000362sv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge (KN9 series mainboard)
+ pci:v000010DEd00000363*
+  ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge
+@@ -23205,7 +23205,7 @@ pci:v000010DEd00000364*
+  ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge
+ pci:v000010DEd00000364sv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 LPC Bridge
++ ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge (PowerEdge R805 MCP55 LPC Bridge)
+ pci:v000010DEd00000365*
+  ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge
+@@ -23220,19 +23220,19 @@ pci:v000010DEd00000368*
+  ID_MODEL_FROM_DATABASE=MCP55 SMBus
+ pci:v000010DEd00000368sv00001028sd0000020C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M605 MCP55 SMBus
++ ID_MODEL_FROM_DATABASE=MCP55 SMBus (PowerEdge M605 MCP55 SMBus)
+ pci:v000010DEd00000368sv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 SMBus
++ ID_MODEL_FROM_DATABASE=MCP55 SMBus (PowerEdge R805 MCP55 SMBus)
+ pci:v000010DEd00000368sv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 SMBus (KN9 series mainboard)
+ pci:v000010DEd00000369*
+  ID_MODEL_FROM_DATABASE=MCP55 Memory Controller
+ pci:v000010DEd00000369sv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 Memory Controller (KN9 series mainboard)
+ pci:v000010DEd0000036A*
+  ID_MODEL_FROM_DATABASE=MCP55 Memory Controller
+@@ -23244,31 +23244,31 @@ pci:v000010DEd0000036C*
+  ID_MODEL_FROM_DATABASE=MCP55 USB Controller
+ pci:v000010DEd0000036Csv00001028sd0000020C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M605 MCP55 USB Controller
++ ID_MODEL_FROM_DATABASE=MCP55 USB Controller (PowerEdge M605 MCP55 USB Controller)
+ pci:v000010DEd0000036Csv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 USB Controller
++ ID_MODEL_FROM_DATABASE=MCP55 USB Controller (PowerEdge R805 MCP55 USB Controller)
+ pci:v000010DEd0000036Csv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 USB Controller (KN9 series mainboard)
+ pci:v000010DEd0000036D*
+  ID_MODEL_FROM_DATABASE=MCP55 USB Controller
+ pci:v000010DEd0000036Dsv00001028sd0000020C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M605 MCP55 USB Controller
++ ID_MODEL_FROM_DATABASE=MCP55 USB Controller (PowerEdge M605 MCP55 USB Controller)
+ pci:v000010DEd0000036Dsv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 USB Controller
++ ID_MODEL_FROM_DATABASE=MCP55 USB Controller (PowerEdge R805 MCP55 USB Controller)
+ pci:v000010DEd0000036Dsv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 USB Controller (KN9 series mainboard)
+ pci:v000010DEd0000036E*
+  ID_MODEL_FROM_DATABASE=MCP55 IDE
+ pci:v000010DEd0000036Esv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 IDE (KN9 series mainboard)
+ pci:v000010DEd00000370*
+  ID_MODEL_FROM_DATABASE=MCP55 PCI bridge
+@@ -23277,7 +23277,7 @@ pci:v000010DEd00000371*
+  ID_MODEL_FROM_DATABASE=MCP55 High Definition Audio
+ pci:v000010DEd00000371sv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 High Definition Audio (KN9 series mainboard)
+ pci:v000010DEd00000372*
+  ID_MODEL_FROM_DATABASE=MCP55 Ethernet
+@@ -23286,7 +23286,7 @@ pci:v000010DEd00000373*
+  ID_MODEL_FROM_DATABASE=MCP55 Ethernet
+ pci:v000010DEd00000373sv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 Ethernet (KN9 series mainboard)
+ pci:v000010DEd00000374*
+  ID_MODEL_FROM_DATABASE=MCP55 PCI Express bridge
+@@ -23313,10 +23313,10 @@ pci:v000010DEd0000037F*
+  ID_MODEL_FROM_DATABASE=MCP55 SATA Controller
+ pci:v000010DEd0000037Fsv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 SATA Controller
++ ID_MODEL_FROM_DATABASE=MCP55 SATA Controller (PowerEdge R805 MCP55 SATA Controller)
+ pci:v000010DEd0000037Fsv0000147Bsd00001C24*
+- ID_MODEL_FROM_DATABASE=KN9 series mainboard
++ ID_MODEL_FROM_DATABASE=MCP55 SATA Controller (KN9 series mainboard)
+ pci:v000010DEd0000038B*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7650 GS]
+@@ -23328,25 +23328,25 @@ pci:v000010DEd00000391*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT]
+ pci:v000010DEd00000391sv00001458sd00003427*
+- ID_MODEL_FROM_DATABASE=GV-NX76T128D-RH
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT] (GV-NX76T128D-RH)
+ pci:v000010DEd00000391sv00001462sd00000452*
+- ID_MODEL_FROM_DATABASE=NX7600GT-VT2D256E
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT] (NX7600GT-VT2D256E)
+ pci:v000010DEd00000392*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS]
+ pci:v000010DEd00000392sv00001462sd00000622*
+- ID_MODEL_FROM_DATABASE=NX7600GS-T2D256EH
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS] (NX7600GS-T2D256EH)
+ pci:v000010DEd00000393*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT]
+ pci:v000010DEd00000393sv000010DEsd00000412*
+- ID_MODEL_FROM_DATABASE=NX7300GT-TD256EH
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT] (NX7300GT-TD256EH)
+ pci:v000010DEd00000393sv00001462sd00000412*
+- ID_MODEL_FROM_DATABASE=NX7300GT-TD256EH
++ ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT] (NX7300GT-TD256EH)
+ pci:v000010DEd00000394*
+  ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 LE]
+@@ -23364,7 +23364,7 @@ pci:v000010DEd00000398*
+  ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7600]
+ pci:v000010DEd00000398sv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=Acer 9814 WKMI
++ ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7600] (Acer 9814 WKMI)
+ pci:v000010DEd00000399*
+  ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7600 GT]
+@@ -23379,7 +23379,7 @@ pci:v000010DEd0000039C*
+  ID_MODEL_FROM_DATABASE=G73GLM [Quadro FX 550M]
+ pci:v000010DEd0000039Csv000010DEsd0000039C*
+- ID_MODEL_FROM_DATABASE=Quadro FX 560M
++ ID_MODEL_FROM_DATABASE=G73GLM [Quadro FX 550M] (Quadro FX 560M)
+ pci:v000010DEd0000039D*
+  ID_MODEL_FROM_DATABASE=G73
+@@ -23481,7 +23481,7 @@ pci:v000010DEd000003D0*
+  ID_MODEL_FROM_DATABASE=C61 [GeForce 6150SE nForce 430]
+ pci:v000010DEd000003D0sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=C61 [GeForce 6150SE nForce 430] (Inspiron 531)
+ pci:v000010DEd000003D1*
+  ID_MODEL_FROM_DATABASE=C61 [GeForce 6100 nForce 405]
+@@ -23499,22 +23499,22 @@ pci:v000010DEd000003E0*
+  ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge
+ pci:v000010DEd000003E0sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge (Inspiron 531)
+ pci:v000010DEd000003E0sv00001849sd000003E0*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge (939NF6G-VSTA Board)
+ pci:v000010DEd000003E1*
+  ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge
+ pci:v000010DEd000003E1sv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge (M4N68T series motherboard)
+ pci:v000010DEd000003E2*
+  ID_MODEL_FROM_DATABASE=MCP61 Host Bridge
+ pci:v000010DEd000003E2sv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 Host Bridge (M4N68T series motherboard)
+ pci:v000010DEd000003E3*
+  ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge
+@@ -23535,55 +23535,55 @@ pci:v000010DEd000003E8*
+  ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge
+ pci:v000010DEd000003E8sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge (Inspiron 531)
+ pci:v000010DEd000003E8sv00001849sd000003E8*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge (939NF6G-VSTA Board)
+ pci:v000010DEd000003E9*
+  ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge
+ pci:v000010DEd000003E9sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge (Inspiron 531)
+ pci:v000010DEd000003E9sv00001849sd000003E9*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge (939NF6G-VSTA Board)
+ pci:v000010DEd000003EA*
+  ID_MODEL_FROM_DATABASE=MCP61 Memory Controller
+ pci:v000010DEd000003EAsv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 Memory Controller (Inspiron 531)
+ pci:v000010DEd000003EAsv00001849sd000003EA*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 Memory Controller (939NF6G-VSTA Board)
+ pci:v000010DEd000003EB*
+  ID_MODEL_FROM_DATABASE=MCP61 SMBus
+ pci:v000010DEd000003EBsv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 SMBus (Inspiron 531)
+ pci:v000010DEd000003EBsv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 SMBus (M4N68T series motherboard)
+ pci:v000010DEd000003EBsv00001849sd000003EB*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 SMBus (939NF6G-VSTA Board)
+ pci:v000010DEd000003EC*
+  ID_MODEL_FROM_DATABASE=MCP61 IDE
+ pci:v000010DEd000003ECsv00001025sd00000392*
+- ID_MODEL_FROM_DATABASE=ET1350
++ ID_MODEL_FROM_DATABASE=MCP61 IDE (ET1350)
+ pci:v000010DEd000003ECsv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 IDE (Inspiron 531)
+ pci:v000010DEd000003ECsv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 IDE (M4N68T series motherboard)
+ pci:v000010DEd000003ECsv00001849sd000003EC*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 IDE (939NF6G-VSTA Board)
+ pci:v000010DEd000003EE*
+  ID_MODEL_FROM_DATABASE=MCP61 Ethernet
+@@ -23592,61 +23592,61 @@ pci:v000010DEd000003EF*
+  ID_MODEL_FROM_DATABASE=MCP61 Ethernet
+ pci:v000010DEd000003EFsv00001025sd00008000*
+- ID_MODEL_FROM_DATABASE=ET1350
++ ID_MODEL_FROM_DATABASE=MCP61 Ethernet (ET1350)
+ pci:v000010DEd000003EFsv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 Ethernet (Inspiron 531)
+ pci:v000010DEd000003EFsv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 Ethernet (M4N68T series motherboard)
+ pci:v000010DEd000003EFsv00001849sd000003EF*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 Ethernet (939NF6G-VSTA Board)
+ pci:v000010DEd000003F0*
+  ID_MODEL_FROM_DATABASE=MCP61 High Definition Audio
+ pci:v000010DEd000003F0sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 High Definition Audio (Inspiron 531)
+ pci:v000010DEd000003F0sv00001043sd00008415*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 High Definition Audio (M4N68T series motherboard)
+ pci:v000010DEd000003F0sv00001849sd00000888*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 High Definition Audio (939NF6G-VSTA Board)
+ pci:v000010DEd000003F1*
+  ID_MODEL_FROM_DATABASE=MCP61 USB 1.1 Controller
+ pci:v000010DEd000003F1sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 USB 1.1 Controller (Inspiron 531)
+ pci:v000010DEd000003F1sv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 USB 1.1 Controller (M4N68T series motherboard)
+ pci:v000010DEd000003F1sv00001849sd000003F1*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 USB 1.1 Controller (939NF6G-VSTA Board)
+ pci:v000010DEd000003F2*
+  ID_MODEL_FROM_DATABASE=MCP61 USB 2.0 Controller
+ pci:v000010DEd000003F2sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 USB 2.0 Controller (Inspiron 531)
+ pci:v000010DEd000003F2sv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 USB 2.0 Controller (M4N68T series motherboard)
+ pci:v000010DEd000003F2sv00001849sd000003F2*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 USB 2.0 Controller (939NF6G-VSTA Board)
+ pci:v000010DEd000003F3*
+  ID_MODEL_FROM_DATABASE=MCP61 PCI bridge
+ pci:v000010DEd000003F3sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 PCI bridge (Inspiron 531)
+ pci:v000010DEd000003F3sv00001849sd000003F3*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 PCI bridge (939NF6G-VSTA Board)
+ pci:v000010DEd000003F4*
+  ID_MODEL_FROM_DATABASE=MCP61 SMU
+@@ -23655,25 +23655,25 @@ pci:v000010DEd000003F5*
+  ID_MODEL_FROM_DATABASE=MCP61 Memory Controller
+ pci:v000010DEd000003F5sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 Memory Controller (Inspiron 531)
+ pci:v000010DEd000003F5sv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 Memory Controller (M4N68T series motherboard)
+ pci:v000010DEd000003F5sv00001849sd000003EB*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 Memory Controller (939NF6G-VSTA Board)
+ pci:v000010DEd000003F6*
+  ID_MODEL_FROM_DATABASE=MCP61 SATA Controller
+ pci:v000010DEd000003F6sv00001028sd0000020E*
+- ID_MODEL_FROM_DATABASE=Inspiron 531
++ ID_MODEL_FROM_DATABASE=MCP61 SATA Controller (Inspiron 531)
+ pci:v000010DEd000003F6sv00001043sd000083A4*
+- ID_MODEL_FROM_DATABASE=M4N68T series motherboard
++ ID_MODEL_FROM_DATABASE=MCP61 SATA Controller (M4N68T series motherboard)
+ pci:v000010DEd000003F6sv00001849sd000003F6*
+- ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board
++ ID_MODEL_FROM_DATABASE=MCP61 SATA Controller (939NF6G-VSTA Board)
+ pci:v000010DEd000003F7*
+  ID_MODEL_FROM_DATABASE=MCP61 SATA Controller
+@@ -23682,7 +23682,7 @@ pci:v000010DEd00000400*
+  ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GTS]
+ pci:v000010DEd00000400sv00001043sd00008241*
+- ID_MODEL_FROM_DATABASE=EN8600GTS
++ ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GTS] (EN8600GTS)
+ pci:v000010DEd00000401*
+  ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GT]
+@@ -23691,10 +23691,10 @@ pci:v000010DEd00000402*
+  ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GT]
+ pci:v000010DEd00000402sv00001458sd00003455*
+- ID_MODEL_FROM_DATABASE=GV-NX86T512H
++ ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GT] (GV-NX86T512H)
+ pci:v000010DEd00000402sv00001462sd00000910*
+- ID_MODEL_FROM_DATABASE=NX8600GT-T2D256EZ
++ ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GT] (NX8600GT-T2D256EZ)
+ pci:v000010DEd00000403*
+  ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GS]
+@@ -23703,7 +23703,7 @@ pci:v000010DEd00000404*
+  ID_MODEL_FROM_DATABASE=G84 [GeForce 8400 GS]
+ pci:v000010DEd00000404sv00001462sd00001230*
+- ID_MODEL_FROM_DATABASE=NX8400GS-TD256E
++ ID_MODEL_FROM_DATABASE=G84 [GeForce 8400 GS] (NX8400GS-TD256E)
+ pci:v000010DEd00000405*
+  ID_MODEL_FROM_DATABASE=G84M [GeForce 9500M GS]
+@@ -23730,7 +23730,7 @@ pci:v000010DEd0000040C*
+  ID_MODEL_FROM_DATABASE=G84GLM [Quadro FX 570M]
+ pci:v000010DEd0000040Csv000017AAsd000020D9*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61p
++ ID_MODEL_FROM_DATABASE=G84GLM [Quadro FX 570M] (ThinkPad T61p)
+ pci:v000010DEd0000040D*
+  ID_MODEL_FROM_DATABASE=G84GLM [Quadro FX 1600M]
+@@ -23754,7 +23754,7 @@ pci:v000010DEd00000421*
+  ID_MODEL_FROM_DATABASE=G86 [GeForce 8500 GT]
+ pci:v000010DEd00000421sv00001462sd00000960*
+- ID_MODEL_FROM_DATABASE=NX8500GT-TD512EH/M2
++ ID_MODEL_FROM_DATABASE=G86 [GeForce 8500 GT] (NX8500GT-TD512EH/M2)
+ pci:v000010DEd00000422*
+  ID_MODEL_FROM_DATABASE=G86 [GeForce 8400 GS]
+@@ -23769,7 +23769,7 @@ pci:v000010DEd00000425*
+  ID_MODEL_FROM_DATABASE=G86M [GeForce 8600M GS]
+ pci:v000010DEd00000425sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=G86M [GeForce 8600M GS] (Aspire 5920G)
+ pci:v000010DEd00000426*
+  ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M GT]
+@@ -23778,10 +23778,10 @@ pci:v000010DEd00000427*
+  ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M GS]
+ pci:v000010DEd00000427sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M GS] (Pavilion dv6700)
+ pci:v000010DEd00000427sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M GS] (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000428*
+  ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M G]
+@@ -23790,7 +23790,7 @@ pci:v000010DEd00000429*
+  ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 140M]
+ pci:v000010DEd00000429sv000017AAsd000020D8*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61
++ ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 140M] (ThinkPad T61)
+ pci:v000010DEd0000042A*
+  ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 130M]
+@@ -23820,7 +23820,7 @@ pci:v000010DEd00000442*
+  ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge
+ pci:v000010DEd00000442sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000443*
+  ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge
+@@ -23829,7 +23829,7 @@ pci:v000010DEd00000444*
+  ID_MODEL_FROM_DATABASE=MCP65 Memory Controller
+ pci:v000010DEd00000444sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 Memory Controller (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000445*
+  ID_MODEL_FROM_DATABASE=MCP65 Memory Controller
+@@ -23838,31 +23838,31 @@ pci:v000010DEd00000446*
+  ID_MODEL_FROM_DATABASE=MCP65 SMBus
+ pci:v000010DEd00000446sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 SMBus (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000447*
+  ID_MODEL_FROM_DATABASE=MCP65 SMU
+ pci:v000010DEd00000447sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 SMU (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000448*
+  ID_MODEL_FROM_DATABASE=MCP65 IDE
+ pci:v000010DEd00000448sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 IDE (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000449*
+  ID_MODEL_FROM_DATABASE=MCP65 PCI bridge
+ pci:v000010DEd00000449sv000010DEsd0000CB84*
+- ID_MODEL_FROM_DATABASE=HP Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 PCI bridge (HP Pavilion dv9668eg Laptop)
+ pci:v000010DEd0000044A*
+  ID_MODEL_FROM_DATABASE=MCP65 High Definition Audio
+ pci:v000010DEd0000044Asv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 High Definition Audio (Pavilion dv9668eg Laptop)
+ pci:v000010DEd0000044B*
+  ID_MODEL_FROM_DATABASE=MCP65 High Definition Audio
+@@ -23883,7 +23883,7 @@ pci:v000010DEd00000450*
+  ID_MODEL_FROM_DATABASE=MCP65 Ethernet
+ pci:v000010DEd00000450sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 Ethernet (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000451*
+  ID_MODEL_FROM_DATABASE=MCP65 Ethernet
+@@ -23898,13 +23898,13 @@ pci:v000010DEd00000454*
+  ID_MODEL_FROM_DATABASE=MCP65 USB 1.1 OHCI Controller
+ pci:v000010DEd00000454sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 USB 1.1 OHCI Controller (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000455*
+  ID_MODEL_FROM_DATABASE=MCP65 USB 2.0 EHCI Controller
+ pci:v000010DEd00000455sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 USB 2.0 EHCI Controller (Pavilion dv9668eg Laptop)
+ pci:v000010DEd00000456*
+  ID_MODEL_FROM_DATABASE=MCP65 USB Controller
+@@ -23943,7 +23943,7 @@ pci:v000010DEd0000045D*
+  ID_MODEL_FROM_DATABASE=MCP65 SATA Controller
+ pci:v000010DEd0000045Dsv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=MCP65 SATA Controller (Pavilion dv9668eg Laptop)
+ pci:v000010DEd0000045E*
+  ID_MODEL_FROM_DATABASE=MCP65 SATA Controller
+@@ -23964,7 +23964,7 @@ pci:v000010DEd0000053B*
+  ID_MODEL_FROM_DATABASE=C68 [GeForce 7050 PV / nForce 630a]
+ pci:v000010DEd0000053Bsv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord
++ ID_MODEL_FROM_DATABASE=C68 [GeForce 7050 PV / nForce 630a] (M2N68-AM Motherbord)
+ pci:v000010DEd0000053E*
+  ID_MODEL_FROM_DATABASE=C68 [GeForce 7025 / nForce 630a]
+@@ -23976,7 +23976,7 @@ pci:v000010DEd00000542*
+  ID_MODEL_FROM_DATABASE=MCP67 SMBus
+ pci:v000010DEd00000542sv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord
++ ID_MODEL_FROM_DATABASE=MCP67 SMBus (M2N68-AM Motherbord)
+ pci:v000010DEd00000543*
+  ID_MODEL_FROM_DATABASE=MCP67 Co-processor
+@@ -23985,25 +23985,25 @@ pci:v000010DEd00000547*
+  ID_MODEL_FROM_DATABASE=MCP67 Memory Controller
+ pci:v000010DEd00000547sv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord
++ ID_MODEL_FROM_DATABASE=MCP67 Memory Controller (M2N68-AM Motherbord)
+ pci:v000010DEd00000547sv00001849sd00000547*
+- ID_MODEL_FROM_DATABASE=ALiveNF7G-HDready
++ ID_MODEL_FROM_DATABASE=MCP67 Memory Controller (ALiveNF7G-HDready)
+ pci:v000010DEd00000548*
+  ID_MODEL_FROM_DATABASE=MCP67 ISA Bridge
+ pci:v000010DEd00000548sv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 ISA Bridge (M2N68-AM Motherboard)
+ pci:v000010DEd0000054C*
+  ID_MODEL_FROM_DATABASE=MCP67 Ethernet
+ pci:v000010DEd0000054Csv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord
++ ID_MODEL_FROM_DATABASE=MCP67 Ethernet (M2N68-AM Motherbord)
+ pci:v000010DEd0000054Csv00001849sd0000054C*
+- ID_MODEL_FROM_DATABASE=ALiveNF7G-HDready, MCP67 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=MCP67 Ethernet (ALiveNF7G-HDready, MCP67 Gigabit Ethernet)
+ pci:v000010DEd0000054D*
+  ID_MODEL_FROM_DATABASE=MCP67 Ethernet
+@@ -24018,25 +24018,25 @@ pci:v000010DEd00000550*
+  ID_MODEL_FROM_DATABASE=MCP67 AHCI Controller
+ pci:v000010DEd00000550sv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 AHCI Controller (M2N68-AM Motherboard)
+ pci:v000010DEd00000554*
+  ID_MODEL_FROM_DATABASE=MCP67 AHCI Controller
+ pci:v000010DEd00000554sv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 AHCI Controller (M2N68-AM Motherboard)
+ pci:v000010DEd00000555*
+  ID_MODEL_FROM_DATABASE=MCP67 SATA Controller
+ pci:v000010DEd00000555sv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 SATA Controller (M2N68-AM Motherboard)
+ pci:v000010DEd0000055C*
+  ID_MODEL_FROM_DATABASE=MCP67 High Definition Audio
+ pci:v000010DEd0000055Csv00001043sd00008290*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 High Definition Audio (M2N68-AM Motherboard)
+ pci:v000010DEd0000055D*
+  ID_MODEL_FROM_DATABASE=MCP67 High Definition Audio
+@@ -24045,19 +24045,19 @@ pci:v000010DEd0000055E*
+  ID_MODEL_FROM_DATABASE=MCP67 OHCI USB 1.1 Controller
+ pci:v000010DEd0000055Esv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 OHCI USB 1.1 Controller (M2N68-AM Motherboard)
+ pci:v000010DEd0000055F*
+  ID_MODEL_FROM_DATABASE=MCP67 EHCI USB 2.0 Controller
+ pci:v000010DEd0000055Fsv00001043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 EHCI USB 2.0 Controller (M2N68-AM Motherboard)
+ pci:v000010DEd00000560*
+  ID_MODEL_FROM_DATABASE=MCP67 IDE Controller
+ pci:v000010DEd00000560sv0000F043sd00008308*
+- ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard
++ ID_MODEL_FROM_DATABASE=MCP67 IDE Controller (M2N68-AM Motherboard)
+ pci:v000010DEd00000561*
+  ID_MODEL_FROM_DATABASE=MCP67 PCI Bridge
+@@ -24066,7 +24066,7 @@ pci:v000010DEd00000562*
+  ID_MODEL_FROM_DATABASE=MCP67 PCI Express Bridge
+ pci:v000010DEd00000562sv00001849sd00000562*
+- ID_MODEL_FROM_DATABASE=ALiveNF7G-HDready
++ ID_MODEL_FROM_DATABASE=MCP67 PCI Express Bridge (ALiveNF7G-HDready)
+ pci:v000010DEd00000563*
+  ID_MODEL_FROM_DATABASE=MCP67 PCI Express Bridge
+@@ -24075,64 +24075,64 @@ pci:v000010DEd00000568*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller
+ pci:v000010DEd00000568sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (Pavilion p6310f)
+ pci:v000010DEd00000568sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (M3N72-D)
+ pci:v000010DEd00000568sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (K9N2GM-FIH)
+ pci:v000010DEd00000568sv00001849sd00000568*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (K10N78FullHD-hSLI R3.0 Memory Controller)
+ pci:v000010DEd00000569*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge
+ pci:v000010DEd00000569sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (Pavilion p6310f)
+ pci:v000010DEd00000569sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (M3N72-D)
+ pci:v000010DEd00000569sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (K9N2GM-FIH)
+ pci:v000010DEd00000569sv00001849sd00000569*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (K10N78FullHD-hSLI R3.0 PCI Express Bridge)
+ pci:v000010DEd0000056A*
+  ID_MODEL_FROM_DATABASE=MCP73 [nForce 630i] USB 2.0 Controller (EHCI)
+ pci:v000010DEd0000056Asv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 [nForce 630i] USB 2.0 Controller (EHCI) (MCP73PVT-SM)
+ pci:v000010DEd0000056C*
+  ID_MODEL_FROM_DATABASE=MCP73 IDE
+ pci:v000010DEd0000056Csv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 IDE (MCP73PVT-SM)
+ pci:v000010DEd0000056Csv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 IDE (JW-IN7150-HD)
+ pci:v000010DEd0000056D*
+  ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge
+ pci:v000010DEd0000056Dsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM)
+ pci:v000010DEd0000056E*
+  ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge
+ pci:v000010DEd0000056Esv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM)
+ pci:v000010DEd0000056F*
+  ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge
+ pci:v000010DEd0000056Fsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge (MCP73PVT-SM)
+ pci:v000010DEd000005B1*
+  ID_MODEL_FROM_DATABASE=NF200 PCIe 2.0 switch
+@@ -24156,7 +24156,7 @@ pci:v000010DEd000005E3*
+  ID_MODEL_FROM_DATABASE=GT200b [GeForce GTX 285]
+ pci:v000010DEd000005E3sv00001682sd00002490*
+- ID_MODEL_FROM_DATABASE=GX-285N-ZDF
++ ID_MODEL_FROM_DATABASE=GT200b [GeForce GTX 285] (GX-285N-ZDF)
+ pci:v000010DEd000005E6*
+  ID_MODEL_FROM_DATABASE=GT200b [GeForce GTX 275]
+@@ -24165,19 +24165,19 @@ pci:v000010DEd000005E7*
+  ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060]
+ pci:v000010DEd000005E7sv000010DEsd00000595*
+- ID_MODEL_FROM_DATABASE=Tesla T10 Processor
++ ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] (Tesla T10 Processor)
+ pci:v000010DEd000005E7sv000010DEsd0000068F*
+- ID_MODEL_FROM_DATABASE=Tesla T10 Processor
++ ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] (Tesla T10 Processor)
+ pci:v000010DEd000005E7sv000010DEsd00000697*
+- ID_MODEL_FROM_DATABASE=Tesla M1060
++ ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] (Tesla M1060)
+ pci:v000010DEd000005E7sv000010DEsd00000714*
+- ID_MODEL_FROM_DATABASE=Tesla M1060
++ ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] (Tesla M1060)
+ pci:v000010DEd000005E7sv000010DEsd00000743*
+- ID_MODEL_FROM_DATABASE=Tesla M1060
++ ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] (Tesla M1060)
+ pci:v000010DEd000005EA*
+  ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260]
+@@ -24240,7 +24240,7 @@ pci:v000010DEd00000609*
+  ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTS]
+ pci:v000010DEd00000609sv0000106Bsd000000A7*
+- ID_MODEL_FROM_DATABASE=GeForce 8800 GS
++ ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTS] (GeForce 8800 GS)
+ pci:v000010DEd0000060A*
+  ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 280M]
+@@ -24261,16 +24261,16 @@ pci:v000010DEd00000610*
+  ID_MODEL_FROM_DATABASE=G92 [GeForce 9600 GSO]
+ pci:v000010DEd00000610sv00001682sd00002385*
+- ID_MODEL_FROM_DATABASE=GeForce 9600 GSO 768mb
++ ID_MODEL_FROM_DATABASE=G92 [GeForce 9600 GSO] (GeForce 9600 GSO 768mb)
+ pci:v000010DEd00000611*
+  ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GT]
+ pci:v000010DEd00000611sv0000107Dsd00002AB0*
+- ID_MODEL_FROM_DATABASE=Winfast PX8800 GT PCI-E
++ ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GT] (Winfast PX8800 GT PCI-E)
+ pci:v000010DEd00000611sv000019DAsd00001040*
+- ID_MODEL_FROM_DATABASE=ZT-88TES2P-FSP
++ ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GT] (ZT-88TES2P-FSP)
+ pci:v000010DEd00000612*
+  ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GTX / 9800 GTX+]
+@@ -24282,22 +24282,22 @@ pci:v000010DEd00000614*
+  ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GT]
+ pci:v000010DEd00000614sv0000107Dsd00002AB3*
+- ID_MODEL_FROM_DATABASE=WinFast PX9800 GT (S-Fanpipe)
++ ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GT] (WinFast PX9800 GT (S-Fanpipe))
+ pci:v000010DEd00000615*
+  ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 250]
+ pci:v000010DEd00000615sv00003842sd00001150*
+- ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 512-P3-1150-TR
++ ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 250] (GeForce GTS 250 P/N 512-P3-1150-TR)
+ pci:v000010DEd00000615sv00003842sd00001151*
+- ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 512-P3-1151-TR
++ ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 250] (GeForce GTS 250 P/N 512-P3-1151-TR)
+ pci:v000010DEd00000615sv00003842sd00001155*
+- ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 01G-P3-1155-TR
++ ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 250] (GeForce GTS 250 P/N 01G-P3-1155-TR)
+ pci:v000010DEd00000615sv00003842sd00001156*
+- ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 01G-P3-1156-TR
++ ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 250] (GeForce GTS 250 P/N 01G-P3-1156-TR)
+ pci:v000010DEd00000617*
+  ID_MODEL_FROM_DATABASE=G92M [GeForce 9800M GTX]
+@@ -24336,10 +24336,10 @@ pci:v000010DEd00000622*
+  ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT]
+ pci:v000010DEd00000622sv0000107Dsd00002AC1*
+- ID_MODEL_FROM_DATABASE=WinFast PX9600GT 1024MB
++ ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] (WinFast PX9600GT 1024MB)
+ pci:v000010DEd00000622sv00001458sd00003481*
+- ID_MODEL_FROM_DATABASE=GV-NX96T512HP
++ ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] (GV-NX96T512HP)
+ pci:v000010DEd00000623*
+  ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GS]
+@@ -24375,7 +24375,7 @@ pci:v000010DEd0000062E*
+  ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT]
+ pci:v000010DEd0000062Esv0000106Bsd00000605*
+- ID_MODEL_FROM_DATABASE=GeForce GT 130
++ ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] (GeForce GT 130)
+ pci:v000010DEd0000062F*
+  ID_MODEL_FROM_DATABASE=G94 [GeForce 9800 S]
+@@ -24435,7 +24435,7 @@ pci:v000010DEd00000649*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT]
+ pci:v000010DEd00000649sv00001043sd0000202D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 220M
++ ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT] (GeForce GT 220M)
+ pci:v000010DEd0000064A*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce 9700M GT]
+@@ -24459,7 +24459,7 @@ pci:v000010DEd00000652*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 130M]
+ pci:v000010DEd00000652sv0000152Dsd00000850*
+- ID_MODEL_FROM_DATABASE=GeForce GT 240M LE
++ ID_MODEL_FROM_DATABASE=G96M [GeForce GT 130M] (GeForce GT 240M LE)
+ pci:v000010DEd00000653*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 120M]
+@@ -24468,10 +24468,10 @@ pci:v000010DEd00000654*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M]
+ pci:v000010DEd00000654sv00001043sd000014A2*
+- ID_MODEL_FROM_DATABASE=GeForce GT 320M
++ ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M] (GeForce GT 320M)
+ pci:v000010DEd00000654sv00001043sd000014D2*
+- ID_MODEL_FROM_DATABASE=GeForce GT 320M
++ ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M] (GeForce GT 320M)
+ pci:v000010DEd00000655*
+  ID_MODEL_FROM_DATABASE=G96 [GeForce GT 120]
+@@ -24519,28 +24519,28 @@ pci:v000010DEd000006D1*
+  ID_MODEL_FROM_DATABASE=GF100GL [Tesla C2050 / C2070]
+ pci:v000010DEd000006D1sv000010DEsd00000771*
+- ID_MODEL_FROM_DATABASE=Tesla C2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla C2050 / C2070] (Tesla C2050)
+ pci:v000010DEd000006D1sv000010DEsd00000772*
+- ID_MODEL_FROM_DATABASE=Tesla C2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla C2050 / C2070] (Tesla C2070)
+ pci:v000010DEd000006D2*
+  ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070]
+ pci:v000010DEd000006D2sv000010DEsd00000774*
+- ID_MODEL_FROM_DATABASE=Tesla M2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070] (Tesla M2070)
+ pci:v000010DEd000006D2sv000010DEsd00000830*
+- ID_MODEL_FROM_DATABASE=Tesla M2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070] (Tesla M2070)
+ pci:v000010DEd000006D2sv000010DEsd00000842*
+- ID_MODEL_FROM_DATABASE=Tesla M2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070] (Tesla M2070)
+ pci:v000010DEd000006D2sv000010DEsd0000088F*
+- ID_MODEL_FROM_DATABASE=Tesla X2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070] (Tesla X2070)
+ pci:v000010DEd000006D2sv000010DEsd00000908*
+- ID_MODEL_FROM_DATABASE=Tesla M2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070] (Tesla M2070)
+ pci:v000010DEd000006D8*
+  ID_MODEL_FROM_DATABASE=GF100GL [Quadro 6000]
+@@ -24561,37 +24561,37 @@ pci:v000010DEd000006DE*
+  ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor]
+ pci:v000010DEd000006DEsv000010DEsd00000773*
+- ID_MODEL_FROM_DATABASE=Tesla S2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla S2050)
+ pci:v000010DEd000006DEsv000010DEsd0000082F*
+- ID_MODEL_FROM_DATABASE=Tesla M2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla M2050)
+ pci:v000010DEd000006DEsv000010DEsd00000840*
+- ID_MODEL_FROM_DATABASE=Tesla X2070
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla X2070)
+ pci:v000010DEd000006DEsv000010DEsd00000842*
+- ID_MODEL_FROM_DATABASE=Tesla M2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla M2050)
+ pci:v000010DEd000006DEsv000010DEsd00000846*
+- ID_MODEL_FROM_DATABASE=Tesla M2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla M2050)
+ pci:v000010DEd000006DEsv000010DEsd00000866*
+- ID_MODEL_FROM_DATABASE=Tesla M2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla M2050)
+ pci:v000010DEd000006DEsv000010DEsd00000907*
+- ID_MODEL_FROM_DATABASE=Tesla M2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla M2050)
+ pci:v000010DEd000006DEsv000010DEsd0000091E*
+- ID_MODEL_FROM_DATABASE=Tesla M2050
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] (Tesla M2050)
+ pci:v000010DEd000006DF*
+  ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070-Q]
+ pci:v000010DEd000006DFsv000010DEsd0000084D*
+- ID_MODEL_FROM_DATABASE=Tesla M2070-Q
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070-Q] (Tesla M2070-Q)
+ pci:v000010DEd000006DFsv000010DEsd0000087F*
+- ID_MODEL_FROM_DATABASE=Tesla M2070-Q
++ ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070-Q] (Tesla M2070-Q)
+ pci:v000010DEd000006E0*
+  ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GE]
+@@ -24609,7 +24609,7 @@ pci:v000010DEd000006E4*
+  ID_MODEL_FROM_DATABASE=G98 [GeForce 8400 GS Rev. 2]
+ pci:v000010DEd000006E4sv00001458sd00003475*
+- ID_MODEL_FROM_DATABASE=GV-NX84S256HE [GeForce 8400 GS]
++ ID_MODEL_FROM_DATABASE=G98 [GeForce 8400 GS Rev. 2] (GV-NX84S256HE [GeForce 8400 GS])
+ pci:v000010DEd000006E5*
+  ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS]
+@@ -24624,13 +24624,13 @@ pci:v000010DEd000006E8*
+  ID_MODEL_FROM_DATABASE=G98M [GeForce 9200M GS]
+ pci:v000010DEd000006E8sv0000103Csd0000360B*
+- ID_MODEL_FROM_DATABASE=GeForce 9200M GE
++ ID_MODEL_FROM_DATABASE=G98M [GeForce 9200M GS] (GeForce 9200M GE)
+ pci:v000010DEd000006E9*
+  ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS]
+ pci:v000010DEd000006E9sv00001043sd000019B2*
+- ID_MODEL_FROM_DATABASE=U6V laptop
++ ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS] (U6V laptop)
+ pci:v000010DEd000006EA*
+  ID_MODEL_FROM_DATABASE=G98M [Quadro NVS 150M]
+@@ -24672,139 +24672,139 @@ pci:v000010DEd000006FF*
+  ID_MODEL_FROM_DATABASE=G98 [HICx16 + Graphics]
+ pci:v000010DEd000006FFsv000010DEsd00000711*
+- ID_MODEL_FROM_DATABASE=HICx8 + Graphics
++ ID_MODEL_FROM_DATABASE=G98 [HICx16 + Graphics] (HICx8 + Graphics)
+ pci:v000010DEd00000751*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller
+ pci:v000010DEd00000751sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (Pavilion p6310f)
+ pci:v000010DEd00000751sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (M3N72-D)
+ pci:v000010DEd00000751sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (K9N2GM-FIH)
+ pci:v000010DEd00000751sv00001849sd00000751*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (K10N78FullHD-hSLI R3.0 Memory Controller)
+ pci:v000010DEd00000752*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SMBus
+ pci:v000010DEd00000752sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SMBus (Pavilion p6310f)
+ pci:v000010DEd00000752sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SMBus (M3N72-D)
+ pci:v000010DEd00000752sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SMBus (K9N2GM-FIH)
+ pci:v000010DEd00000752sv00001849sd00000752*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 SMBus
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SMBus (K10N78FullHD-hSLI R3.0 SMBus)
+ pci:v000010DEd00000753*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor
+ pci:v000010DEd00000753sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor (Pavilion p6310f)
+ pci:v000010DEd00000753sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor (M3N72-D)
+ pci:v000010DEd00000753sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor (K9N2GM-FIH)
+ pci:v000010DEd00000753sv00001849sd00000753*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Co-Processor
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor (K10N78FullHD-hSLI R3.0 Co-Processor)
+ pci:v000010DEd00000754*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller
+ pci:v000010DEd00000754sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (Pavilion p6310f)
+ pci:v000010DEd00000754sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (M3N72-D)
+ pci:v000010DEd00000754sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (K9N2GM-FIH)
+ pci:v000010DEd00000754sv00001849sd00000754*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller (K10N78FullHD-hSLI R3.0 Memory Controller)
+ pci:v000010DEd00000759*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] IDE
+ pci:v000010DEd00000759sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] IDE (M3N72-D)
+ pci:v000010DEd00000759sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] IDE (K9N2GM-FIH)
+ pci:v000010DEd00000759sv00001849sd00000759*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 IDE
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] IDE (K10N78FullHD-hSLI R3.0 IDE)
+ pci:v000010DEd0000075A*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge
+ pci:v000010DEd0000075Asv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (Pavilion p6310f)
+ pci:v000010DEd0000075Asv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (M3N72-D)
+ pci:v000010DEd0000075Asv00001849sd0000075A*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Bridge
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (K10N78FullHD-hSLI R3.0 PCI Bridge)
+ pci:v000010DEd0000075B*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge
+ pci:v000010DEd0000075Bsv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (Pavilion p6310f)
+ pci:v000010DEd0000075Bsv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (M3N72-D)
+ pci:v000010DEd0000075Bsv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (K9N2GM-FIH)
+ pci:v000010DEd0000075Bsv00001849sd0000075B*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (K10N78FullHD-hSLI R3.0 PCI Express Bridge)
+ pci:v000010DEd0000075C*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge
+ pci:v000010DEd0000075Csv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge (Pavilion p6310f)
+ pci:v000010DEd0000075Csv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge (K9N2GM-FIH)
+ pci:v000010DEd0000075Csv00001849sd0000075C*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 LPC Bridge
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge (K10N78FullHD-hSLI R3.0 LPC Bridge)
+ pci:v000010DEd0000075D*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge
+ pci:v000010DEd0000075Dsv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge (M3N72-D)
+ pci:v000010DEd00000760*
+  ID_MODEL_FROM_DATABASE=MCP77 Ethernet
+ pci:v000010DEd00000760sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP77 Ethernet (Pavilion p6310f)
+ pci:v000010DEd00000760sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP77 Ethernet (M3N72-D)
+ pci:v000010DEd00000760sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP77 Ethernet (K9N2GM-FIH)
+ pci:v000010DEd00000760sv00001849sd00000760*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Ethernet
++ ID_MODEL_FROM_DATABASE=MCP77 Ethernet (K10N78FullHD-hSLI R3.0 Ethernet)
+ pci:v000010DEd00000761*
+  ID_MODEL_FROM_DATABASE=MCP77 Ethernet
+@@ -24819,118 +24819,118 @@ pci:v000010DEd00000774*
+  ID_MODEL_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio
+ pci:v000010DEd00000774sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio (Pavilion p6310f)
+ pci:v000010DEd00000774sv00001043sd000082FE*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio (M3N72-D)
+ pci:v000010DEd00000774sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio (K9N2GM-FIH)
+ pci:v000010DEd00000774sv00001849sd00003662*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 High Definition Audio
++ ID_MODEL_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio (K10N78FullHD-hSLI R3.0 High Definition Audio)
+ pci:v000010DEd00000778*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge
+ pci:v000010DEd00000778sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (Pavilion p6310f)
+ pci:v000010DEd00000778sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (M3N72-D)
+ pci:v000010DEd00000778sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (K9N2GM-FIH)
+ pci:v000010DEd00000778sv00001849sd00000778*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge (K10N78FullHD-hSLI R3.0 PCI Express Bridge)
+ pci:v000010DEd0000077A*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge
+ pci:v000010DEd0000077Asv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (Pavilion p6310f)
+ pci:v000010DEd0000077Asv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (M3N72-D)
+ pci:v000010DEd0000077Asv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (K9N2GM-FIH)
+ pci:v000010DEd0000077Asv00001849sd0000077A*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Bridge
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge (K10N78FullHD-hSLI R3.0 PCI Bridge)
+ pci:v000010DEd0000077B*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller
+ pci:v000010DEd0000077Bsv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (Pavilion p6310f)
+ pci:v000010DEd0000077Bsv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (M3N72-D)
+ pci:v000010DEd0000077Bsv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (K9N2GM-FIH)
+ pci:v000010DEd0000077Bsv00001849sd0000077B*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller)
+ pci:v000010DEd0000077C*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller
+ pci:v000010DEd0000077Csv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (Pavilion p6310f)
+ pci:v000010DEd0000077Csv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (M3N72-D)
+ pci:v000010DEd0000077Csv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (K9N2GM-FIH)
+ pci:v000010DEd0000077Csv00001849sd0000077C*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller)
+ pci:v000010DEd0000077D*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller
+ pci:v000010DEd0000077Dsv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (Pavilion p6310f)
+ pci:v000010DEd0000077Dsv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (M3N72-D)
+ pci:v000010DEd0000077Dsv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (K9N2GM-FIH)
+ pci:v000010DEd0000077Dsv00001849sd0000077D*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller (K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller)
+ pci:v000010DEd0000077E*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller
+ pci:v000010DEd0000077Esv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (Pavilion p6310f)
+ pci:v000010DEd0000077Esv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (M3N72-D)
+ pci:v000010DEd0000077Esv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (K9N2GM-FIH)
+ pci:v000010DEd0000077Esv00001849sd0000077E*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller (K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller)
+ pci:v000010DEd000007C0*
+  ID_MODEL_FROM_DATABASE=MCP73 Host Bridge
+ pci:v000010DEd000007C0sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 Host Bridge (JW-IN7150-HD)
+ pci:v000010DEd000007C1*
+  ID_MODEL_FROM_DATABASE=MCP73 Host Bridge
+ pci:v000010DEd000007C1sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 Host Bridge (MCP73PVT-SM)
+ pci:v000010DEd000007C2*
+  ID_MODEL_FROM_DATABASE=MCP73 Host Bridge
+@@ -24942,124 +24942,124 @@ pci:v000010DEd000007C8*
+  ID_MODEL_FROM_DATABASE=MCP73 Memory Controller
+ pci:v000010DEd000007C8sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 Memory Controller (MCP73PVT-SM)
+ pci:v000010DEd000007C8sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 Memory Controller (JW-IN7150-HD)
+ pci:v000010DEd000007CB*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007CBsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007CBsv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007CD*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007CDsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007CDsv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007CE*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007CEsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007CEsv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007CF*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007CFsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007CFsv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007D0*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007D0sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007D0sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007D1*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007D1sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007D1sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007D2*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007D2sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007D2sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007D3*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007D3sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007D3sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007D6*
+  ID_MODEL_FROM_DATABASE=nForce 630i memory controller
+ pci:v000010DEd000007D6sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (MCP73PVT-SM)
+ pci:v000010DEd000007D6sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=nForce 630i memory controller (JW-IN7150-HD)
+ pci:v000010DEd000007D7*
+  ID_MODEL_FROM_DATABASE=MCP73 LPC Bridge
+ pci:v000010DEd000007D7sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 LPC Bridge (MCP73PVT-SM)
+ pci:v000010DEd000007D7sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 LPC Bridge (JW-IN7150-HD)
+ pci:v000010DEd000007D8*
+  ID_MODEL_FROM_DATABASE=MCP73 SMBus
+ pci:v000010DEd000007D8sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 SMBus (MCP73PVT-SM)
+ pci:v000010DEd000007D8sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 SMBus (JW-IN7150-HD)
+ pci:v000010DEd000007D9*
+  ID_MODEL_FROM_DATABASE=MCP73 Memory Controller
+ pci:v000010DEd000007D9sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 Memory Controller (MCP73PVT-SM)
+ pci:v000010DEd000007D9sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 Memory Controller (JW-IN7150-HD)
+ pci:v000010DEd000007DA*
+  ID_MODEL_FROM_DATABASE=MCP73 Co-processor
+ pci:v000010DEd000007DAsv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=MCP73 Co-processor (JW-IN7150-HD)
+ pci:v000010DEd000007DC*
+  ID_MODEL_FROM_DATABASE=MCP73 Ethernet
+@@ -25077,13 +25077,13 @@ pci:v000010DEd000007E0*
+  ID_MODEL_FROM_DATABASE=C73 [GeForce 7150 / nForce 630i]
+ pci:v000010DEd000007E0sv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=C73 [GeForce 7150 / nForce 630i] (JW-IN7150-HD)
+ pci:v000010DEd000007E1*
+  ID_MODEL_FROM_DATABASE=C73 [GeForce 7100 / nForce 630i]
+ pci:v000010DEd000007E1sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=C73 [GeForce 7100 / nForce 630i] (MCP73PVT-SM)
+ pci:v000010DEd000007E2*
+  ID_MODEL_FROM_DATABASE=C73 [GeForce 7050 / nForce 630i]
+@@ -25101,7 +25101,7 @@ pci:v000010DEd000007F4*
+  ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i SATA
+ pci:v000010DEd000007F4sv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i SATA (MCP73PVT-SM)
+ pci:v000010DEd000007F8*
+  ID_MODEL_FROM_DATABASE=MCP73 SATA RAID Controller
+@@ -25110,7 +25110,7 @@ pci:v000010DEd000007FC*
+  ID_MODEL_FROM_DATABASE=MCP73 High Definition Audio
+ pci:v000010DEd000007FCsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=MCP73 High Definition Audio (MCP73PVT-SM)
+ pci:v000010DEd000007FCsv000010DEsd000007FC*
+  ID_MODEL_FROM_DATABASE=MCP73 High Definition Audio
+@@ -25119,10 +25119,10 @@ pci:v000010DEd000007FE*
+  ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i USB
+ pci:v000010DEd000007FEsv00001019sd0000297A*
+- ID_MODEL_FROM_DATABASE=MCP73PVT-SM
++ ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i USB (MCP73PVT-SM)
+ pci:v000010DEd000007FEsv00001AFAsd00007150*
+- ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++ ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i USB (JW-IN7150-HD)
+ pci:v000010DEd00000840*
+  ID_MODEL_FROM_DATABASE=C77 [GeForce 8200M]
+@@ -25140,7 +25140,7 @@ pci:v000010DEd00000847*
+  ID_MODEL_FROM_DATABASE=C78 [GeForce 9100]
+ pci:v000010DEd00000847sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=C78 [GeForce 9100] (Pavilion p6310f)
+ pci:v000010DEd00000848*
+  ID_MODEL_FROM_DATABASE=C77 [GeForce 8300]
+@@ -25149,10 +25149,10 @@ pci:v000010DEd00000849*
+  ID_MODEL_FROM_DATABASE=C77 [GeForce 8200]
+ pci:v000010DEd00000849sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=C77 [GeForce 8200] (K9N2GM-FIH)
+ pci:v000010DEd00000849sv00001849sd00000849*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 GeForce 8200
++ ID_MODEL_FROM_DATABASE=C77 [GeForce 8200] (K10N78FullHD-hSLI R3.0 GeForce 8200)
+ pci:v000010DEd0000084A*
+  ID_MODEL_FROM_DATABASE=C77 [nForce 730a]
+@@ -25167,7 +25167,7 @@ pci:v000010DEd0000084D*
+  ID_MODEL_FROM_DATABASE=C77 [nForce 750a SLI]
+ pci:v000010DEd0000084Dsv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D mGPU
++ ID_MODEL_FROM_DATABASE=C77 [nForce 750a SLI] (M3N72-D mGPU)
+ pci:v000010DEd0000084F*
+  ID_MODEL_FROM_DATABASE=C77 [GeForce 8100 / nForce 720a]
+@@ -25185,7 +25185,7 @@ pci:v000010DEd00000863*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M]
+ pci:v000010DEd00000863sv0000106Bsd000000AA*
+- ID_MODEL_FROM_DATABASE=MacBook5,1
++ ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M] (MacBook5,1)
+ pci:v000010DEd00000864*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9300]
+@@ -25197,13 +25197,13 @@ pci:v000010DEd00000866*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G]
+ pci:v000010DEd00000866sv0000106Bsd000000B1*
+- ID_MODEL_FROM_DATABASE=GeForce 9400M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G] (GeForce 9400M)
+ pci:v000010DEd00000867*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400]
+ pci:v000010DEd00000867sv0000106Bsd000000AD*
+- ID_MODEL_FROM_DATABASE=iMac 9,1
++ ID_MODEL_FROM_DATABASE=C79 [GeForce 9400] (iMac 9,1)
+ pci:v000010DEd00000868*
+  ID_MODEL_FROM_DATABASE=C79 [nForce 760i SLI]
+@@ -25236,28 +25236,28 @@ pci:v000010DEd00000872*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce G102M]
+ pci:v000010DEd00000872sv00001043sd000019B4*
+- ID_MODEL_FROM_DATABASE=GeForce G102M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G102M)
+ pci:v000010DEd00000872sv00001043sd00001AA2*
+- ID_MODEL_FROM_DATABASE=GeForce G102M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G102M)
+ pci:v000010DEd00000872sv00001043sd00001C02*
+- ID_MODEL_FROM_DATABASE=GeForce G102M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G102M)
+ pci:v000010DEd00000872sv00001043sd00001C42*
+- ID_MODEL_FROM_DATABASE=GeForce G205M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G205M)
+ pci:v000010DEd00000873*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce G102M]
+ pci:v000010DEd00000873sv00001043sd000019B4*
+- ID_MODEL_FROM_DATABASE=GeForce G102M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G102M)
+ pci:v000010DEd00000873sv00001043sd00001C12*
+- ID_MODEL_FROM_DATABASE=GeForce G102M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G102M)
+ pci:v000010DEd00000873sv00001043sd00001C52*
+- ID_MODEL_FROM_DATABASE=GeForce G205M
++ ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] (GeForce G205M)
+ pci:v000010DEd00000874*
+  ID_MODEL_FROM_DATABASE=C79 [ION]
+@@ -25272,7 +25272,7 @@ pci:v000010DEd0000087D*
+  ID_MODEL_FROM_DATABASE=ION VGA
+ pci:v000010DEd0000087Dsv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=ION VGA (IONITX-F-E)
+ pci:v000010DEd0000087E*
+  ID_MODEL_FROM_DATABASE=ION LE VGA
+@@ -25299,7 +25299,7 @@ pci:v000010DEd00000A20*
+  ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 220]
+ pci:v000010DEd00000A20sv00001043sd00008311*
+- ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2
++ ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 220] (ENGT220/DI/1GD3(LP)/V2)
+ pci:v000010DEd00000A21*
+  ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 330M]
+@@ -25368,7 +25368,7 @@ pci:v000010DEd00000A65*
+  ID_MODEL_FROM_DATABASE=GT218 [GeForce 210]
+ pci:v000010DEd00000A65sv00001043sd00008334*
+- ID_MODEL_FROM_DATABASE=EN210 SILENT
++ ID_MODEL_FROM_DATABASE=GT218 [GeForce 210] (EN210 SILENT)
+ pci:v000010DEd00000A66*
+  ID_MODEL_FROM_DATABASE=GT218 [GeForce 310]
+@@ -25389,10 +25389,10 @@ pci:v000010DEd00000A6C*
+  ID_MODEL_FROM_DATABASE=GT218M [NVS 3100M]
+ pci:v000010DEd00000A6Csv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=GT218M [NVS 3100M] (Latitude E6510)
+ pci:v000010DEd00000A6Csv000017AAsd00002142*
+- ID_MODEL_FROM_DATABASE=ThinkPad T410
++ ID_MODEL_FROM_DATABASE=GT218M [NVS 3100M] (ThinkPad T410)
+ pci:v000010DEd00000A6E*
+  ID_MODEL_FROM_DATABASE=GT218M [GeForce 305M]
+@@ -25416,7 +25416,7 @@ pci:v000010DEd00000A74*
+  ID_MODEL_FROM_DATABASE=GT218M [GeForce G210M]
+ pci:v000010DEd00000A74sv00001B0Asd0000903A*
+- ID_MODEL_FROM_DATABASE=GeForce G210
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce G210M] (GeForce G210)
+ pci:v000010DEd00000A75*
+  ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M]
+@@ -25431,127 +25431,127 @@ pci:v000010DEd00000A7A*
+  ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M]
+ pci:v000010DEd00000A7Asv0000104Dsd0000907E*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FC50*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FC61*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FC71*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FC90*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FCC0*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FCD0*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FCE2*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FCF2*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD16*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD40*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD50*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD52*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD61*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD71*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD92*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FD96*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FDD0*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FDD2*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001179sd0000FDFE*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C0A2*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C0B2*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C581*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C587*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C588*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C597*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv0000144Dsd0000C606*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001462sd0000AA51*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001462sd0000AA58*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001462sd0000AC71*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001462sd0000AC81*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001462sd0000AC82*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001462sd0000AE33*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001642sd00003980*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv000017AAsd00003950*
+- ID_MODEL_FROM_DATABASE=GeForce 405M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405M)
+ pci:v000010DEd00000A7Asv000017AAsd0000397D*
+- ID_MODEL_FROM_DATABASE=GeForce 405M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405M)
+ pci:v000010DEd00000A7Asv00001B0Asd00002091*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7Asv00001B0Asd000090B4*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001BFDsd00000003*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001BFDsd00008006*
+- ID_MODEL_FROM_DATABASE=GeForce 405
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 405)
+ pci:v000010DEd00000A7Asv00001BFDsd00008007*
+- ID_MODEL_FROM_DATABASE=GeForce 315M
++ ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] (GeForce 315M)
+ pci:v000010DEd00000A7B*
+  ID_MODEL_FROM_DATABASE=GT218 [GeForce 505]
+@@ -25593,64 +25593,64 @@ pci:v000010DEd00000A98*
+  ID_MODEL_FROM_DATABASE=MCP79 Memory Controller
+ pci:v000010DEd00000A98sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 Memory Controller (iMac 9,1)
+ pci:v000010DEd00000AA0*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge
+ pci:v000010DEd00000AA0sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge (Apple iMac 9,1)
+ pci:v000010DEd00000AA2*
+  ID_MODEL_FROM_DATABASE=MCP79 SMBus
+ pci:v000010DEd00000AA2sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 SMBus (Apple iMac 9,1)
+ pci:v000010DEd00000AA2sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 SMBus (IONITX-F-E)
+ pci:v000010DEd00000AA3*
+  ID_MODEL_FROM_DATABASE=MCP79 Co-processor
+ pci:v000010DEd00000AA3sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 Co-processor (Apple iMac 9,1)
+ pci:v000010DEd00000AA3sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 Co-processor (IONITX-F-E)
+ pci:v000010DEd00000AA4*
+  ID_MODEL_FROM_DATABASE=MCP79 Memory Controller
+ pci:v000010DEd00000AA4sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 Memory Controller (IONITX-F-E)
+ pci:v000010DEd00000AA5*
+  ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller
+ pci:v000010DEd00000AA5sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller (Apple iMac 9,1)
+ pci:v000010DEd00000AA5sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller (IONITX-F-E)
+ pci:v000010DEd00000AA6*
+  ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller
+ pci:v000010DEd00000AA6sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller (Apple iMac 9,1)
+ pci:v000010DEd00000AA6sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller (IONITX-F-E)
+ pci:v000010DEd00000AA7*
+  ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller
+ pci:v000010DEd00000AA7sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller (Apple iMac 9,1)
+ pci:v000010DEd00000AA7sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller (IONITX-F-E)
+ pci:v000010DEd00000AA8*
+  ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller
+@@ -25659,10 +25659,10 @@ pci:v000010DEd00000AA9*
+  ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller
+ pci:v000010DEd00000AA9sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller (Apple iMac 9,1)
+ pci:v000010DEd00000AA9sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller (IONITX-F-E)
+ pci:v000010DEd00000AAA*
+  ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller
+@@ -25671,7 +25671,7 @@ pci:v000010DEd00000AAB*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Bridge
+ pci:v000010DEd00000AABsv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 PCI Bridge (Apple iMac 9,1)
+ pci:v000010DEd00000AAC*
+  ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge
+@@ -25680,13 +25680,13 @@ pci:v000010DEd00000AAD*
+  ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge
+ pci:v000010DEd00000AADsv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge (IONITX-F-E)
+ pci:v000010DEd00000AAE*
+  ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge
+ pci:v000010DEd00000AAEsv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge (Apple iMac 9,1)
+ pci:v000010DEd00000AAF*
+  ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge
+@@ -25695,10 +25695,10 @@ pci:v000010DEd00000AB0*
+  ID_MODEL_FROM_DATABASE=MCP79 Ethernet
+ pci:v000010DEd00000AB0sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 Ethernet (Apple iMac 9,1)
+ pci:v000010DEd00000AB0sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 Ethernet (IONITX-F-E)
+ pci:v000010DEd00000AB1*
+  ID_MODEL_FROM_DATABASE=MCP79 Ethernet
+@@ -25713,7 +25713,7 @@ pci:v000010DEd00000AB4*
+  ID_MODEL_FROM_DATABASE=MCP79 SATA Controller
+ pci:v000010DEd00000AB4sv000019DAsd0000A123*
+- ID_MODEL_FROM_DATABASE=IONITX-F-E
++ ID_MODEL_FROM_DATABASE=MCP79 SATA Controller (IONITX-F-E)
+ pci:v000010DEd00000AB5*
+  ID_MODEL_FROM_DATABASE=MCP79 SATA Controller
+@@ -25731,7 +25731,7 @@ pci:v000010DEd00000AB9*
+  ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller
+ pci:v000010DEd00000AB9sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller (Apple iMac 9,1)
+ pci:v000010DEd00000ABA*
+  ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller
+@@ -25755,7 +25755,7 @@ pci:v000010DEd00000AC0*
+  ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio
+ pci:v000010DEd00000AC0sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio (Apple iMac 9,1)
+ pci:v000010DEd00000AC1*
+  ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio
+@@ -25770,7 +25770,7 @@ pci:v000010DEd00000AC4*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge
+ pci:v000010DEd00000AC4sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge (Apple iMac 9,1)
+ pci:v000010DEd00000AC5*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge
+@@ -25779,13 +25779,13 @@ pci:v000010DEd00000AC6*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge
+ pci:v000010DEd00000AC6sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge (Apple iMac 9,1)
+ pci:v000010DEd00000AC7*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge
+ pci:v000010DEd00000AC7sv000010DEsd0000CB79*
+- ID_MODEL_FROM_DATABASE=Apple iMac 9,1
++ ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge (Apple iMac 9,1)
+ pci:v000010DEd00000AC8*
+  ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge
+@@ -25794,22 +25794,22 @@ pci:v000010DEd00000AD0*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (non-AHCI mode)
+ pci:v000010DEd00000AD0sv00001462sd00007508*
+- ID_MODEL_FROM_DATABASE=K9N2GM-FIH
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) (K9N2GM-FIH)
+ pci:v000010DEd00000AD0sv00001849sd00000AD0*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 IDE
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) (K10N78FullHD-hSLI R3.0 IDE)
+ pci:v000010DEd00000AD4*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] AHCI Controller
+ pci:v000010DEd00000AD4sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] AHCI Controller (Pavilion p6310f)
+ pci:v000010DEd00000AD4sv00001043sd000082E8*
+- ID_MODEL_FROM_DATABASE=M3N72-D
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] AHCI Controller (M3N72-D)
+ pci:v000010DEd00000AD4sv00001849sd00000AD4*
+- ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 AHCI Controller
++ ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] AHCI Controller (K10N78FullHD-hSLI R3.0 AHCI Controller)
+ pci:v000010DEd00000AD8*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (RAID mode)
+@@ -25818,16 +25818,16 @@ pci:v000010DEd00000BE2*
+  ID_MODEL_FROM_DATABASE=GT216 HDMI Audio Controller
+ pci:v000010DEd00000BE2sv00001043sd00008311*
+- ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2
++ ID_MODEL_FROM_DATABASE=GT216 HDMI Audio Controller (ENGT220/DI/1GD3(LP)/V2)
+ pci:v000010DEd00000BE3*
+  ID_MODEL_FROM_DATABASE=High Definition Audio Controller
+ pci:v000010DEd00000BE3sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=High Definition Audio Controller (Latitude E6510)
+ pci:v000010DEd00000BE3sv000010DEsd0000066D*
+- ID_MODEL_FROM_DATABASE=G98 [GeForce 8400GS]
++ ID_MODEL_FROM_DATABASE=High Definition Audio Controller (G98 [GeForce 8400GS])
+ pci:v000010DEd00000BE4*
+  ID_MODEL_FROM_DATABASE=High Definition Audio Controller
+@@ -25839,22 +25839,22 @@ pci:v000010DEd00000BE9*
+  ID_MODEL_FROM_DATABASE=GF106 High Definition Audio Controller
+ pci:v000010DEd00000BE9sv00001558sd00008687*
+- ID_MODEL_FROM_DATABASE=CLEVO/KAPOK W860CU
++ ID_MODEL_FROM_DATABASE=GF106 High Definition Audio Controller (CLEVO/KAPOK W860CU)
+ pci:v000010DEd00000BE9sv00003842sd00001452*
+- ID_MODEL_FROM_DATABASE=GeForce GTS 450
++ ID_MODEL_FROM_DATABASE=GF106 High Definition Audio Controller (GeForce GTS 450)
+ pci:v000010DEd00000BEA*
+  ID_MODEL_FROM_DATABASE=GF108 High Definition Audio Controller
+ pci:v000010DEd00000BEAsv00003842sd00001430*
+- ID_MODEL_FROM_DATABASE=GeForce GT 430
++ ID_MODEL_FROM_DATABASE=GF108 High Definition Audio Controller (GeForce GT 430)
+ pci:v000010DEd00000BEB*
+  ID_MODEL_FROM_DATABASE=GF104 High Definition Audio Controller
+ pci:v000010DEd00000BEBsv00001462sd00002322*
+- ID_MODEL_FROM_DATABASE=N460GTX Cyclone 1GD5/OC
++ ID_MODEL_FROM_DATABASE=GF104 High Definition Audio Controller (N460GTX Cyclone 1GD5/OC)
+ pci:v000010DEd00000BEE*
+  ID_MODEL_FROM_DATABASE=GF116 High Definition Audio Controller
+@@ -25968,7 +25968,7 @@ pci:v000010DEd00000DD1*
+  ID_MODEL_FROM_DATABASE=GF106M [GeForce GTX 460M]
+ pci:v000010DEd00000DD1sv00001558sd00008687*
+- ID_MODEL_FROM_DATABASE=CLEVO/KAPOK W860CU
++ ID_MODEL_FROM_DATABASE=GF106M [GeForce GTX 460M] (CLEVO/KAPOK W860CU)
+ pci:v000010DEd00000DD2*
+  ID_MODEL_FROM_DATABASE=GF106M [GeForce GT 445M]
+@@ -25983,7 +25983,7 @@ pci:v000010DEd00000DD8*
+  ID_MODEL_FROM_DATABASE=GF106GL [Quadro 2000]
+ pci:v000010DEd00000DD8sv000010DEsd00000914*
+- ID_MODEL_FROM_DATABASE=Quadro 2000D
++ ID_MODEL_FROM_DATABASE=GF106GL [Quadro 2000] (Quadro 2000D)
+ pci:v000010DEd00000DDA*
+  ID_MODEL_FROM_DATABASE=GF106GLM [Quadro 2000M]
+@@ -25995,7 +25995,7 @@ pci:v000010DEd00000DE1*
+  ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 430]
+ pci:v000010DEd00000DE1sv00003842sd00001430*
+- ID_MODEL_FROM_DATABASE=GeForce GT 430
++ ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 430] (GeForce GT 430)
+ pci:v000010DEd00000DE2*
+  ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 420]
+@@ -26019,49 +26019,49 @@ pci:v000010DEd00000DE9*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M]
+ pci:v000010DEd00000DE9sv00001025sd00000692*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv00001025sd00000725*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv00001025sd00000728*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv00001025sd0000072B*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv00001025sd0000072E*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv00001025sd00000753*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv00001025sd00000754*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 620M)
+ pci:v000010DEd00000DE9sv000017AAsd00003977*
+- ID_MODEL_FROM_DATABASE=GeForce GT 640M LE
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 640M LE)
+ pci:v000010DEd00000DE9sv00001B0Asd00002210*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] (GeForce GT 635M)
+ pci:v000010DEd00000DEA*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M]
+ pci:v000010DEd00000DEAsv000017AAsd0000365A*
+- ID_MODEL_FROM_DATABASE=GeForce 615
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] (GeForce 615)
+ pci:v000010DEd00000DEAsv000017AAsd0000365B*
+- ID_MODEL_FROM_DATABASE=GeForce 615
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] (GeForce 615)
+ pci:v000010DEd00000DEAsv000017AAsd0000365E*
+- ID_MODEL_FROM_DATABASE=GeForce 615
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] (GeForce 615)
+ pci:v000010DEd00000DEAsv000017AAsd00003660*
+- ID_MODEL_FROM_DATABASE=GeForce 615
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] (GeForce 615)
+ pci:v000010DEd00000DEAsv000017AAsd0000366C*
+- ID_MODEL_FROM_DATABASE=GeForce 615
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] (GeForce 615)
+ pci:v000010DEd00000DEB*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 555M]
+@@ -26094,10 +26094,10 @@ pci:v000010DEd00000DF4*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M]
+ pci:v000010DEd00000DF4sv0000152Dsd00000952*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M] (GeForce GT 630M)
+ pci:v000010DEd00000DF4sv0000152Dsd00000953*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M] (GeForce GT 630M)
+ pci:v000010DEd00000DF5*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 525M]
+@@ -26124,7 +26124,7 @@ pci:v000010DEd00000E08*
+  ID_MODEL_FROM_DATABASE=GF119 HDMI Audio Controller
+ pci:v000010DEd00000E08sv000010B0sd0000104A*
+- ID_MODEL_FROM_DATABASE=Gainward GeForce GT 610
++ ID_MODEL_FROM_DATABASE=GF119 HDMI Audio Controller (Gainward GeForce GT 610)
+ pci:v000010DEd00000E09*
+  ID_MODEL_FROM_DATABASE=GF110 High Definition Audio Controller
+@@ -26145,16 +26145,16 @@ pci:v000010DEd00000E1B*
+  ID_MODEL_FROM_DATABASE=GK107 HDMI Audio Controller
+ pci:v000010DEd00000E1Bsv0000103Csd0000197B*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=GK107 HDMI Audio Controller (ZBook 15)
+ pci:v000010DEd00000E1Bsv00001043sd00008428*
+- ID_MODEL_FROM_DATABASE=GTX650-DC-1GD5
++ ID_MODEL_FROM_DATABASE=GK107 HDMI Audio Controller (GTX650-DC-1GD5)
+ pci:v000010DEd00000E22*
+  ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460]
+ pci:v000010DEd00000E22sv00001462sd00002322*
+- ID_MODEL_FROM_DATABASE=N460GTX Cyclone 1GD5/OC
++ ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460] (N460GTX Cyclone 1GD5/OC)
+ pci:v000010DEd00000E23*
+  ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460 SE]
+@@ -26193,7 +26193,7 @@ pci:v000010DEd00000FC6*
+  ID_MODEL_FROM_DATABASE=GK107 [GeForce GTX 650]
+ pci:v000010DEd00000FC6sv00001043sd00008428*
+- ID_MODEL_FROM_DATABASE=GTX650-DC-1GD5
++ ID_MODEL_FROM_DATABASE=GK107 [GeForce GTX 650] (GTX650-DC-1GD5)
+ pci:v000010DEd00000FCD*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M]
+@@ -26205,34 +26205,34 @@ pci:v000010DEd00000FD1*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M]
+ pci:v000010DEd00000FD1sv00001043sd00001597*
+- ID_MODEL_FROM_DATABASE=GeForce GT 650M
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] (GeForce GT 650M)
+ pci:v000010DEd00000FD1sv00001043sd000015A7*
+- ID_MODEL_FROM_DATABASE=GeForce GT 650M
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] (GeForce GT 650M)
+ pci:v000010DEd00000FD1sv00001043sd00002103*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] (N56VZ)
+ pci:v000010DEd00000FD1sv00001043sd00002105*
+- ID_MODEL_FROM_DATABASE=GeForce GT 650M
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] (GeForce GT 650M)
+ pci:v000010DEd00000FD1sv00001043sd00002141*
+- ID_MODEL_FROM_DATABASE=GeForce GT 650M
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] (GeForce GT 650M)
+ pci:v000010DEd00000FD2*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M]
+ pci:v000010DEd00000FD2sv00001028sd0000054F*
+- ID_MODEL_FROM_DATABASE=GeForce GT 640M
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M] (GeForce GT 640M)
+ pci:v000010DEd00000FD2sv00001028sd0000055F*
+- ID_MODEL_FROM_DATABASE=GeForce GT 640M
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M] (GeForce GT 640M)
+ pci:v000010DEd00000FD2sv00001028sd00000595*
+- ID_MODEL_FROM_DATABASE=GeForce GT 640M LE
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M] (GeForce GT 640M LE)
+ pci:v000010DEd00000FD2sv00001028sd000005B2*
+- ID_MODEL_FROM_DATABASE=GeForce GT 640M LE
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M] (GeForce GT 640M LE)
+ pci:v000010DEd00000FD3*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M LE]
+@@ -26265,7 +26265,7 @@ pci:v000010DEd00000FE3*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M]
+ pci:v000010DEd00000FE3sv000017AAsd00003675*
+- ID_MODEL_FROM_DATABASE=GeForce GT 745A
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M] (GeForce GT 745A)
+ pci:v000010DEd00000FE4*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 750M]
+@@ -26280,7 +26280,7 @@ pci:v000010DEd00000FE7*
+  ID_MODEL_FROM_DATABASE=GK107GL [GRID K100 vGPU]
+ pci:v000010DEd00000FE7sv000010DEsd0000101E*
+- ID_MODEL_FROM_DATABASE=GRID K100
++ ID_MODEL_FROM_DATABASE=GK107GL [GRID K100 vGPU] (GRID K100)
+ pci:v000010DEd00000FE9*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 750M Mac Edition]
+@@ -26304,13 +26304,13 @@ pci:v000010DEd00000FF6*
+  ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1100M]
+ pci:v000010DEd00000FF6sv0000103Csd0000197B*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1100M] (ZBook 15)
+ pci:v000010DEd00000FF7*
+  ID_MODEL_FROM_DATABASE=GK107GL [GRID K140Q vGPU]
+ pci:v000010DEd00000FF7sv000010DEsd00001037*
+- ID_MODEL_FROM_DATABASE=GRID K140Q
++ ID_MODEL_FROM_DATABASE=GK107GL [GRID K140Q vGPU] (GRID K140Q)
+ pci:v000010DEd00000FF8*
+  ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K500M]
+@@ -26343,37 +26343,37 @@ pci:v000010DEd00001004*
+  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780]
+ pci:v000010DEd00001004sv00003842sd00000784*
+- ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 SC w/ ACX Cooler]
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780] (GK110B [GeForce GTX 780 SC w/ ACX Cooler])
+ pci:v000010DEd00001004sv00003842sd00001784*
+- ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler]
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780] (GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler])
+ pci:v000010DEd00001004sv00003842sd00001788*
+- ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler]
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780] (GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler])
+ pci:v000010DEd00001005*
+  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan]
+ pci:v000010DEd00001005sv00001043sd00008451*
+- ID_MODEL_FROM_DATABASE=GTXTITAN-6GD5
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GTXTITAN-6GD5)
+ pci:v000010DEd00001005sv000010DEsd00001035*
+- ID_MODEL_FROM_DATABASE=GeForce GTX Titan
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GeForce GTX Titan)
+ pci:v000010DEd00001005sv00003842sd00002790*
+- ID_MODEL_FROM_DATABASE=GeForce GTX Titan
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GeForce GTX Titan)
+ pci:v000010DEd00001005sv00003842sd00002791*
+- ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GeForce GTX Titan SC)
+ pci:v000010DEd00001005sv00003842sd00002793*
+- ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Signature
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GeForce GTX Titan SC Signature)
+ pci:v000010DEd00001005sv00003842sd00002794*
+- ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GeForce GTX Titan SC Hydro Copper)
+ pci:v000010DEd00001005sv00003842sd00002795*
+- ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] (GeForce GTX Titan SC Hydro Copper Signature)
+ pci:v000010DEd00001007*
+  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780 Rev. 2]
+@@ -26436,7 +26436,7 @@ pci:v000010DEd0000104A*
+  ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 610]
+ pci:v000010DEd0000104Asv000010B0sd0000104A*
+- ID_MODEL_FROM_DATABASE=Gainward GeForce GT 610
++ ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 610] (Gainward GeForce GT 610)
+ pci:v000010DEd0000104B*
+  ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 625 OEM]
+@@ -26469,37 +26469,37 @@ pci:v000010DEd00001058*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
+ pci:v000010DEd00001058sv0000103Csd00002AED*
+- ID_MODEL_FROM_DATABASE=GeForce 610
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 610)
+ pci:v000010DEd00001058sv0000103Csd00002AF1*
+- ID_MODEL_FROM_DATABASE=GeForce 610
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 610)
+ pci:v000010DEd00001058sv00001043sd000010AC*
+- ID_MODEL_FROM_DATABASE=GeForce GT 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce GT 610M)
+ pci:v000010DEd00001058sv00001043sd000010BC*
+- ID_MODEL_FROM_DATABASE=GeForce GT 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce GT 610M)
+ pci:v000010DEd00001058sv00001043sd00001652*
+- ID_MODEL_FROM_DATABASE=GeForce GT 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce GT 610M)
+ pci:v000010DEd00001058sv000017AAsd0000367A*
+- ID_MODEL_FROM_DATABASE=GeForce 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 610M)
+ pci:v000010DEd00001058sv000017AAsd00003682*
+- ID_MODEL_FROM_DATABASE=GeForce 800A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 800A)
+ pci:v000010DEd00001058sv000017AAsd00003687*
+- ID_MODEL_FROM_DATABASE=GeForce 800A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 800A)
+ pci:v000010DEd00001058sv000017AAsd00003692*
+- ID_MODEL_FROM_DATABASE=GeForce 705A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 705A)
+ pci:v000010DEd00001058sv000017AAsd00003695*
+- ID_MODEL_FROM_DATABASE=GeForce 800A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 800A)
+ pci:v000010DEd00001058sv000017AAsd0000A117*
+- ID_MODEL_FROM_DATABASE=GeForce 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce 610M)
+ pci:v000010DEd00001059*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
+@@ -26508,25 +26508,25 @@ pci:v000010DEd0000105A*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
+ pci:v000010DEd0000105Asv00001043sd00002111*
+- ID_MODEL_FROM_DATABASE=GeForce GT 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce GT 610M)
+ pci:v000010DEd0000105Asv00001043sd00002112*
+- ID_MODEL_FROM_DATABASE=GeForce GT 610M
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] (GeForce GT 610M)
+ pci:v000010DEd0000105B*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 705M]
+ pci:v000010DEd0000105Bsv0000103Csd00002AFB*
+- ID_MODEL_FROM_DATABASE=GeForce 705A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 705M] (GeForce 705A)
+ pci:v000010DEd0000105Bsv000017AAsd0000309D*
+- ID_MODEL_FROM_DATABASE=GeForce 705A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 705M] (GeForce 705A)
+ pci:v000010DEd0000105Bsv000017AAsd000030B1*
+- ID_MODEL_FROM_DATABASE=GeForce 800A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 705M] (GeForce 800A)
+ pci:v000010DEd0000105Bsv000017AAsd000036A1*
+- ID_MODEL_FROM_DATABASE=GeForce 800A
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 705M] (GeForce 800A)
+ pci:v000010DEd0000107C*
+  ID_MODEL_FROM_DATABASE=GF119 [NVS 315]
+@@ -26541,7 +26541,7 @@ pci:v000010DEd00001081*
+  ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 570]
+ pci:v000010DEd00001081sv000010DEsd0000087E*
+- ID_MODEL_FROM_DATABASE=Leadtek WinFast GTX 570
++ ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 570] (Leadtek WinFast GTX 570)
+ pci:v000010DEd00001082*
+  ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 560 Ti OEM]
+@@ -26571,31 +26571,31 @@ pci:v000010DEd00001091*
+  ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2090]
+ pci:v000010DEd00001091sv000010DEsd0000088E*
+- ID_MODEL_FROM_DATABASE=Tesla X2090
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2090] (Tesla X2090)
+ pci:v000010DEd00001091sv000010DEsd00000891*
+- ID_MODEL_FROM_DATABASE=Tesla X2090
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2090] (Tesla X2090)
+ pci:v000010DEd00001091sv000010DEsd00000974*
+- ID_MODEL_FROM_DATABASE=Tesla X2090
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2090] (Tesla X2090)
+ pci:v000010DEd00001091sv000010DEsd0000098D*
+- ID_MODEL_FROM_DATABASE=Tesla X2090
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2090] (Tesla X2090)
+ pci:v000010DEd00001094*
+  ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2075]
+ pci:v000010DEd00001094sv000010DEsd00000888*
+- ID_MODEL_FROM_DATABASE=Tesla M2075
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2075] (Tesla M2075)
+ pci:v000010DEd00001096*
+  ID_MODEL_FROM_DATABASE=GF110GL [Tesla C2050 / C2075]
+ pci:v000010DEd00001096sv000010DEsd00000910*
+- ID_MODEL_FROM_DATABASE=Tesla C2075
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla C2050 / C2075] (Tesla C2075)
+ pci:v000010DEd00001096sv000010DEsd00000911*
+- ID_MODEL_FROM_DATABASE=Tesla C2050
++ ID_MODEL_FROM_DATABASE=GF110GL [Tesla C2050 / C2075] (Tesla C2050)
+ pci:v000010DEd0000109A*
+  ID_MODEL_FROM_DATABASE=GF100GLM [Quadro 5010M]
+@@ -26604,7 +26604,7 @@ pci:v000010DEd0000109B*
+  ID_MODEL_FROM_DATABASE=GF100GL [Quadro 7000]
+ pci:v000010DEd0000109Bsv000010DEsd00000918*
+- ID_MODEL_FROM_DATABASE=Quadro 7000
++ ID_MODEL_FROM_DATABASE=GF100GL [Quadro 7000] (Quadro 7000)
+ pci:v000010DEd000010C0*
+  ID_MODEL_FROM_DATABASE=GT218 [GeForce 9300 GS Rev. 2]
+@@ -26622,622 +26622,622 @@ pci:v000010DEd00001140*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M]
+ pci:v000010DEd00001140sv00001025sd00000600*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000606*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd0000064A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd0000064C*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd0000067A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000680*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000686*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd00000689*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000068B*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000068D*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000068E*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd00000691*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd00000692*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000694*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000702*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000719*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000725*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000728*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd0000072B*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd0000072E*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000732*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001025sd00000763*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000773*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd00000774*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd00000776*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd0000077A*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000077B*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000077C*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000077D*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000077E*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd0000077F*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001025sd00000781*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000798*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000799*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd0000079B*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd0000079C*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000807*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000821*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000823*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000830*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000837*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001025sd00000841*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001028sd0000054D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd0000054E*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd00000554*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001028sd00000557*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001028sd00000562*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd00000565*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd00000568*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd00000590*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd00000592*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd00000594*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd00000595*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd000005A2*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd000005B1*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd000005B3*
+- ID_MODEL_FROM_DATABASE=GeForce GT 625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ pci:v000010DEd00001140sv00001028sd000005DA*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd000005DE*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001028sd000005E0*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001028sd000005E8*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv00001028sd000005F4*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv0000103Csd000018EF*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000103Csd000018F9*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000103Csd000018FB*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000103Csd000018FD*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000103Csd000018FF*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000103Csd00002AEF*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A)
+ pci:v000010DEd00001140sv0000103Csd00002AF9*
+- ID_MODEL_FROM_DATABASE=GeForce 710A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710A)
+ pci:v000010DEd00001140sv00001043sd000010DD*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv00001043sd000010ED*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv00001043sd000011FD*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd0000124D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd0000126D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd0000131D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd000013FD*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd000014C7*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd00001507*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001043sd000015AD*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd000015ED*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd0000160D*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd0000163D*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd0000166D*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd000016CD*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd000016DD*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd0000170D*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd00002132*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001043sd00002136*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv00001043sd000021BA*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd000021FA*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd0000220A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd0000221A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001043sd0000223A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
+ pci:v000010DEd00001140sv00001043sd0000224A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
+ pci:v000010DEd00001140sv00001043sd0000227A*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd0000228A*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001043sd00008595*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001072sd0000152D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000010CFsd000017F5*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001179sd0000FA01*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA02*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA03*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA05*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA11*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA13*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA18*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA19*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA21*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA23*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA2A*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA32*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA33*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA36*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA38*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA42*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA43*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA45*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA47*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA49*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA58*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA59*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA88*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001179sd0000FA89*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv0000144Dsd0000B092*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv0000144Dsd0000C0D5*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000144Dsd0000C0D7*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv0000144Dsd0000C0E2*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv0000144Dsd0000C0E3*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv0000144Dsd0000C0E4*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv0000144Dsd0000C652*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv0000144Dsd0000C709*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv0000144Dsd0000C711*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv0000144Dsd0000C736*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001462sd000010B8*
+- ID_MODEL_FROM_DATABASE=GeForce GT 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
+ pci:v000010DEd00001140sv00001462sd000010E9*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001462sd00001116*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001462sd0000AA33*
+- ID_MODEL_FROM_DATABASE=GeForce 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ pci:v000010DEd00001140sv00001462sd0000AAA2*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001462sd0000AAA3*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001462sd0000AE71*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv0000152Dsd00000926*
+- ID_MODEL_FROM_DATABASE=GeForce 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 620M)
+ pci:v000010DEd00001140sv0000152Dsd00000982*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000152Dsd00000983*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000152Dsd00001012*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv0000152Dsd00001030*
+- ID_MODEL_FROM_DATABASE=GeForce GT 630M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ pci:v000010DEd00001140sv0000152Dsd00001055*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv0000152Dsd00001067*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv0000152Dsd00001072*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00002200*
+- ID_MODEL_FROM_DATABASE=NVS 5200M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ pci:v000010DEd00001140sv000017AAsd00002213*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00002220*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd0000309C*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A)
+ pci:v000010DEd00001140sv000017AAsd000030B4*
+- ID_MODEL_FROM_DATABASE=GeForce 820A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ pci:v000010DEd00001140sv000017AAsd00003656*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv000017AAsd0000365A*
+- ID_MODEL_FROM_DATABASE=GeForce 705M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
+ pci:v000010DEd00001140sv000017AAsd0000365E*
+- ID_MODEL_FROM_DATABASE=GeForce 800M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ pci:v000010DEd00001140sv000017AAsd0000366C*
+- ID_MODEL_FROM_DATABASE=GeForce 800M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ pci:v000010DEd00001140sv000017AAsd00003685*
+- ID_MODEL_FROM_DATABASE=GeForce 800M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ pci:v000010DEd00001140sv000017AAsd00003686*
+- ID_MODEL_FROM_DATABASE=GeForce 800M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ pci:v000010DEd00001140sv000017AAsd00003687*
+- ID_MODEL_FROM_DATABASE=GeForce 705A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705A)
+ pci:v000010DEd00001140sv000017AAsd00003696*
+- ID_MODEL_FROM_DATABASE=GeForce 820A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ pci:v000010DEd00001140sv000017AAsd0000369B*
+- ID_MODEL_FROM_DATABASE=GeForce 820A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ pci:v000010DEd00001140sv000017AAsd0000369C*
+- ID_MODEL_FROM_DATABASE=GeForce 820A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ pci:v000010DEd00001140sv000017AAsd0000369D*
+- ID_MODEL_FROM_DATABASE=GeForce 820A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ pci:v000010DEd00001140sv000017AAsd0000369E*
+- ID_MODEL_FROM_DATABASE=GeForce 820A
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ pci:v000010DEd00001140sv000017AAsd00003800*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003801*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003802*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003803*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003804*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003901*
+- ID_MODEL_FROM_DATABASE=GeForce 610M / GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M / GT 620M)
+ pci:v000010DEd00001140sv000017AAsd00003902*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd00003903*
+- ID_MODEL_FROM_DATABASE=GeForce 610M/710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M/710M)
+ pci:v000010DEd00001140sv000017AAsd00003904*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M/625M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M/625M)
+ pci:v000010DEd00001140sv000017AAsd00003905*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003910*
+- ID_MODEL_FROM_DATABASE=GeForce 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ pci:v000010DEd00001140sv000017AAsd00003912*
+- ID_MODEL_FROM_DATABASE=GeForce 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ pci:v000010DEd00001140sv000017AAsd00003977*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00003983*
+- ID_MODEL_FROM_DATABASE=GeForce 610M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M)
+ pci:v000010DEd00001140sv000017AAsd00005001*
+- ID_MODEL_FROM_DATABASE=GeForce 610M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M)
+ pci:v000010DEd00001140sv000017AAsd00005003*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00005005*
+- ID_MODEL_FROM_DATABASE=GeForce 705M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
+ pci:v000010DEd00001140sv000017AAsd0000500D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv000017AAsd00005014*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd00005017*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd00005019*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000501A*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000501F*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd00005025*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd00005027*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000502A*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000502B*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd0000502D*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000502E*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd0000502F*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv000017AAsd0000503E*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000503F*
+- ID_MODEL_FROM_DATABASE=GeForce 820M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ pci:v000010DEd00001140sv00001854sd00000177*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001854sd00000180*
+- ID_MODEL_FROM_DATABASE=GeForce 710M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv00001854sd00000190*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001854sd00000192*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001140sv00001B0Asd000020DD*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001B0Asd000020DF*
+- ID_MODEL_FROM_DATABASE=GeForce GT 620M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ pci:v000010DEd00001140sv00001B0Asd00002202*
+- ID_MODEL_FROM_DATABASE=GeForce GT 720M
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ pci:v000010DEd00001180*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680]
+ pci:v000010DEd00001180sv00001043sd000083F1*
+- ID_MODEL_FROM_DATABASE=GTX680-DC2-2GD5
++ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] (GTX680-DC2-2GD5)
+ pci:v000010DEd00001180sv00003842sd00003682*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 680 Mac Edition
++ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] (GeForce GTX 680 Mac Edition)
+ pci:v000010DEd00001182*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti]
+@@ -27252,7 +27252,7 @@ pci:v000010DEd00001185*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 OEM]
+ pci:v000010DEd00001185sv000010DEsd0000106F*
+- ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 OEM]
++ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 OEM] (GK104 [GeForce GTX 760 OEM])
+ pci:v000010DEd00001187*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760]
+@@ -27264,7 +27264,7 @@ pci:v000010DEd00001189*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 670]
+ pci:v000010DEd00001189sv000010DEsd00001074*
+- ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
++ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 670] (GK104 [GeForce GTX 760 Ti OEM])
+ pci:v000010DEd0000118A*
+  ID_MODEL_FROM_DATABASE=GK104GL [GRID K520]
+@@ -27279,7 +27279,7 @@ pci:v000010DEd0000118D*
+  ID_MODEL_FROM_DATABASE=GK104GL [GRID K200 vGPU]
+ pci:v000010DEd0000118Dsv000010DEsd0000101D*
+- ID_MODEL_FROM_DATABASE=GRID K200
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K200 vGPU] (GRID K200)
+ pci:v000010DEd0000118E*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 OEM]
+@@ -27324,7 +27324,7 @@ pci:v000010DEd000011A3*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 680MX]
+ pci:v000010DEd000011A3sv0000106Bsd0000010D*
+- ID_MODEL_FROM_DATABASE=iMac 13,2
++ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 680MX] (iMac 13,2)
+ pci:v000010DEd000011A7*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 675MX]
+@@ -27333,10 +27333,10 @@ pci:v000010DEd000011B0*
+  ID_MODEL_FROM_DATABASE=GK104GL [GRID K240Q\K260Q vGPU]
+ pci:v000010DEd000011B0sv000010DEsd0000101A*
+- ID_MODEL_FROM_DATABASE=GRID K240Q
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K240Q\K260Q vGPU] (GRID K240Q)
+ pci:v000010DEd000011B0sv000010DEsd0000101B*
+- ID_MODEL_FROM_DATABASE=GRID K260Q
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K240Q\K260Q vGPU] (GRID K260Q)
+ pci:v000010DEd000011B1*
+  ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 Tesla USM]
+@@ -27375,28 +27375,28 @@ pci:v000010DEd000011C2*
+  ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost]
+ pci:v000010DEd000011C2sv00001043sd0000845B*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost DirectCU II OC
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] (GeForce GTX 650 Ti Boost DirectCU II OC)
+ pci:v000010DEd000011C2sv00001462sd00002874*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost TwinFrozr II OC
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] (GeForce GTX 650 Ti Boost TwinFrozr II OC)
+ pci:v000010DEd000011C2sv00001569sd000011C2*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost OC
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] (GeForce GTX 650 Ti Boost OC)
+ pci:v000010DEd000011C2sv000019DAsd00001281*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost OC
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] (GeForce GTX 650 Ti Boost OC)
+ pci:v000010DEd000011C2sv00003842sd00003657*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] (GeForce GTX 650 Ti Boost)
+ pci:v000010DEd000011C2sv00003842sd00003658*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost Superclocked
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] (GeForce GTX 650 Ti Boost Superclocked)
+ pci:v000010DEd000011C3*
+  ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti OEM]
+ pci:v000010DEd000011C3sv000010DEsd00001030*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti OEM
++ ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti OEM] (GeForce GTX 650 Ti OEM)
+ pci:v000010DEd000011C4*
+  ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 645 OEM]
+@@ -27423,7 +27423,7 @@ pci:v000010DEd000011E3*
+  ID_MODEL_FROM_DATABASE=GK106M [GeForce GTX 760M]
+ pci:v000010DEd000011E3sv000017AAsd00003683*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 760A
++ ID_MODEL_FROM_DATABASE=GK106M [GeForce GTX 760M] (GeForce GTX 760A)
+ pci:v000010DEd000011FA*
+  ID_MODEL_FROM_DATABASE=GK106GL [Quadro K4000]
+@@ -27486,55 +27486,55 @@ pci:v000010DEd00001247*
+  ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M]
+ pci:v000010DEd00001247sv00001043sd00001752*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001247sv00001043sd00002050*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001247sv00001043sd00002051*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001247sv00001043sd0000212A*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 635M)
+ pci:v000010DEd00001247sv00001043sd0000212B*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 635M)
+ pci:v000010DEd00001247sv00001043sd0000212C*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 635M)
+ pci:v000010DEd00001247sv0000152Dsd00000930*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 635M)
+ pci:v000010DEd00001248*
+  ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M]
+ pci:v000010DEd00001248sv0000152Dsd00000930*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 635M)
+ pci:v000010DEd00001248sv000017C0sd000010E7*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv000017C0sd000010E8*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv000017C0sd000010EA*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv00001854sd00000890*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv00001854sd00000891*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv00001854sd00001795*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv00001854sd00001796*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001248sv00001854sd00003005*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd00001249*
+  ID_MODEL_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 3]
+@@ -27546,19 +27546,19 @@ pci:v000010DEd0000124D*
+  ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M]
+ pci:v000010DEd0000124Dsv00001028sd00000491*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd0000124Dsv00001028sd00000570*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd0000124Dsv00001028sd00000571*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd0000124Dsv00001462sd0000108D*
+- ID_MODEL_FROM_DATABASE=GeForce GT 555M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 555M)
+ pci:v000010DEd0000124Dsv00001462sd000010CC*
+- ID_MODEL_FROM_DATABASE=GeForce GT 635M
++ ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] (GeForce GT 635M)
+ pci:v000010DEd00001251*
+  ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 560M]
+@@ -27582,16 +27582,16 @@ pci:v000010DEd00001290*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M]
+ pci:v000010DEd00001290sv0000103Csd00002AFA*
+- ID_MODEL_FROM_DATABASE=GeForce GT 730A
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M] (GeForce GT 730A)
+ pci:v000010DEd00001290sv0000103Csd00002B04*
+- ID_MODEL_FROM_DATABASE=GeForce GT 730A
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M] (GeForce GT 730A)
+ pci:v000010DEd00001290sv00001043sd000013AD*
+- ID_MODEL_FROM_DATABASE=GeForce GT 730M
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M] (GeForce GT 730M)
+ pci:v000010DEd00001290sv00001043sd000013CD*
+- ID_MODEL_FROM_DATABASE=GeForce GT 730M
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M] (GeForce GT 730M)
+ pci:v000010DEd00001291*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 735M]
+@@ -27600,10 +27600,10 @@ pci:v000010DEd00001292*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 740M]
+ pci:v000010DEd00001292sv000017AAsd00003675*
+- ID_MODEL_FROM_DATABASE=GeForce GT 740A
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 740M] (GeForce GT 740A)
+ pci:v000010DEd00001292sv000017AAsd00003684*
+- ID_MODEL_FROM_DATABASE=GeForce GT 740A
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 740M] (GeForce GT 740A)
+ pci:v000010DEd00001293*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M]
+@@ -27636,13 +27636,13 @@ pci:v000010DEd00001341*
+  ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M]
+ pci:v000010DEd00001341sv000017AAsd00003697*
+- ID_MODEL_FROM_DATABASE=GeForce 840A
++ ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M] (GeForce 840A)
+ pci:v000010DEd00001341sv000017AAsd00003699*
+- ID_MODEL_FROM_DATABASE=GeForce 840A
++ ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M] (GeForce 840A)
+ pci:v000010DEd00001341sv000017AAsd0000369C*
+- ID_MODEL_FROM_DATABASE=GeForce 840A
++ ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M] (GeForce 840A)
+ pci:v000010DEd00001380*
+  ID_MODEL_FROM_DATABASE=GM107 [GeForce GTX 750 Ti]
+@@ -27660,10 +27660,10 @@ pci:v000010DEd00001391*
+  ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 850M]
+ pci:v000010DEd00001391sv000017AAsd00003697*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 850A
++ ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 850M] (GeForce GTX 850A)
+ pci:v000010DEd00001391sv000017AAsd0000A125*
+- ID_MODEL_FROM_DATABASE=GeForce GTX 850A
++ ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 850M] (GeForce GTX 850A)
+ pci:v000010DEd00001392*
+  ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 860M]
+@@ -27678,13 +27678,13 @@ pci:v000010DFd00000720*
+  ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk)
+ pci:v000010DFd00000720sv000017AAsd00001056*
+- ID_MODEL_FROM_DATABASE=ThinkServer OCm14102-UX-L AnyFabric
++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14102-UX-L AnyFabric)
+ pci:v000010DFd00000720sv000017AAsd00001057*
+- ID_MODEL_FROM_DATABASE=ThinkServer OCm14104-UX-L AnyFabric
++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14104-UX-L AnyFabric)
+ pci:v000010DFd00000720sv000017AAsd00001059*
+- ID_MODEL_FROM_DATABASE=ThinkServer OCm14104-UT-L AnyFabric
++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14104-UT-L AnyFabric)
+ pci:v000010DFd00000722*
+  ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk)
+@@ -27729,10 +27729,10 @@ pci:v000010DFd0000E220*
+  ID_MODEL_FROM_DATABASE=OneConnect NIC (Lancer)
+ pci:v000010DFd0000E220sv000017AAsd00001054*
+- ID_MODEL_FROM_DATABASE=ThinkServer LPm16002B-M6-L AnyFabric
++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Lancer) (ThinkServer LPm16002B-M6-L AnyFabric)
+ pci:v000010DFd0000E220sv000017AAsd00001055*
+- ID_MODEL_FROM_DATABASE=ThinkServer LPm16004B-M8-L AnyFabric
++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Lancer) (ThinkServer LPm16004B-M8-L AnyFabric)
+ pci:v000010DFd0000E240*
+  ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Lancer)
+@@ -27831,7 +27831,7 @@ pci:v000010DFd0000FC00*
+  ID_MODEL_FROM_DATABASE=Thor-X LightPulse Fibre Channel Host Adapter
+ pci:v000010DFd0000FC00sv000010DFsd0000FC00*
+- ID_MODEL_FROM_DATABASE=LP10000 LightPulse Fibre Channel Host Adapter
++ ID_MODEL_FROM_DATABASE=Thor-X LightPulse Fibre Channel Host Adapter (LP10000 LightPulse Fibre Channel Host Adapter)
+ pci:v000010DFd0000FC10*
+  ID_MODEL_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter
+@@ -27897,7 +27897,7 @@ pci:v000010E1d00000391*
+  ID_MODEL_FROM_DATABASE=TRM-S1040
+ pci:v000010E1d00000391sv000010E1sd00000391*
+- ID_MODEL_FROM_DATABASE=DC-315U SCSI-3 Host Adapter
++ ID_MODEL_FROM_DATABASE=TRM-S1040 (DC-315U SCSI-3 Host Adapter)
+ pci:v000010E1d0000690C*
+  ID_MODEL_FROM_DATABASE=DC-690c
+@@ -27921,7 +27921,7 @@ pci:v000010E3d00000148*
+  ID_MODEL_FROM_DATABASE=Tsi148 [Tempe]
+ pci:v000010E3d00000148sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=Tsi148 [Tempe] (VR11 Single Board Computer)
+ pci:v000010E3d00000860*
+  ID_MODEL_FROM_DATABASE=CA91C860 [QSpan]
+@@ -28107,25 +28107,25 @@ pci:v000010ECd00005227*
+  ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader
+ pci:v000010ECd00005227sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader (ThinkPad T440p)
+ pci:v000010ECd00005227sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader (ThinkPad X240)
+ pci:v000010ECd00005229*
+  ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader
+ pci:v000010ECd00005229sv00001025sd00000813*
+- ID_MODEL_FROM_DATABASE=Aspire R7-571
++ ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader (Aspire R7-571)
+ pci:v000010ECd00005229sv0000103Csd0000194E*
+- ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++ ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader (ProBook 455 G1 Notebook)
+ pci:v000010ECd00005249*
+  ID_MODEL_FROM_DATABASE=RTS5249 PCI Express Card Reader
+ pci:v000010ECd00005249sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=RTS5249 PCI Express Card Reader (ZBook 15)
+ pci:v000010ECd00005288*
+  ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader
+@@ -28134,334 +28134,334 @@ pci:v000010ECd00008029*
+  ID_MODEL_FROM_DATABASE=RTL-8029(AS)
+ pci:v000010ECd00008029sv000010B8sd00002011*
+- ID_MODEL_FROM_DATABASE=EZ-Card (SMC1208)
++ ID_MODEL_FROM_DATABASE=RTL-8029(AS) (EZ-Card (SMC1208))
+ pci:v000010ECd00008029sv000010ECsd00008029*
+  ID_MODEL_FROM_DATABASE=RTL-8029(AS)
+ pci:v000010ECd00008029sv00001113sd00001208*
+- ID_MODEL_FROM_DATABASE=EN1208
++ ID_MODEL_FROM_DATABASE=RTL-8029(AS) (EN1208)
+ pci:v000010ECd00008029sv00001186sd00000300*
+- ID_MODEL_FROM_DATABASE=DE-528
++ ID_MODEL_FROM_DATABASE=RTL-8029(AS) (DE-528)
+ pci:v000010ECd00008029sv00001259sd00002400*
+- ID_MODEL_FROM_DATABASE=AT-2400
++ ID_MODEL_FROM_DATABASE=RTL-8029(AS) (AT-2400)
+ pci:v000010ECd00008029sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=RTL-8029(AS) (QEMU Virtual Machine)
+ pci:v000010ECd00008129*
+  ID_MODEL_FROM_DATABASE=RTL-8129
+ pci:v000010ECd00008129sv000010ECsd00008129*
+- ID_MODEL_FROM_DATABASE=RT8129 Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RTL-8129 (RT8129 Fast Ethernet Adapter)
+ pci:v000010ECd00008129sv000011ECsd00008129*
+- ID_MODEL_FROM_DATABASE=RTL8111/8168 PCIe Gigabit Ethernet (misconfigured)
++ ID_MODEL_FROM_DATABASE=RTL-8129 (RTL8111/8168 PCIe Gigabit Ethernet (misconfigured))
+ pci:v000010ECd00008136*
+  ID_MODEL_FROM_DATABASE=RTL8101E/RTL8102E PCI Express Fast Ethernet controller
+ pci:v000010ECd00008136sv0000103Csd00002AB1*
+- ID_MODEL_FROM_DATABASE=Pavillion p6774
++ ID_MODEL_FROM_DATABASE=RTL8101E/RTL8102E PCI Express Fast Ethernet controller (Pavillion p6774)
+ pci:v000010ECd00008136sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=RTL8101E/RTL8102E PCI Express Fast Ethernet controller (Pavilion dv6700)
+ pci:v000010ECd00008136sv00001179sd0000FF64*
+- ID_MODEL_FROM_DATABASE=RTL8102E PCI-E Fast Ethernet NIC
++ ID_MODEL_FROM_DATABASE=RTL8101E/RTL8102E PCI Express Fast Ethernet controller (RTL8102E PCI-E Fast Ethernet NIC)
+ pci:v000010ECd00008138*
+  ID_MODEL_FROM_DATABASE=RT8139 (B/C) Cardbus Fast Ethernet Adapter
+ pci:v000010ECd00008138sv000010ECsd00008138*
+- ID_MODEL_FROM_DATABASE=RT8139 (B/C) Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RT8139 (B/C) Cardbus Fast Ethernet Adapter (RT8139 (B/C) Fast Ethernet Adapter)
+ pci:v000010ECd00008139*
+  ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
+ pci:v000010ECd00008139sv00000357sd0000000A*
+- ID_MODEL_FROM_DATABASE=TTP-Monitoring Card V2.0
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (TTP-Monitoring Card V2.0)
+ pci:v000010ECd00008139sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (TravelMate 290)
+ pci:v000010ECd00008139sv00001025sd00008920*
+- ID_MODEL_FROM_DATABASE=ALN-325
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (ALN-325)
+ pci:v000010ECd00008139sv00001025sd00008921*
+- ID_MODEL_FROM_DATABASE=ALN-325
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (ALN-325)
+ pci:v000010ECd00008139sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (NX9500)
+ pci:v000010ECd00008139sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (Pavilion t3030.de Desktop PC)
+ pci:v000010ECd00008139sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (Presario C700)
+ pci:v000010ECd00008139sv00001043sd00001045*
+- ID_MODEL_FROM_DATABASE=L8400B or L3C/S notebook
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (L8400B or L3C/S notebook)
+ pci:v000010ECd00008139sv00001043sd00008109*
+- ID_MODEL_FROM_DATABASE=P5P800-MX Mainboard
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (P5P800-MX Mainboard)
+ pci:v000010ECd00008139sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (MIM2000)
+ pci:v000010ECd00008139sv000010BDsd00000320*
+- ID_MODEL_FROM_DATABASE=EP-320X-R
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (EP-320X-R)
+ pci:v000010ECd00008139sv000010ECsd00008139*
+  ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
+ pci:v000010ECd00008139sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (Panasonic CF-Y5 laptop)
+ pci:v000010ECd00008139sv00001113sd0000EC01*
+- ID_MODEL_FROM_DATABASE=LevelOne FNC-0107TX/FNC-0109TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (LevelOne FNC-0107TX/FNC-0109TX)
+ pci:v000010ECd00008139sv00001186sd00001300*
+- ID_MODEL_FROM_DATABASE=DFE-538TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (DFE-538TX)
+ pci:v000010ECd00008139sv00001186sd00001320*
+- ID_MODEL_FROM_DATABASE=SN5200
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (SN5200)
+ pci:v000010ECd00008139sv00001186sd00008139*
+- ID_MODEL_FROM_DATABASE=DRN-32TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (DRN-32TX)
+ pci:v000010ECd00008139sv000011F6sd00008139*
+- ID_MODEL_FROM_DATABASE=FN22-3(A) LinxPRO Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (FN22-3(A) LinxPRO Ethernet Adapter)
+ pci:v000010ECd00008139sv00001259sd00002500*
+- ID_MODEL_FROM_DATABASE=AT-2500TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (AT-2500TX)
+ pci:v000010ECd00008139sv00001259sd00002503*
+- ID_MODEL_FROM_DATABASE=AT-2500TX/ACPI
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (AT-2500TX/ACPI)
+ pci:v000010ECd00008139sv00001385sd0000F31D*
+- ID_MODEL_FROM_DATABASE=FA311 v2
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (FA311 v2)
+ pci:v000010ECd00008139sv00001395sd00002100*
+- ID_MODEL_FROM_DATABASE=AMB2100
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (AMB2100)
+ pci:v000010ECd00008139sv00001429sd0000D010*
+- ID_MODEL_FROM_DATABASE=ND010/ND012
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (ND010/ND012)
+ pci:v000010ECd00008139sv00001432sd00009130*
+- ID_MODEL_FROM_DATABASE=EN-9130TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (EN-9130TX)
+ pci:v000010ECd00008139sv00001436sd00008139*
+- ID_MODEL_FROM_DATABASE=RT8139
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (RT8139)
+ pci:v000010ECd00008139sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (P30/P35 notebook)
+ pci:v000010ECd00008139sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=GA-7VM400M/7VT600 Motherboard
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (GA-7VM400M/7VT600 Motherboard)
+ pci:v000010ECd00008139sv00001462sd00000131*
+- ID_MODEL_FROM_DATABASE=MS-1013 Notebook
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (MS-1013 Notebook)
+ pci:v000010ECd00008139sv00001462sd0000217C*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (Aspire L250)
+ pci:v000010ECd00008139sv00001462sd0000788C*
+- ID_MODEL_FROM_DATABASE=865PE Neo2-V Mainboard
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (865PE Neo2-V Mainboard)
+ pci:v000010ECd00008139sv0000146Csd00001439*
+- ID_MODEL_FROM_DATABASE=FE-1439TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (FE-1439TX)
+ pci:v000010ECd00008139sv00001489sd00006001*
+- ID_MODEL_FROM_DATABASE=GF100TXRII
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (GF100TXRII)
+ pci:v000010ECd00008139sv00001489sd00006002*
+- ID_MODEL_FROM_DATABASE=GF100TXRA
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (GF100TXRA)
+ pci:v000010ECd00008139sv0000149Csd0000139A*
+- ID_MODEL_FROM_DATABASE=LFE-8139ATX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (LFE-8139ATX)
+ pci:v000010ECd00008139sv0000149Csd00008139*
+- ID_MODEL_FROM_DATABASE=LFE-8139TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (LFE-8139TX)
+ pci:v000010ECd00008139sv000014CBsd00000200*
+- ID_MODEL_FROM_DATABASE=LNR-100 Family 10/100 Base-TX Ethernet
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (LNR-100 Family 10/100 Base-TX Ethernet)
+ pci:v000010ECd00008139sv00001565sd00002300*
+- ID_MODEL_FROM_DATABASE=P4TSV Onboard LAN (RTL8100B)
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (P4TSV Onboard LAN (RTL8100B))
+ pci:v000010ECd00008139sv00001631sd00007003*
+- ID_MODEL_FROM_DATABASE=Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard)
+ pci:v000010ECd00008139sv00001695sd00009001*
+- ID_MODEL_FROM_DATABASE=Onboard RTL8101L 10/100 MBit
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (Onboard RTL8101L 10/100 MBit)
+ pci:v000010ECd00008139sv000016ECsd000000FF*
+- ID_MODEL_FROM_DATABASE=USR997900A
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (USR997900A)
+ pci:v000010ECd00008139sv00001799sd00005000*
+- ID_MODEL_FROM_DATABASE=F5D5000 PCI Card/Desktop Network PCI Card
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (F5D5000 PCI Card/Desktop Network PCI Card)
+ pci:v000010ECd00008139sv00001799sd00005010*
+- ID_MODEL_FROM_DATABASE=F5D5010 CardBus Notebook Network Card
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (F5D5010 CardBus Notebook Network Card)
+ pci:v000010ECd00008139sv0000187Esd00003303*
+- ID_MODEL_FROM_DATABASE=FN312
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (FN312)
+ pci:v000010ECd00008139sv00001904sd00008139*
+- ID_MODEL_FROM_DATABASE=RTL8139D Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (RTL8139D Fast Ethernet Adapter)
+ pci:v000010ECd00008139sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (QEMU Virtual Machine)
+ pci:v000010ECd00008139sv00002646sd00000001*
+- ID_MODEL_FROM_DATABASE=KNE120TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (KNE120TX)
+ pci:v000010ECd00008139sv00008E2Esd00007000*
+- ID_MODEL_FROM_DATABASE=KF-230TX
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (KF-230TX)
+ pci:v000010ECd00008139sv00008E2Esd00007100*
+- ID_MODEL_FROM_DATABASE=KF-230TX/2
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (KF-230TX/2)
+ pci:v000010ECd00008139sv0000A0A0sd00000007*
+- ID_MODEL_FROM_DATABASE=ALN-325C
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter (ALN-325C)
+ pci:v000010ECd00008167*
+  ID_MODEL_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet
+ pci:v000010ECd00008167sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=GA-MA69G-S3H Motherboard
++ ID_MODEL_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet (GA-MA69G-S3H Motherboard)
+ pci:v000010ECd00008167sv00001462sd0000235C*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet (P965 Neo MS-7235 mainboard)
+ pci:v000010ECd00008167sv00001462sd0000236C*
+- ID_MODEL_FROM_DATABASE=945P Neo3-F motherboard
++ ID_MODEL_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet (945P Neo3-F motherboard)
+ pci:v000010ECd00008168*
+  ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
+ pci:v000010ECd00008168sv00001019sd00008168*
+- ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (RTL8111/8168 PCI Express Gigabit Ethernet controller)
+ pci:v000010ECd00008168sv00001028sd00000283*
+- ID_MODEL_FROM_DATABASE=Vostro 220
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Vostro 220)
+ pci:v000010ECd00008168sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Vostro 3350)
+ pci:v000010ECd00008168sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Vostro 3750)
+ pci:v000010ECd00008168sv0000103Csd00001611*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Pavilion DM1Z-3000)
+ pci:v000010ECd00008168sv0000103Csd00001950*
+- ID_MODEL_FROM_DATABASE=ProBook 450/455
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (ProBook 450/455)
+ pci:v000010ECd00008168sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Asus IPIBL-LB Motherboard)
+ pci:v000010ECd00008168sv00001043sd000011F5*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (A6J-Q008)
+ pci:v000010ECd00008168sv00001043sd000016D5*
+- ID_MODEL_FROM_DATABASE=U6V/U31J laptop
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (U6V/U31J laptop)
+ pci:v000010ECd00008168sv00001043sd000081AA*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P5B)
+ pci:v000010ECd00008168sv00001043sd000082C6*
+- ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (M3A78-EH Motherboard)
+ pci:v000010ECd00008168sv00001043sd000083A3*
+- ID_MODEL_FROM_DATABASE=M4A785TD Motherboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (M4A785TD Motherboard)
+ pci:v000010ECd00008168sv00001043sd00008432*
+- ID_MODEL_FROM_DATABASE=P8P67 and other motherboards
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P8P67 and other motherboards)
+ pci:v000010ECd00008168sv00001043sd00008505*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P8H77-I Motherboard)
+ pci:v000010ECd00008168sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (D270S/D250S Motherboard)
+ pci:v000010ECd00008168sv000010ECsd00008168*
+- ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (RTL8111/8168 PCI Express Gigabit Ethernet controller)
+ pci:v000010ECd00008168sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Motherboard)
+ pci:v000010ECd00008168sv00001462sd0000238C*
+- ID_MODEL_FROM_DATABASE=Onboard RTL8111b on MSI P965 Platinum Mainboard
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Onboard RTL8111b on MSI P965 Platinum Mainboard)
+ pci:v000010ECd00008168sv00001462sd0000368C*
+- ID_MODEL_FROM_DATABASE=K9AG Neo2
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (K9AG Neo2)
+ pci:v000010ECd00008168sv00001462sd00004180*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Wind PC MS-7418)
+ pci:v000010ECd00008168sv00001462sd00007522*
+- ID_MODEL_FROM_DATABASE=X58 Pro-E
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (X58 Pro-E)
+ pci:v000010ECd00008168sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (CC11/CL11)
+ pci:v000010ECd00008168sv00001849sd00008168*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Motherboard (one of many))
+ pci:v000010ECd00008168sv00008086sd0000D615*
+- ID_MODEL_FROM_DATABASE=Desktop Board D510MO/D525MW
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Desktop Board D510MO/D525MW)
+ pci:v000010ECd00008169*
+  ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller
+ pci:v000010ECd00008169sv00001025sd00000079*
+- ID_MODEL_FROM_DATABASE=Aspire 5024WLMi
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (Aspire 5024WLMi)
+ pci:v000010ECd00008169sv000010BDsd00003202*
+- ID_MODEL_FROM_DATABASE=EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter)
+ pci:v000010ECd00008169sv000010ECsd00008169*
+- ID_MODEL_FROM_DATABASE=RTL8169/8110 Family PCI Gigabit Ethernet NIC
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (RTL8169/8110 Family PCI Gigabit Ethernet NIC)
+ pci:v000010ECd00008169sv00001259sd0000C107*
+- ID_MODEL_FROM_DATABASE=CG-LAPCIGT
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (CG-LAPCIGT)
+ pci:v000010ECd00008169sv00001371sd0000434E*
+- ID_MODEL_FROM_DATABASE=ProG-2000L
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (ProG-2000L)
+ pci:v000010ECd00008169sv00001385sd0000311A*
+- ID_MODEL_FROM_DATABASE=GA311
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (GA311)
+ pci:v000010ECd00008169sv00001385sd00005200*
+- ID_MODEL_FROM_DATABASE=GA511 Gigabit PC Card
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (GA511 Gigabit PC Card)
+ pci:v000010ECd00008169sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (GA-8I915ME-G Mainboard)
+ pci:v000010ECd00008169sv00001462sd0000030C*
+- ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 mainboard
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (K8N Neo-FSR v2.0 mainboard)
+ pci:v000010ECd00008169sv00001462sd0000065C*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (Hetis 865GV-E (MS-7065))
+ pci:v000010ECd00008169sv00001462sd0000702C*
+- ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (K8T NEO 2 motherboard)
+ pci:v000010ECd00008169sv00001462sd00007094*
+- ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (K8T Neo2-F V2.0)
+ pci:v000010ECd00008169sv000016ECsd0000011F*
+- ID_MODEL_FROM_DATABASE=USR997903
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (USR997903)
+ pci:v000010ECd00008169sv00001734sd00001091*
+- ID_MODEL_FROM_DATABASE=D2030-A1
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (D2030-A1)
+ pci:v000010ECd00008169sv0000A0A0sd00000449*
+- ID_MODEL_FROM_DATABASE=AK86-L motherboard
++ ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller (AK86-L motherboard)
+ pci:v000010ECd00008171*
+  ID_MODEL_FROM_DATABASE=RTL8191SEvA Wireless LAN Controller
+@@ -28479,7 +28479,7 @@ pci:v000010ECd00008176*
+  ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter
+ pci:v000010ECd00008176sv00001A3Bsd00001139*
+- ID_MODEL_FROM_DATABASE=AW-NE139H Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter (AW-NE139H Half-size Mini PCIe Card)
+ pci:v000010ECd00008177*
+  ID_MODEL_FROM_DATABASE=RTL8191CE PCIe Wireless Network Adapter
+@@ -28494,10 +28494,10 @@ pci:v000010ECd00008180*
+  ID_MODEL_FROM_DATABASE=RTL8180L 802.11b MAC
+ pci:v000010ECd00008180sv00001385sd00004700*
+- ID_MODEL_FROM_DATABASE=MA521 802.11b Wireless PC Card
++ ID_MODEL_FROM_DATABASE=RTL8180L 802.11b MAC (MA521 802.11b Wireless PC Card)
+ pci:v000010ECd00008180sv00001737sd00000019*
+- ID_MODEL_FROM_DATABASE=WPC11v4 802.11b Wireless-B Notebook Adapter
++ ID_MODEL_FROM_DATABASE=RTL8180L 802.11b MAC (WPC11v4 802.11b Wireless-B Notebook Adapter)
+ pci:v000010ECd00008185*
+  ID_MODEL_FROM_DATABASE=RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
+@@ -28524,7 +28524,7 @@ pci:v000010ECd00008199*
+  ID_MODEL_FROM_DATABASE=RTL8187SE Wireless LAN Controller
+ pci:v000010ECd00008199sv00001462sd00006894*
+- ID_MODEL_FROM_DATABASE=MN54G2 / MS-6894 Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=RTL8187SE Wireless LAN Controller (MN54G2 / MS-6894 Wireless Mini PCIe Card)
+ pci:v000010ECd00008723*
+  ID_MODEL_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter
+@@ -28734,115 +28734,115 @@ pci:v00001102d00000002*
+  ID_MODEL_FROM_DATABASE=SB Live! EMU10k1
+ pci:v00001102d00000002sv0000100Asd00001102*
+- ID_MODEL_FROM_DATABASE=SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF)
+ pci:v00001102d00000002sv00001102sd00000020*
+- ID_MODEL_FROM_DATABASE=CT4850 SBLive! Value
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4850 SBLive! Value)
+ pci:v00001102d00000002sv00001102sd00000021*
+- ID_MODEL_FROM_DATABASE=CT4620 SBLive!
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4620 SBLive!)
+ pci:v00001102d00000002sv00001102sd0000002F*
+- ID_MODEL_FROM_DATABASE=SBLive! mainboard implementation
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SBLive! mainboard implementation)
+ pci:v00001102d00000002sv00001102sd0000100A*
+- ID_MODEL_FROM_DATABASE=SB Live! 5.1 Digital OEM [SB0220]
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SB Live! 5.1 Digital OEM [SB0220])
+ pci:v00001102d00000002sv00001102sd00004001*
+- ID_MODEL_FROM_DATABASE=E-mu APS
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (E-mu APS)
+ pci:v00001102d00000002sv00001102sd00008022*
+- ID_MODEL_FROM_DATABASE=CT4780 SBLive! Value
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4780 SBLive! Value)
+ pci:v00001102d00000002sv00001102sd00008023*
+- ID_MODEL_FROM_DATABASE=CT4790 SoundBlaster PCI512
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4790 SoundBlaster PCI512)
+ pci:v00001102d00000002sv00001102sd00008024*
+- ID_MODEL_FROM_DATABASE=CT4760 SBLive!
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4760 SBLive!)
+ pci:v00001102d00000002sv00001102sd00008025*
+- ID_MODEL_FROM_DATABASE=SBLive! Mainboard Implementation
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SBLive! Mainboard Implementation)
+ pci:v00001102d00000002sv00001102sd00008026*
+- ID_MODEL_FROM_DATABASE=CT4830 SBLive! Value
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4830 SBLive! Value)
+ pci:v00001102d00000002sv00001102sd00008027*
+- ID_MODEL_FROM_DATABASE=CT4832 SBLive! Value
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4832 SBLive! Value)
+ pci:v00001102d00000002sv00001102sd00008028*
+- ID_MODEL_FROM_DATABASE=CT4760 SBLive! OEM version
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4760 SBLive! OEM version)
+ pci:v00001102d00000002sv00001102sd00008031*
+- ID_MODEL_FROM_DATABASE=CT4831 SBLive! Value
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4831 SBLive! Value)
+ pci:v00001102d00000002sv00001102sd00008040*
+- ID_MODEL_FROM_DATABASE=CT4760 SBLive!
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4760 SBLive!)
+ pci:v00001102d00000002sv00001102sd00008051*
+- ID_MODEL_FROM_DATABASE=CT4850 SBLive! Value
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (CT4850 SBLive! Value)
+ pci:v00001102d00000002sv00001102sd00008061*
+- ID_MODEL_FROM_DATABASE=SBLive! Player 5.1
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SBLive! Player 5.1)
+ pci:v00001102d00000002sv00001102sd00008064*
+- ID_MODEL_FROM_DATABASE=SBLive! 5.1 Model SB0100
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SBLive! 5.1 Model SB0100)
+ pci:v00001102d00000002sv00001102sd00008065*
+- ID_MODEL_FROM_DATABASE=SBLive! 5.1 Digital Model SB0220
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SBLive! 5.1 Digital Model SB0220)
+ pci:v00001102d00000002sv00001102sd00008066*
+- ID_MODEL_FROM_DATABASE=Live! 5.1 Digital [SB0228]
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (Live! 5.1 Digital [SB0228])
+ pci:v00001102d00000002sv00001102sd00008067*
+- ID_MODEL_FROM_DATABASE=SBLive! 5.1 eMicro 28028
++ ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 (SBLive! 5.1 eMicro 28028)
+ pci:v00001102d00000004*
+  ID_MODEL_FROM_DATABASE=SB Audigy
+ pci:v00001102d00000004sv00001102sd00000051*
+- ID_MODEL_FROM_DATABASE=SB0090 Audigy Player
++ ID_MODEL_FROM_DATABASE=SB Audigy (SB0090 Audigy Player)
+ pci:v00001102d00000004sv00001102sd00000053*
+- ID_MODEL_FROM_DATABASE=SB0090 Audigy Player/OEM
++ ID_MODEL_FROM_DATABASE=SB Audigy (SB0090 Audigy Player/OEM)
+ pci:v00001102d00000004sv00001102sd00000058*
+- ID_MODEL_FROM_DATABASE=SB0090 Audigy Player/OEM
++ ID_MODEL_FROM_DATABASE=SB Audigy (SB0090 Audigy Player/OEM)
+ pci:v00001102d00000004sv00001102sd00001002*
+- ID_MODEL_FROM_DATABASE=SB Audigy2 Platinum
++ ID_MODEL_FROM_DATABASE=SB Audigy (2 Platinum)
+ pci:v00001102d00000004sv00001102sd00001003*
+- ID_MODEL_FROM_DATABASE=SB0350 Audigy 2
++ ID_MODEL_FROM_DATABASE=SB Audigy (SB0350 Audigy 2)
+ pci:v00001102d00000004sv00001102sd00001007*
+- ID_MODEL_FROM_DATABASE=SB0240 Audigy 2 Platinum 6.1
++ ID_MODEL_FROM_DATABASE=SB Audigy (SB0240 Audigy 2 Platinum 6.1)
+ pci:v00001102d00000004sv00001102sd00001009*
+- ID_MODEL_FROM_DATABASE=SB Audigy2 OEM HP
++ ID_MODEL_FROM_DATABASE=SB Audigy (2 OEM HP)
+ pci:v00001102d00000004sv00001102sd00002001*
+- ID_MODEL_FROM_DATABASE=SB Audigy 2 ZS Platinum Pro
++ ID_MODEL_FROM_DATABASE=SB Audigy (2 ZS Platinum Pro)
+ pci:v00001102d00000004sv00001102sd00002002*
+- ID_MODEL_FROM_DATABASE=SB Audigy 2 ZS (SB0350)
++ ID_MODEL_FROM_DATABASE=SB Audigy (2 ZS (SB0350))
+ pci:v00001102d00000004sv00001102sd00004001*
+- ID_MODEL_FROM_DATABASE=E-MU 1010
++ ID_MODEL_FROM_DATABASE=SB Audigy (E-MU 1010)
+ pci:v00001102d00000004sv00001102sd00004002*
+- ID_MODEL_FROM_DATABASE=E-MU 0404
++ ID_MODEL_FROM_DATABASE=SB Audigy (E-MU 0404)
+ pci:v00001102d00000005*
+  ID_MODEL_FROM_DATABASE=SB X-Fi
+ pci:v00001102d00000005sv00001102sd00000021*
+- ID_MODEL_FROM_DATABASE=X-Fi Platinum
++ ID_MODEL_FROM_DATABASE=SB X-Fi (X-Fi Platinum)
+ pci:v00001102d00000005sv00001102sd0000002C*
+- ID_MODEL_FROM_DATABASE=X-Fi XtremeGamer FATAL1TY PRO
++ ID_MODEL_FROM_DATABASE=SB X-Fi (X-Fi XtremeGamer FATAL1TY PRO)
+ pci:v00001102d00000005sv00001102sd00001003*
+- ID_MODEL_FROM_DATABASE=X-Fi XtremeMusic
++ ID_MODEL_FROM_DATABASE=SB X-Fi (X-Fi XtremeMusic)
+ pci:v00001102d00000006*
+  ID_MODEL_FROM_DATABASE=[SB Live! Value] EMU10k1X
+@@ -28851,37 +28851,37 @@ pci:v00001102d00000007*
+  ID_MODEL_FROM_DATABASE=CA0106 Soundblaster
+ pci:v00001102d00000007sv00001102sd00000007*
+- ID_MODEL_FROM_DATABASE=SBLive! 24bit
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (SBLive! 24bit)
+ pci:v00001102d00000007sv00001102sd00001001*
+- ID_MODEL_FROM_DATABASE=SB0310 Audigy LS
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (SB0310 Audigy LS)
+ pci:v00001102d00000007sv00001102sd00001002*
+- ID_MODEL_FROM_DATABASE=SB0312 Audigy LS
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (SB0312 Audigy LS)
+ pci:v00001102d00000007sv00001102sd00001006*
+- ID_MODEL_FROM_DATABASE=SB0410 SBLive! 24-bit
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (SB0410 SBLive! 24-bit)
+ pci:v00001102d00000007sv00001102sd0000100A*
+- ID_MODEL_FROM_DATABASE=SB0570 [SB Audigy SE]
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (SB0570 [SB Audigy SE])
+ pci:v00001102d00000007sv00001102sd00001012*
+- ID_MODEL_FROM_DATABASE=SB0790 X-Fi XA
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (SB0790 X-Fi XA)
+ pci:v00001102d00000007sv00001102sd00001013*
+- ID_MODEL_FROM_DATABASE=Soundblaster X-Fi Xtreme Audio
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (Soundblaster X-Fi Xtreme Audio)
+ pci:v00001102d00000007sv00001462sd00001009*
+- ID_MODEL_FROM_DATABASE=K8N Diamond
++ ID_MODEL_FROM_DATABASE=CA0106 Soundblaster (K8N Diamond)
+ pci:v00001102d00000008*
+  ID_MODEL_FROM_DATABASE=SB0400 Audigy2 Value
+ pci:v00001102d00000008sv00001102sd00000008*
+- ID_MODEL_FROM_DATABASE=EMU0404 Digital Audio System
++ ID_MODEL_FROM_DATABASE=SB0400 Audigy2 Value (EMU0404 Digital Audio System)
+ pci:v00001102d00000008sv00001102sd00004004*
+- ID_MODEL_FROM_DATABASE=EMU1010 Digital Audio System [MAEM8960]
++ ID_MODEL_FROM_DATABASE=SB0400 Audigy2 Value (EMU1010 Digital Audio System [MAEM8960])
+ pci:v00001102d00000009*
+  ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG
+@@ -28890,13 +28890,13 @@ pci:v00001102d00000009sv00001102sd00000010*
+  ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG
+ pci:v00001102d00000009sv00001102sd00000018*
+- ID_MODEL_FROM_DATABASE=SB1040
++ ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG (SB1040)
+ pci:v00001102d0000000B*
+  ID_MODEL_FROM_DATABASE=EMU20k2 [X-Fi Titanium Series]
+ pci:v00001102d0000000Bsv00001102sd00000041*
+- ID_MODEL_FROM_DATABASE=SB0880 [SoundBlaster X-Fi Titanium PCI-e]
++ ID_MODEL_FROM_DATABASE=EMU20k2 [X-Fi Titanium Series] (SB0880 [SoundBlaster X-Fi Titanium PCI-e])
+ pci:v00001102d00004001*
+  ID_MODEL_FROM_DATABASE=SB Audigy FireWire Port
+@@ -28908,7 +28908,7 @@ pci:v00001102d00007002*
+  ID_MODEL_FROM_DATABASE=SB Live! Game Port
+ pci:v00001102d00007002sv00001102sd00000020*
+- ID_MODEL_FROM_DATABASE=Gameport Joystick
++ ID_MODEL_FROM_DATABASE=SB Live! Game Port (Gameport Joystick)
+ pci:v00001102d00007003*
+  ID_MODEL_FROM_DATABASE=SB Audigy Game Port
+@@ -28917,7 +28917,7 @@ pci:v00001102d00007003sv00001102sd00000040*
+  ID_MODEL_FROM_DATABASE=SB Audigy Game Port
+ pci:v00001102d00007003sv00001102sd00000060*
+- ID_MODEL_FROM_DATABASE=SB Audigy2 MIDI/Game Port
++ ID_MODEL_FROM_DATABASE=SB Audigy Game Port (SB Audigy2 MIDI/Game Port)
+ pci:v00001102d00007004*
+  ID_MODEL_FROM_DATABASE=[SB Live! Value] Input device controller
+@@ -28926,10 +28926,10 @@ pci:v00001102d00007005*
+  ID_MODEL_FROM_DATABASE=SB Audigy LS Game Port
+ pci:v00001102d00007005sv00001102sd00001001*
+- ID_MODEL_FROM_DATABASE=SB0310 Audigy LS MIDI/Game port
++ ID_MODEL_FROM_DATABASE=SB Audigy LS Game Port (SB0310 Audigy LS MIDI/Game port)
+ pci:v00001102d00007005sv00001102sd00001002*
+- ID_MODEL_FROM_DATABASE=SB0312 Audigy LS MIDI/Game port
++ ID_MODEL_FROM_DATABASE=SB Audigy LS Game Port (SB0312 Audigy LS MIDI/Game port)
+ pci:v00001102d00007006*
+  ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCI to PCIe Bridge
+@@ -28938,49 +28938,49 @@ pci:v00001102d00008938*
+  ID_MODEL_FROM_DATABASE=Ectiva EV1938
+ pci:v00001102d00008938sv00001033sd000080E5*
+- ID_MODEL_FROM_DATABASE=SlimTower-Jim (NEC)
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (SlimTower-Jim (NEC))
+ pci:v00001102d00008938sv00001071sd00007150*
+- ID_MODEL_FROM_DATABASE=Mitac 7150
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (Mitac 7150)
+ pci:v00001102d00008938sv0000110Asd00005938*
+- ID_MODEL_FROM_DATABASE=Siemens Scenic Mobile 510PIII
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (Siemens Scenic Mobile 510PIII)
+ pci:v00001102d00008938sv000013BDsd0000100C*
+- ID_MODEL_FROM_DATABASE=Ceres-C (Sharp, Intel BX)
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (Ceres-C (Sharp, Intel BX))
+ pci:v00001102d00008938sv000013BDsd0000100D*
+- ID_MODEL_FROM_DATABASE=Sharp, Intel Banister
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (Sharp, Intel Banister)
+ pci:v00001102d00008938sv000013BDsd0000100E*
+- ID_MODEL_FROM_DATABASE=TwinHead P09S/P09S3 (Sharp)
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (TwinHead P09S/P09S3 (Sharp))
+ pci:v00001102d00008938sv000013BDsd0000F6F1*
+- ID_MODEL_FROM_DATABASE=Marlin (Sharp)
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (Marlin (Sharp))
+ pci:v00001102d00008938sv000014FFsd00000E70*
+- ID_MODEL_FROM_DATABASE=P88TE (TWINHEAD INTERNATIONAL Corp)
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (P88TE (TWINHEAD INTERNATIONAL Corp))
+ pci:v00001102d00008938sv000014FFsd0000C401*
+- ID_MODEL_FROM_DATABASE=Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp)
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp))
+ pci:v00001102d00008938sv0000156Dsd0000B400*
+- ID_MODEL_FROM_DATABASE=G400 - Geo (AlphaTop (Taiwan))
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (G400 - Geo (AlphaTop (Taiwan)))
+ pci:v00001102d00008938sv0000156Dsd0000B550*
+- ID_MODEL_FROM_DATABASE=G560  (AlphaTop (Taiwan))
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (G560  (AlphaTop (Taiwan)))
+ pci:v00001102d00008938sv0000156Dsd0000B560*
+- ID_MODEL_FROM_DATABASE=G560  (AlphaTop (Taiwan))
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (G560  (AlphaTop (Taiwan)))
+ pci:v00001102d00008938sv0000156Dsd0000B700*
+- ID_MODEL_FROM_DATABASE=G700/U700  (AlphaTop (Taiwan))
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (G700/U700  (AlphaTop (Taiwan)))
+ pci:v00001102d00008938sv0000156Dsd0000B795*
+- ID_MODEL_FROM_DATABASE=G795  (AlphaTop (Taiwan))
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (G795  (AlphaTop (Taiwan)))
+ pci:v00001102d00008938sv0000156Dsd0000B797*
+- ID_MODEL_FROM_DATABASE=G797  (AlphaTop (Taiwan))
++ ID_MODEL_FROM_DATABASE=Ectiva EV1938 (G797  (AlphaTop (Taiwan)))
+ pci:v00001103*
+  ID_VENDOR_FROM_DATABASE=HighPoint Technologies, Inc.
+@@ -28992,16 +28992,16 @@ pci:v00001103d00000004*
+  ID_MODEL_FROM_DATABASE=HPT366/368/370/370A/372/372N
+ pci:v00001103d00000004sv00001103sd00000001*
+- ID_MODEL_FROM_DATABASE=HPT370A
++ ID_MODEL_FROM_DATABASE=HPT366/368/370/370A/372/372N (HPT370A)
+ pci:v00001103d00000004sv00001103sd00000004*
+- ID_MODEL_FROM_DATABASE=HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4)
++ ID_MODEL_FROM_DATABASE=HPT366/368/370/370A/372/372N (HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4))
+ pci:v00001103d00000004sv00001103sd00000005*
+- ID_MODEL_FROM_DATABASE=HPT370 UDMA100
++ ID_MODEL_FROM_DATABASE=HPT366/368/370/370A/372/372N (HPT370 UDMA100)
+ pci:v00001103d00000004sv00001103sd00000006*
+- ID_MODEL_FROM_DATABASE=HPT302/302N
++ ID_MODEL_FROM_DATABASE=HPT366/368/370/370A/372/372N (HPT302/302N)
+ pci:v00001103d00000005*
+  ID_MODEL_FROM_DATABASE=HPT372A/372N
+@@ -29040,7 +29040,7 @@ pci:v00001103d00002210*
+  ID_MODEL_FROM_DATABASE=RocketRAID 2210 SATA-II Controller
+ pci:v00001103d00002210sv000011ABsd000011AB*
+- ID_MODEL_FROM_DATABASE=88SX6042
++ ID_MODEL_FROM_DATABASE=RocketRAID 2210 SATA-II Controller (88SX6042)
+ pci:v00001103d00002300*
+  ID_MODEL_FROM_DATABASE=RocketRAID 230x 4 Port SATA-II Controller
+@@ -29112,13 +29112,13 @@ pci:v00001105d00008475*
+  ID_MODEL_FROM_DATABASE=EM8475 REALmagic DVD/MPEG-4 A/V Decoder
+ pci:v00001105d00008475sv00001105sd00000001*
+- ID_MODEL_FROM_DATABASE=REALmagic X-Card
++ ID_MODEL_FROM_DATABASE=EM8475 REALmagic DVD/MPEG-4 A/V Decoder (REALmagic X-Card)
+ pci:v00001105d00008476*
+  ID_MODEL_FROM_DATABASE=EM8476 REALmagic DVD/MPEG-4 A/V Decoder
+ pci:v00001105d00008476sv0000127Dsd00000000*
+- ID_MODEL_FROM_DATABASE=CineView II
++ ID_MODEL_FROM_DATABASE=EM8476 REALmagic DVD/MPEG-4 A/V Decoder (CineView II)
+ pci:v00001105d00008485*
+  ID_MODEL_FROM_DATABASE=EM8485 REALmagic DVD/MPEG-4 A/V Decoder
+@@ -29163,7 +29163,7 @@ pci:v00001106d00000282*
+  ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge
+ pci:v00001106d00000282sv00001043sd000080A3*
+- ID_MODEL_FROM_DATABASE=A8V Deluxe
++ ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge (A8V Deluxe)
+ pci:v00001106d00000290*
+  ID_MODEL_FROM_DATABASE=K8M890 Host Bridge
+@@ -29178,28 +29178,28 @@ pci:v00001106d00000305*
+  ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133]
+ pci:v00001106d00000305sv00001019sd00000987*
+- ID_MODEL_FROM_DATABASE=K7VZA Mainboard
++ ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] (K7VZA Mainboard)
+ pci:v00001106d00000305sv00001043sd00008033*
+- ID_MODEL_FROM_DATABASE=A7V Mainboard
++ ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] (A7V Mainboard)
+ pci:v00001106d00000305sv00001043sd0000803E*
+- ID_MODEL_FROM_DATABASE=A7V-E Mainboard
++ ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] (A7V-E Mainboard)
+ pci:v00001106d00000305sv00001043sd00008042*
+- ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard
++ ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] (A7V133/A7V133-C Mainboard)
+ pci:v00001106d00000305sv0000147Bsd0000A401*
+- ID_MODEL_FROM_DATABASE=KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard
++ ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] (KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard)
+ pci:v00001106d00000308*
+  ID_MODEL_FROM_DATABASE=PT880 Ultra/PT894 Host Bridge
+ pci:v00001106d00000308sv00001043sd00008199*
+- ID_MODEL_FROM_DATABASE=P4V800D-X Mainboard
++ ID_MODEL_FROM_DATABASE=PT880 Ultra/PT894 Host Bridge (P4V800D-X Mainboard)
+ pci:v00001106d00000308sv00001849sd00000308*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=PT880 Ultra/PT894 Host Bridge (Motherboard)
+ pci:v00001106d00000314*
+  ID_MODEL_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge
+@@ -29226,7 +29226,7 @@ pci:v00001106d00000364*
+  ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge
+ pci:v00001106d00000364sv00001043sd000081CE*
+- ID_MODEL_FROM_DATABASE=P5VD2-VM mothervoard
++ ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge (P5VD2-VM mothervoard)
+ pci:v00001106d00000391*
+  ID_MODEL_FROM_DATABASE=VT8371 [KX133]
+@@ -29241,7 +29241,7 @@ pci:v00001106d00000415*
+  ID_MODEL_FROM_DATABASE=VT6415 PATA IDE Host Controller
+ pci:v00001106d00000415sv00001043sd0000838F*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=VT6415 PATA IDE Host Controller (Motherboard)
+ pci:v00001106d00000501*
+  ID_MODEL_FROM_DATABASE=VT8501 [Apollo MVP4]
+@@ -29256,55 +29256,55 @@ pci:v00001106d00000571*
+  ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE
+ pci:v00001106d00000571sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (P6VXA Motherboard)
+ pci:v00001106d00000571sv00001019sd00000A81*
+- ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235)
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (L7VTA v1.0 Motherboard (KT400-8235))
+ pci:v00001106d00000571sv00001043sd00008052*
+- ID_MODEL_FROM_DATABASE=VT8233A Bus Master ATA100/66/33 IDE
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (VT8233A Bus Master ATA100/66/33 IDE)
+ pci:v00001106d00000571sv00001043sd0000808C*
+- ID_MODEL_FROM_DATABASE=A7V8X / A7V333 motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (A7V8X / A7V333 motherboard)
+ pci:v00001106d00000571sv00001043sd000080A1*
+- ID_MODEL_FROM_DATABASE=A7V8X-X motherboard rev. 1.01
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (A7V8X-X motherboard rev. 1.01)
+ pci:v00001106d00000571sv00001043sd000080ED*
+- ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (A7V600/K8V-X/A8V Deluxe motherboard)
+ pci:v00001106d00000571sv00001106sd00000571*
+- ID_MODEL_FROM_DATABASE=VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE)
+ pci:v00001106d00000571sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (Magnia Z310)
+ pci:v00001106d00000571sv00001297sd0000F641*
+- ID_MODEL_FROM_DATABASE=FX41 motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (FX41 motherboard)
+ pci:v00001106d00000571sv00001458sd00005002*
+- ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (GA-7VAX Mainboard)
+ pci:v00001106d00000571sv00001462sd00005901*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (KT6 Delta-FIS2R (MS-6590))
+ pci:v00001106d00000571sv00001462sd00007020*
+- ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (K8T NEO 2 motherboard)
+ pci:v00001106d00000571sv00001462sd00007094*
+- ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (K8T Neo2-F V2.0)
+ pci:v00001106d00000571sv00001462sd00007120*
+- ID_MODEL_FROM_DATABASE=KT4AV motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (KT4AV motherboard)
+ pci:v00001106d00000571sv00001462sd00007181*
+- ID_MODEL_FROM_DATABASE=K8MM3-V mainboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (K8MM3-V mainboard)
+ pci:v00001106d00000571sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (KV8-MAX3 motherboard)
+ pci:v00001106d00000571sv00001849sd00000571*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (K7VT series Motherboards)
+ pci:v00001106d00000576*
+  ID_MODEL_FROM_DATABASE=VT82C576 3V [Apollo Master]
+@@ -29313,7 +29313,7 @@ pci:v00001106d00000581*
+  ID_MODEL_FROM_DATABASE=CX700/VX700 RAID Controller
+ pci:v00001106d00000581sv00001106sd00000581*
+- ID_MODEL_FROM_DATABASE=Wrong IDE ID
++ ID_MODEL_FROM_DATABASE=CX700/VX700 RAID Controller (Wrong IDE ID)
+ pci:v00001106d00000585*
+  ID_MODEL_FROM_DATABASE=VT82C585VP [Apollo VP1/VPX]
+@@ -29322,7 +29322,7 @@ pci:v00001106d00000586*
+  ID_MODEL_FROM_DATABASE=VT82C586/A/B PCI-to-ISA [Apollo VP]
+ pci:v00001106d00000586sv00001106sd00000000*
+- ID_MODEL_FROM_DATABASE=MVP3 ISA Bridge
++ ID_MODEL_FROM_DATABASE=VT82C586/A/B PCI-to-ISA [Apollo VP] (MVP3 ISA Bridge)
+ pci:v00001106d00000591*
+  ID_MODEL_FROM_DATABASE=VT8237A SATA 2-Port Controller
+@@ -29334,10 +29334,10 @@ pci:v00001106d00000596*
+  ID_MODEL_FROM_DATABASE=VT82C596 ISA [Mobile South]
+ pci:v00001106d00000596sv00001106sd00000000*
+- ID_MODEL_FROM_DATABASE=VT82C596/A/B PCI to ISA Bridge
++ ID_MODEL_FROM_DATABASE=VT82C596 ISA [Mobile South] (VT82C596/A/B PCI to ISA Bridge)
+ pci:v00001106d00000596sv00001458sd00000596*
+- ID_MODEL_FROM_DATABASE=VT82C596/A/B PCI to ISA Bridge
++ ID_MODEL_FROM_DATABASE=VT82C596 ISA [Mobile South] (VT82C596/A/B PCI to ISA Bridge)
+ pci:v00001106d00000597*
+  ID_MODEL_FROM_DATABASE=VT82C597 [Apollo VP3]
+@@ -29352,10 +29352,10 @@ pci:v00001106d00000605*
+  ID_MODEL_FROM_DATABASE=VT8605 [ProSavage PM133]
+ pci:v00001106d00000605sv0000103Csd00001254*
+- ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard]
++ ID_MODEL_FROM_DATABASE=VT8605 [ProSavage PM133] (D9840-60001 [Brio BA410 Motherboard])
+ pci:v00001106d00000605sv00001043sd0000802C*
+- ID_MODEL_FROM_DATABASE=CUV4X mainboard
++ ID_MODEL_FROM_DATABASE=VT8605 [ProSavage PM133] (CUV4X mainboard)
+ pci:v00001106d00000680*
+  ID_MODEL_FROM_DATABASE=VT82C680 [Apollo P6]
+@@ -29364,49 +29364,49 @@ pci:v00001106d00000686*
+  ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South]
+ pci:v00001106d00000686sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (P6VXA Motherboard)
+ pci:v00001106d00000686sv0000103Csd00001256*
+- ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard]
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (D9840-60001 [Brio BA410 Motherboard])
+ pci:v00001106d00000686sv00001043sd0000802C*
+- ID_MODEL_FROM_DATABASE=CUV4X mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (CUV4X mainboard)
+ pci:v00001106d00000686sv00001043sd00008033*
+- ID_MODEL_FROM_DATABASE=A7V Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (A7V Mainboard)
+ pci:v00001106d00000686sv00001043sd0000803E*
+- ID_MODEL_FROM_DATABASE=A7V-E Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (A7V-E Mainboard)
+ pci:v00001106d00000686sv00001043sd00008040*
+- ID_MODEL_FROM_DATABASE=A7M266 Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (A7M266 Mainboard)
+ pci:v00001106d00000686sv00001043sd00008042*
+- ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (A7V133/A7V133-C Mainboard)
+ pci:v00001106d00000686sv00001106sd00000000*
+- ID_MODEL_FROM_DATABASE=VT82C686/A PCI to ISA Bridge
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (VT82C686/A PCI to ISA Bridge)
+ pci:v00001106d00000686sv00001106sd00000686*
+- ID_MODEL_FROM_DATABASE=VT82C686/A PCI to ISA Bridge
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (VT82C686/A PCI to ISA Bridge)
+ pci:v00001106d00000686sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (Magnia Z310)
+ pci:v00001106d00000686sv0000147Bsd0000A702*
+- ID_MODEL_FROM_DATABASE=KG7-Lite Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] (KG7-Lite Mainboard)
+ pci:v00001106d00000691*
+  ID_MODEL_FROM_DATABASE=VT82C693A/694x [Apollo PRO133x]
+ pci:v00001106d00000691sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C693A/694x [Apollo PRO133x] (P6VXA Motherboard)
+ pci:v00001106d00000691sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=VT82C693A/694x [Apollo PRO133x] (Magnia Z310)
+ pci:v00001106d00000691sv00001458sd00000691*
+- ID_MODEL_FROM_DATABASE=VT82C691 Apollo Pro System Controller
++ ID_MODEL_FROM_DATABASE=VT82C693A/694x [Apollo PRO133x] (VT82C691 Apollo Pro System Controller)
+ pci:v00001106d00000693*
+  ID_MODEL_FROM_DATABASE=VT82C693 [Apollo Pro Plus]
+@@ -29586,61 +29586,61 @@ pci:v00001106d00003038*
+  ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller
+ pci:v00001106d00003038sv00000925sd00001234*
+- ID_MODEL_FROM_DATABASE=VA-502 Mainboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (VA-502 Mainboard)
+ pci:v00001106d00003038sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (P6VXA Motherboard)
+ pci:v00001106d00003038sv00001019sd00000A81*
+- ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235)
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (L7VTA v1.0 Motherboard (KT400-8235))
+ pci:v00001106d00003038sv00001043sd00008080*
+- ID_MODEL_FROM_DATABASE=A7V333 motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (A7V333 motherboard)
+ pci:v00001106d00003038sv00001043sd0000808C*
+- ID_MODEL_FROM_DATABASE=VT6202 USB2.0 4 port controller
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (VT6202 USB2.0 4 port controller)
+ pci:v00001106d00003038sv00001043sd000080A1*
+- ID_MODEL_FROM_DATABASE=A7V8X-X motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (A7V8X-X motherboard)
+ pci:v00001106d00003038sv00001043sd000080ED*
+- ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (A7V600/K8V-X/A8V Deluxe motherboard)
+ pci:v00001106d00003038sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (Magnia Z310)
+ pci:v00001106d00003038sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (GA-7VAX Mainboard)
+ pci:v00001106d00003038sv00001462sd00005901*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (KT6 Delta-FIS2R (MS-6590))
+ pci:v00001106d00003038sv00001462sd00007020*
+- ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (K8T NEO 2 motherboard)
+ pci:v00001106d00003038sv00001462sd00007094*
+- ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (K8T Neo2-F V2.0)
+ pci:v00001106d00003038sv00001462sd00007120*
+- ID_MODEL_FROM_DATABASE=KT4AV motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (KT4AV motherboard)
+ pci:v00001106d00003038sv00001462sd00007181*
+- ID_MODEL_FROM_DATABASE=K8MM3-V mainboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (K8MM3-V mainboard)
+ pci:v00001106d00003038sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (KV8-MAX3 motherboard)
+ pci:v00001106d00003038sv0000182Dsd0000201D*
+- ID_MODEL_FROM_DATABASE=CN-029 USB2.0 4 port PCI Card
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (CN-029 USB2.0 4 port PCI Card)
+ pci:v00001106d00003038sv00001849sd00003038*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (K7VT series Motherboards)
+ pci:v00001106d00003038sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (ZBOX nano VD01)
+ pci:v00001106d00003038sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller (QEMU Virtual Machine)
+ pci:v00001106d00003040*
+  ID_MODEL_FROM_DATABASE=VT82C586B ACPI
+@@ -29649,52 +29649,52 @@ pci:v00001106d00003043*
+  ID_MODEL_FROM_DATABASE=VT86C100A [Rhine]
+ pci:v00001106d00003043sv000010BDsd00000000*
+- ID_MODEL_FROM_DATABASE=VT86C100A Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=VT86C100A [Rhine] (VT86C100A Fast Ethernet Adapter)
+ pci:v00001106d00003043sv00001106sd00000100*
+- ID_MODEL_FROM_DATABASE=VT86C100A Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=VT86C100A [Rhine] (VT86C100A Fast Ethernet Adapter)
+ pci:v00001106d00003043sv00001186sd00001400*
+- ID_MODEL_FROM_DATABASE=DFE-530TX rev A
++ ID_MODEL_FROM_DATABASE=VT86C100A [Rhine] (DFE-530TX rev A)
+ pci:v00001106d00003044*
+  ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller
+ pci:v00001106d00003044sv00000010sd00000001*
+- ID_MODEL_FROM_DATABASE=IEEE 1394 4port DCST 1394-3+1B
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (IEEE 1394 4port DCST 1394-3+1B)
+ pci:v00001106d00003044sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (TravelMate 290)
+ pci:v00001106d00003044sv0000103Csd00002A20*
+- ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (Pavilion t3030.de Desktop PC)
+ pci:v00001106d00003044sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Media Center PC m7590n
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (Media Center PC m7590n)
+ pci:v00001106d00003044sv00001043sd0000808A*
+- ID_MODEL_FROM_DATABASE=A8V/A8N/P4P800 series motherboard
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (A8V/A8N/P4P800 series motherboard)
+ pci:v00001106d00003044sv00001043sd000081FE*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (Motherboard)
+ pci:v00001106d00003044sv00001458sd00001000*
+- ID_MODEL_FROM_DATABASE=GA-7VT600-1394 Motherboard
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (GA-7VT600-1394 Motherboard)
+ pci:v00001106d00003044sv00001462sd0000207D*
+- ID_MODEL_FROM_DATABASE=K8NGM2 series motherboard
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (K8NGM2 series motherboard)
+ pci:v00001106d00003044sv00001462sd0000217D*
+- ID_MODEL_FROM_DATABASE=Aspire L250
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (Aspire L250)
+ pci:v00001106d00003044sv00001462sd0000590D*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (KT6 Delta-FIS2R (MS-6590))
+ pci:v00001106d00003044sv00001462sd0000702D*
+- ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (K8T NEO 2 motherboard)
+ pci:v00001106d00003044sv00001462sd0000971D*
+- ID_MODEL_FROM_DATABASE=MS-6917
++ ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (MS-6917)
+ pci:v00001106d00003050*
+  ID_MODEL_FROM_DATABASE=VT82C596 Power Management
+@@ -29709,205 +29709,205 @@ pci:v00001106d00003057*
+  ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI]
+ pci:v00001106d00003057sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (P6VXA Motherboard)
+ pci:v00001106d00003057sv00001019sd00000987*
+- ID_MODEL_FROM_DATABASE=K7VZA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (K7VZA Motherboard)
+ pci:v00001106d00003057sv00001043sd00008033*
+- ID_MODEL_FROM_DATABASE=A7V Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (A7V Mainboard)
+ pci:v00001106d00003057sv00001043sd0000803E*
+- ID_MODEL_FROM_DATABASE=A7V-E Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (A7V-E Mainboard)
+ pci:v00001106d00003057sv00001043sd00008040*
+- ID_MODEL_FROM_DATABASE=A7M266 Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (A7M266 Mainboard)
+ pci:v00001106d00003057sv00001043sd00008042*
+- ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (A7V133/A7V133-C Mainboard)
+ pci:v00001106d00003057sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] (Magnia Z310)
+ pci:v00001106d00003058*
+  ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller
+ pci:v00001106d00003058sv00000E11sd00000097*
+- ID_MODEL_FROM_DATABASE=SoundMax Digital Integrated Audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (SoundMax Digital Integrated Audio)
+ pci:v00001106d00003058sv00000E11sd0000B194*
+- ID_MODEL_FROM_DATABASE=Soundmax integrated digital audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (Soundmax integrated digital audio)
+ pci:v00001106d00003058sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (P6VXA Motherboard)
+ pci:v00001106d00003058sv00001019sd00000987*
+- ID_MODEL_FROM_DATABASE=K7VZA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (K7VZA Motherboard)
+ pci:v00001106d00003058sv0000103Csd00001251*
+- ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard]
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (D9840-60001 [Brio BA410 Motherboard])
+ pci:v00001106d00003058sv00001043sd00001106*
+- ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (A7V133/A7V133-C Mainboard)
+ pci:v00001106d00003058sv00001106sd00004511*
+- ID_MODEL_FROM_DATABASE=Onboard Audio on EP7KXA
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (Onboard Audio on EP7KXA)
+ pci:v00001106d00003058sv00001106sd0000AA03*
+- ID_MODEL_FROM_DATABASE=VT1612A AC'97 Audio Controller
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (VT1612A AC'97 Audio Controller)
+ pci:v00001106d00003058sv000011D4sd00005348*
+- ID_MODEL_FROM_DATABASE=AD1881A audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (AD1881A audio)
+ pci:v00001106d00003058sv00001458sd00007600*
+- ID_MODEL_FROM_DATABASE=Onboard Audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (Onboard Audio)
+ pci:v00001106d00003058sv00001462sd00003091*
+- ID_MODEL_FROM_DATABASE=MS-6309 Onboard Audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (MS-6309 Onboard Audio)
+ pci:v00001106d00003058sv00001462sd00003092*
+- ID_MODEL_FROM_DATABASE=MS-6309 v2.x Mainboard (VIA VT1611A codec)
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (MS-6309 v2.x Mainboard (VIA VT1611A codec))
+ pci:v00001106d00003058sv00001462sd00003300*
+- ID_MODEL_FROM_DATABASE=MS-6330 Onboard Audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (MS-6330 Onboard Audio)
+ pci:v00001106d00003058sv000015DDsd00007609*
+- ID_MODEL_FROM_DATABASE=Onboard Audio
++ ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller (Onboard Audio)
+ pci:v00001106d00003059*
+  ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller
+ pci:v00001106d00003059sv00001019sd00000A81*
+- ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (L7VTA v1.0 Motherboard (KT400-8235))
+ pci:v00001106d00003059sv00001019sd00001877*
+- ID_MODEL_FROM_DATABASE=K8M800-M2 (V2.0) onboard audio
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (K8M800-M2 (V2.0) onboard audio)
+ pci:v00001106d00003059sv00001043sd00008095*
+- ID_MODEL_FROM_DATABASE=A7V8X Motherboard (Realtek ALC650 codec)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (A7V8X Motherboard (Realtek ALC650 codec))
+ pci:v00001106d00003059sv00001043sd000080A1*
+- ID_MODEL_FROM_DATABASE=A7V8X-X Motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (A7V8X-X Motherboard)
+ pci:v00001106d00003059sv00001043sd000080B0*
+- ID_MODEL_FROM_DATABASE=A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX])
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]))
+ pci:v00001106d00003059sv00001043sd0000810D*
+- ID_MODEL_FROM_DATABASE=Asus P5VD1-X (AD1888 codec [SoundMax])
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (Asus P5VD1-X (AD1888 codec [SoundMax]))
+ pci:v00001106d00003059sv00001043sd0000812A*
+- ID_MODEL_FROM_DATABASE=A8V Deluxe motherboard (Realtek ALC850 codec)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (A8V Deluxe motherboard (Realtek ALC850 codec))
+ pci:v00001106d00003059sv000010ECsd00008168*
+- ID_MODEL_FROM_DATABASE=High Definition Audio
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (High Definition Audio)
+ pci:v00001106d00003059sv00001106sd00003059*
+- ID_MODEL_FROM_DATABASE=L7VMM2 Motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (L7VMM2 Motherboard)
+ pci:v00001106d00003059sv00001106sd00004161*
+- ID_MODEL_FROM_DATABASE=K7VT2 motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (K7VT2 motherboard)
+ pci:v00001106d00003059sv00001106sd00004170*
+- ID_MODEL_FROM_DATABASE=PCPartner P4M800-8237R Motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (PCPartner P4M800-8237R Motherboard)
+ pci:v00001106d00003059sv00001106sd00004552*
+- ID_MODEL_FROM_DATABASE=Soyo KT-600 Dragon Plus (Realtek ALC 650)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (Soyo KT-600 Dragon Plus (Realtek ALC 650))
+ pci:v00001106d00003059sv00001297sd0000C160*
+- ID_MODEL_FROM_DATABASE=FX41 motherboard (Realtek ALC650 codec)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (FX41 motherboard (Realtek ALC650 codec))
+ pci:v00001106d00003059sv00001413sd0000147B*
+- ID_MODEL_FROM_DATABASE=KV8 Pro motherboard onboard audio
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (KV8 Pro motherboard onboard audio)
+ pci:v00001106d00003059sv00001458sd0000A002*
+- ID_MODEL_FROM_DATABASE=GA-7VAX Onboard Audio (Realtek ALC650)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (GA-7VAX Onboard Audio (Realtek ALC650))
+ pci:v00001106d00003059sv00001462sd00000080*
+- ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (K8T NEO 2 motherboard)
+ pci:v00001106d00003059sv00001462sd00003800*
+- ID_MODEL_FROM_DATABASE=KT266 onboard audio
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (KT266 onboard audio)
+ pci:v00001106d00003059sv00001462sd00005901*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (KT6 Delta-FIS2R (MS-6590))
+ pci:v00001106d00003059sv00001462sd00007181*
+- ID_MODEL_FROM_DATABASE=K8MM3-V mainboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (K8MM3-V mainboard)
+ pci:v00001106d00003059sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (KV8-MAX3 motherboard)
+ pci:v00001106d00003059sv00001695sd0000300C*
+- ID_MODEL_FROM_DATABASE=EP-8KRA2+ Mainboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (EP-8KRA2+ Mainboard)
+ pci:v00001106d00003059sv00001849sd00000850*
+- ID_MODEL_FROM_DATABASE=ASRock 775Dual-880 Pro onboard audio (Realtek ALC850)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (ASRock 775Dual-880 Pro onboard audio (Realtek ALC850))
+ pci:v00001106d00003059sv00001849sd00009739*
+- ID_MODEL_FROM_DATABASE=P4VT8 Mainboard (C-Media CMI9739A codec)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (P4VT8 Mainboard (C-Media CMI9739A codec))
+ pci:v00001106d00003059sv00001849sd00009761*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (K7VT series Motherboards)
+ pci:v00001106d00003059sv00004005sd00004710*
+- ID_MODEL_FROM_DATABASE=MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P)
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P))
+ pci:v00001106d00003059sv0000A0A0sd000001B6*
+- ID_MODEL_FROM_DATABASE=AK77-8XN onboard audio
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (AK77-8XN onboard audio)
+ pci:v00001106d00003059sv0000A0A0sd00000342*
+- ID_MODEL_FROM_DATABASE=AK86-L motherboard
++ ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller (AK86-L motherboard)
+ pci:v00001106d00003065*
+  ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II]
+ pci:v00001106d00003065sv00001043sd000080A1*
+- ID_MODEL_FROM_DATABASE=A7V8X-X Motherboard
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (A7V8X-X Motherboard)
+ pci:v00001106d00003065sv00001043sd000080ED*
+- ID_MODEL_FROM_DATABASE=A7V600-X Motherboard
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (A7V600-X Motherboard)
+ pci:v00001106d00003065sv00001106sd00000102*
+- ID_MODEL_FROM_DATABASE=VT6102 [Rhine II] Embeded Ethernet Controller on VT8235
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (VT6102 [Rhine II] Embeded Ethernet Controller on VT8235)
+ pci:v00001106d00003065sv00001186sd00001400*
+- ID_MODEL_FROM_DATABASE=DFE-530TX rev A
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (DFE-530TX rev A)
+ pci:v00001106d00003065sv00001186sd00001401*
+- ID_MODEL_FROM_DATABASE=DFE-530TX rev B
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (DFE-530TX rev B)
+ pci:v00001106d00003065sv000013B9sd00001421*
+- ID_MODEL_FROM_DATABASE=LD-10/100AL PCI Fast Ethernet Adapter (rev.B)
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (LD-10/100AL PCI Fast Ethernet Adapter (rev.B))
+ pci:v00001106d00003065sv00001462sd00007061*
+- ID_MODEL_FROM_DATABASE=MS-7061
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (MS-7061)
+ pci:v00001106d00003065sv00001462sd00007181*
+- ID_MODEL_FROM_DATABASE=K8MM3-V mainboard
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (K8MM3-V mainboard)
+ pci:v00001106d00003065sv0000147Bsd00001C09*
+- ID_MODEL_FROM_DATABASE=NV7 Motherboard
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (NV7 Motherboard)
+ pci:v00001106d00003065sv00001695sd00003005*
+- ID_MODEL_FROM_DATABASE=VT6103
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (VT6103)
+ pci:v00001106d00003065sv00001695sd0000300C*
+- ID_MODEL_FROM_DATABASE=Realtek ALC655 sound chip
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (Realtek ALC655 sound chip)
+ pci:v00001106d00003065sv00001849sd00003065*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] (K7VT series Motherboards)
+ pci:v00001106d00003068*
+  ID_MODEL_FROM_DATABASE=AC'97 Modem Controller
+ pci:v00001106d00003068sv00001462sd0000309E*
+- ID_MODEL_FROM_DATABASE=MS-6309 Saturn Motherboard
++ ID_MODEL_FROM_DATABASE=AC'97 Modem Controller (MS-6309 Saturn Motherboard)
+ pci:v00001106d00003074*
+  ID_MODEL_FROM_DATABASE=VT8233 PCI to ISA Bridge
+ pci:v00001106d00003074sv00001043sd00008052*
+- ID_MODEL_FROM_DATABASE=VT8233A
++ ID_MODEL_FROM_DATABASE=VT8233 PCI to ISA Bridge (VT8233A)
+ pci:v00001106d00003091*
+  ID_MODEL_FROM_DATABASE=VT8633 [Apollo Pro266]
+@@ -29916,13 +29916,13 @@ pci:v00001106d00003099*
+  ID_MODEL_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333]
+ pci:v00001106d00003099sv00001043sd00008064*
+- ID_MODEL_FROM_DATABASE=A7V266-E Mainboard
++ ID_MODEL_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333] (A7V266-E Mainboard)
+ pci:v00001106d00003099sv00001043sd0000807F*
+- ID_MODEL_FROM_DATABASE=A7V333 Mainboard
++ ID_MODEL_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333] (A7V333 Mainboard)
+ pci:v00001106d00003099sv00001849sd00003099*
+- ID_MODEL_FROM_DATABASE=K7VT2 motherboard
++ ID_MODEL_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333] (K7VT2 motherboard)
+ pci:v00001106d00003101*
+  ID_MODEL_FROM_DATABASE=VT8653 Host Bridge
+@@ -29937,70 +29937,70 @@ pci:v00001106d00003104*
+  ID_MODEL_FROM_DATABASE=USB 2.0
+ pci:v00001106d00003104sv00001019sd00000A81*
+- ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235)
++ ID_MODEL_FROM_DATABASE=USB 2.0 (L7VTA v1.0 Motherboard (KT400-8235))
+ pci:v00001106d00003104sv00001043sd0000808C*
+- ID_MODEL_FROM_DATABASE=A7V8X motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (A7V8X motherboard)
+ pci:v00001106d00003104sv00001043sd000080A1*
+- ID_MODEL_FROM_DATABASE=A7V8X-X motherboard rev 1.01
++ ID_MODEL_FROM_DATABASE=USB 2.0 (A7V8X-X motherboard rev 1.01)
+ pci:v00001106d00003104sv00001043sd000080ED*
+- ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (A7V600/K8V-X/A8V Deluxe motherboard)
+ pci:v00001106d00003104sv00001106sd00003104*
+- ID_MODEL_FROM_DATABASE=USB 2.0 Controller
++ ID_MODEL_FROM_DATABASE=USB 2.0 (Controller)
+ pci:v00001106d00003104sv00001297sd0000F641*
+- ID_MODEL_FROM_DATABASE=FX41 motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (FX41 motherboard)
+ pci:v00001106d00003104sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (GA-7VAX Mainboard)
+ pci:v00001106d00003104sv00001462sd00005901*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=USB 2.0 (KT6 Delta-FIS2R (MS-6590))
+ pci:v00001106d00003104sv00001462sd00007020*
+- ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (K8T NEO 2 motherboard)
+ pci:v00001106d00003104sv00001462sd00007094*
+- ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0
++ ID_MODEL_FROM_DATABASE=USB 2.0 (K8T Neo2-F V2.0)
+ pci:v00001106d00003104sv00001462sd00007120*
+- ID_MODEL_FROM_DATABASE=KT4AV motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (KT4AV motherboard)
+ pci:v00001106d00003104sv00001462sd00007181*
+- ID_MODEL_FROM_DATABASE=K8MM3-V mainboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (K8MM3-V mainboard)
+ pci:v00001106d00003104sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=USB 2.0 (KV8-MAX3 motherboard)
+ pci:v00001106d00003104sv0000182Dsd0000201D*
+- ID_MODEL_FROM_DATABASE=CN-029 USB 2.0 4 port PCI Card
++ ID_MODEL_FROM_DATABASE=USB 2.0 (CN-029 USB 2.0 4 port PCI Card)
+ pci:v00001106d00003104sv00001849sd00003104*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=USB 2.0 (K7VT series Motherboards)
+ pci:v00001106d00003104sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++ ID_MODEL_FROM_DATABASE=USB 2.0 (ZBOX nano VD01)
+ pci:v00001106d00003106*
+  ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III]
+ pci:v00001106d00003106sv00001106sd00000105*
+- ID_MODEL_FROM_DATABASE=VT6106S [Rhine-III]
++ ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III] (VT6106S [Rhine-III])
+ pci:v00001106d00003106sv00001186sd00001403*
+- ID_MODEL_FROM_DATABASE=DFE-530TX rev C
++ ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III] (DFE-530TX rev C)
+ pci:v00001106d00003106sv00001186sd00001405*
+- ID_MODEL_FROM_DATABASE=DFE-520TX Fast Ethernet PCI Adapter
++ ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III] (DFE-520TX Fast Ethernet PCI Adapter)
+ pci:v00001106d00003106sv00001186sd00001406*
+- ID_MODEL_FROM_DATABASE=DFE-530TX+ rev F2
++ ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III] (DFE-530TX+ rev F2)
+ pci:v00001106d00003106sv00001186sd00001407*
+- ID_MODEL_FROM_DATABASE=DFE-538TX
++ ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III] (DFE-538TX)
+ pci:v00001106d00003108*
+  ID_MODEL_FROM_DATABASE=K8M800/K8N800/K8N800A [S3 UniChrome Pro]
+@@ -30018,7 +30018,7 @@ pci:v00001106d00003116*
+  ID_MODEL_FROM_DATABASE=VT8375 [KM266/KL266] Host Bridge
+ pci:v00001106d00003116sv00001297sd0000F641*
+- ID_MODEL_FROM_DATABASE=FX41 motherboard
++ ID_MODEL_FROM_DATABASE=VT8375 [KM266/KL266] Host Bridge (FX41 motherboard)
+ pci:v00001106d00003118*
+  ID_MODEL_FROM_DATABASE=CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro]
+@@ -30045,7 +30045,7 @@ pci:v00001106d00003147*
+  ID_MODEL_FROM_DATABASE=VT8233A ISA Bridge
+ pci:v00001106d00003147sv00001043sd0000808C*
+- ID_MODEL_FROM_DATABASE=A7V333 motherboard
++ ID_MODEL_FROM_DATABASE=VT8233A ISA Bridge (A7V333 motherboard)
+ pci:v00001106d00003148*
+  ID_MODEL_FROM_DATABASE=P4M266 Host Bridge
+@@ -30054,34 +30054,34 @@ pci:v00001106d00003149*
+  ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller
+ pci:v00001106d00003149sv00001043sd000080ED*
+- ID_MODEL_FROM_DATABASE=A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard)
+ pci:v00001106d00003149sv00001458sd0000B003*
+- ID_MODEL_FROM_DATABASE=GA-7VM400AM(F) Motherboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (GA-7VM400AM(F) Motherboard)
+ pci:v00001106d00003149sv00001462sd00005901*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (KT6 Delta-FIS2R (MS-6590))
+ pci:v00001106d00003149sv00001462sd00007020*
+- ID_MODEL_FROM_DATABASE=K8T Neo 2 Motherboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (K8T Neo 2 Motherboard)
+ pci:v00001106d00003149sv00001462sd00007094*
+- ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (K8T Neo2-F V2.0)
+ pci:v00001106d00003149sv00001462sd00007181*
+- ID_MODEL_FROM_DATABASE=K8MM3-V mainboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (K8MM3-V mainboard)
+ pci:v00001106d00003149sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (KV8-MAX3 motherboard)
+ pci:v00001106d00003149sv0000147Bsd00001408*
+- ID_MODEL_FROM_DATABASE=KV7
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (KV7)
+ pci:v00001106d00003149sv00001849sd00003149*
+- ID_MODEL_FROM_DATABASE=K7VT6 motherboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (K7VT6 motherboard)
+ pci:v00001106d00003149sv0000A0A0sd000004AD*
+- ID_MODEL_FROM_DATABASE=AK86-L motherboard
++ ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller (AK86-L motherboard)
+ pci:v00001106d00003156*
+  ID_MODEL_FROM_DATABASE=P/KN266 Host Bridge
+@@ -30093,40 +30093,40 @@ pci:v00001106d00003164*
+  ID_MODEL_FROM_DATABASE=VT6410 ATA133 RAID controller
+ pci:v00001106d00003164sv00001043sd000080F4*
+- ID_MODEL_FROM_DATABASE=P4P800 Mainboard Deluxe ATX
++ ID_MODEL_FROM_DATABASE=VT6410 ATA133 RAID controller (P4P800 Mainboard Deluxe ATX)
+ pci:v00001106d00003164sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=VT6410 ATA133 RAID controller (915P/G Neo2)
+ pci:v00001106d00003168*
+  ID_MODEL_FROM_DATABASE=P4X333/P4X400/PT800 AGP Bridge
+ pci:v00001106d00003168sv00001849sd00003168*
+- ID_MODEL_FROM_DATABASE=P4VT8 Mainboard
++ ID_MODEL_FROM_DATABASE=P4X333/P4X400/PT800 AGP Bridge (P4VT8 Mainboard)
+ pci:v00001106d00003177*
+  ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge
+ pci:v00001106d00003177sv00001019sd00000A81*
+- ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235)
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (L7VTA v1.0 Motherboard (KT400-8235))
+ pci:v00001106d00003177sv00001043sd0000808C*
+- ID_MODEL_FROM_DATABASE=A7V8X motherboard
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (A7V8X motherboard)
+ pci:v00001106d00003177sv00001043sd000080A1*
+- ID_MODEL_FROM_DATABASE=A7V8X-X motherboard
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (A7V8X-X motherboard)
+ pci:v00001106d00003177sv00001106sd00000000*
+- ID_MODEL_FROM_DATABASE=KT4AV motherboard
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (KT4AV motherboard)
+ pci:v00001106d00003177sv00001297sd0000F641*
+- ID_MODEL_FROM_DATABASE=FX41 motherboard
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (FX41 motherboard)
+ pci:v00001106d00003177sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (GA-7VAX Mainboard)
+ pci:v00001106d00003177sv00001849sd00003177*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge (K7VT series Motherboards)
+ pci:v00001106d00003178*
+  ID_MODEL_FROM_DATABASE=ProSavageDDR P4N333 Host Bridge
+@@ -30135,25 +30135,25 @@ pci:v00001106d00003188*
+  ID_MODEL_FROM_DATABASE=VT8385 [K8T800 AGP] Host Bridge
+ pci:v00001106d00003188sv00001043sd000080A3*
+- ID_MODEL_FROM_DATABASE=K8V Deluxe/K8V-X motherboard
++ ID_MODEL_FROM_DATABASE=VT8385 [K8T800 AGP] Host Bridge (K8V Deluxe/K8V-X motherboard)
+ pci:v00001106d00003188sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VT8385 [K8T800 AGP] Host Bridge (KV8-MAX3 motherboard)
+ pci:v00001106d00003189*
+  ID_MODEL_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge
+ pci:v00001106d00003189sv00001043sd0000807F*
+- ID_MODEL_FROM_DATABASE=A7V8X motherboard
++ ID_MODEL_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge (A7V8X motherboard)
+ pci:v00001106d00003189sv00001106sd00000000*
+- ID_MODEL_FROM_DATABASE=KT4AV motherboard (KT400A)
++ ID_MODEL_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge (KT4AV motherboard (KT400A))
+ pci:v00001106d00003189sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard
++ ID_MODEL_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge (GA-7VAX Mainboard)
+ pci:v00001106d00003189sv00001849sd00003189*
+- ID_MODEL_FROM_DATABASE=K7VT series Motherboards
++ ID_MODEL_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge (K7VT series Motherboards)
+ pci:v00001106d00003204*
+  ID_MODEL_FROM_DATABASE=K8M800 Host Bridge
+@@ -30162,7 +30162,7 @@ pci:v00001106d00003205*
+  ID_MODEL_FROM_DATABASE=VT8378 [KM400/A] Chipset Host Bridge
+ pci:v00001106d00003205sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-7VM400M Motherboard
++ ID_MODEL_FROM_DATABASE=VT8378 [KM400/A] Chipset Host Bridge (GA-7VM400M Motherboard)
+ pci:v00001106d00003208*
+  ID_MODEL_FROM_DATABASE=PT890 Host Bridge
+@@ -30177,19 +30177,19 @@ pci:v00001106d00003227*
+  ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South]
+ pci:v00001106d00003227sv00001043sd000080ED*
+- ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard
++ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (A7V600/K8V-X/A8V Deluxe motherboard)
+ pci:v00001106d00003227sv00001106sd00003227*
+- ID_MODEL_FROM_DATABASE=DFI KT600-AL / Soltek SL-B9D-FGR Motherboard
++ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (DFI KT600-AL / Soltek SL-B9D-FGR Motherboard)
+ pci:v00001106d00003227sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-7VT600 Motherboard
++ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (GA-7VT600 Motherboard)
+ pci:v00001106d00003227sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (KV8-MAX3 motherboard)
+ pci:v00001106d00003227sv00001849sd00003227*
+- ID_MODEL_FROM_DATABASE=K7VT4 motherboard
++ ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] (K7VT4 motherboard)
+ pci:v00001106d00003230*
+  ID_MODEL_FROM_DATABASE=K8M890CE/K8N890CE [Chrome 9]
+@@ -30237,7 +30237,7 @@ pci:v00001106d00003288*
+  ID_MODEL_FROM_DATABASE=VT8237A/VT8251 HDA Controller
+ pci:v00001106d00003288sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX VD01
++ ID_MODEL_FROM_DATABASE=VT8237A/VT8251 HDA Controller (ZBOX VD01)
+ pci:v00001106d00003290*
+  ID_MODEL_FROM_DATABASE=K8M890 Host Bridge
+@@ -30294,10 +30294,10 @@ pci:v00001106d00003403*
+  ID_MODEL_FROM_DATABASE=VT6315 Series Firewire Controller
+ pci:v00001106d00003403sv00001043sd00008374*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=VT6315 Series Firewire Controller (M5A88-V EVO)
+ pci:v00001106d00003403sv00001043sd00008384*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=VT6315 Series Firewire Controller (P8P67 Deluxe Motherboard)
+ pci:v00001106d00003409*
+  ID_MODEL_FROM_DATABASE=VX855/VX875 DRAM Bus Control
+@@ -30306,7 +30306,7 @@ pci:v00001106d00003410*
+  ID_MODEL_FROM_DATABASE=VX900 DRAM Bus Control
+ pci:v00001106d00003410sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++ ID_MODEL_FROM_DATABASE=VX900 DRAM Bus Control (ZBOX nano VD01)
+ pci:v00001106d00003432*
+  ID_MODEL_FROM_DATABASE=VL80x xHCI USB 3.0 Controller
+@@ -30378,7 +30378,7 @@ pci:v00001106d00004410*
+  ID_MODEL_FROM_DATABASE=VX900 Power Management and Chip Testing Control
+ pci:v00001106d00004410sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++ ID_MODEL_FROM_DATABASE=VX900 Power Management and Chip Testing Control (ZBOX nano VD01)
+ pci:v00001106d00005030*
+  ID_MODEL_FROM_DATABASE=VT82C596 ACPI [Apollo PRO]
+@@ -30456,7 +30456,7 @@ pci:v00001106d00006410*
+  ID_MODEL_FROM_DATABASE=VX900 Scratch Registers
+ pci:v00001106d00006410sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++ ID_MODEL_FROM_DATABASE=VX900 Scratch Registers (ZBOX nano VD01)
+ pci:v00001106d00007122*
+  ID_MODEL_FROM_DATABASE=VX900 Graphics [Chrome9 HD]
+@@ -30468,10 +30468,10 @@ pci:v00001106d00007205*
+  ID_MODEL_FROM_DATABASE=KM400/KN400/P4M800 [S3 UniChrome]
+ pci:v00001106d00007205sv00001458sd0000D000*
+- ID_MODEL_FROM_DATABASE=Gigabyte GA-7VM400(A)M(F) Motherboard
++ ID_MODEL_FROM_DATABASE=KM400/KN400/P4M800 [S3 UniChrome] (Gigabyte GA-7VM400(A)M(F) Motherboard)
+ pci:v00001106d00007205sv00001462sd00007061*
+- ID_MODEL_FROM_DATABASE=MS-7061
++ ID_MODEL_FROM_DATABASE=KM400/KN400/P4M800 [S3 UniChrome] (MS-7061)
+ pci:v00001106d00007208*
+  ID_MODEL_FROM_DATABASE=PT890 Host Bridge
+@@ -30534,7 +30534,7 @@ pci:v00001106d00007410*
+  ID_MODEL_FROM_DATABASE=VX900 North-South Module Interface Control
+ pci:v00001106d00007410sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++ ID_MODEL_FROM_DATABASE=VX900 North-South Module Interface Control (ZBOX nano VD01)
+ pci:v00001106d00008231*
+  ID_MODEL_FROM_DATABASE=VT8231 [PCI-to-ISA Bridge]
+@@ -30564,7 +30564,7 @@ pci:v00001106d00008410*
+  ID_MODEL_FROM_DATABASE=VX900 Bus Control and Power Management
+ pci:v00001106d00008410sv000019DAsd0000A179*
+- ID_MODEL_FROM_DATABASE=ZBOX VD01
++ ID_MODEL_FROM_DATABASE=VX900 Bus Control and Power Management (ZBOX VD01)
+ pci:v00001106d00008500*
+  ID_MODEL_FROM_DATABASE=KLE133/PLE133/PLE133T
+@@ -30582,7 +30582,7 @@ pci:v00001106d00008598*
+  ID_MODEL_FROM_DATABASE=VT82C598/694x [Apollo MVP3/Pro133x AGP]
+ pci:v00001106d00008598sv00001019sd00000985*
+- ID_MODEL_FROM_DATABASE=P6VXA Motherboard
++ ID_MODEL_FROM_DATABASE=VT82C598/694x [Apollo MVP3/Pro133x AGP] (P6VXA Motherboard)
+ pci:v00001106d00008601*
+  ID_MODEL_FROM_DATABASE=VT8601 [Apollo ProMedia AGP]
+@@ -30669,7 +30669,7 @@ pci:v00001106d0000B188*
+  ID_MODEL_FROM_DATABASE=VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South]
+ pci:v00001106d0000B188sv0000147Bsd00001407*
+- ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard
++ ID_MODEL_FROM_DATABASE=VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] (KV8-MAX3 motherboard)
+ pci:v00001106d0000B198*
+  ID_MODEL_FROM_DATABASE=VT8237/VX700 PCI Bridge
+@@ -30846,7 +30846,7 @@ pci:v0000110Ad00004029sv0000110Asd00004029*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 A2
+ pci:v0000110Ad00004029sv0000110Asd0000C029*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5614 A2
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 A2 (SIMATIC NET CP 5614 A2)
+ pci:v0000110Ad00004035*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1613 A2
+@@ -30864,7 +30864,7 @@ pci:v0000110Ad00004069sv0000110Asd00004069*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5623
+ pci:v0000110Ad00004069sv0000110Asd0000C069*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5624
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5623 (SIMATIC NET CP 5624)
+ pci:v0000110Ad0000407C*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5612
+@@ -30942,25 +30942,25 @@ pci:v00001113d00001211*
+  ID_MODEL_FROM_DATABASE=SMC2-1211TX
+ pci:v00001113d00001211sv0000103Csd00001207*
+- ID_MODEL_FROM_DATABASE=EN-1207D Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SMC2-1211TX (EN-1207D Fast Ethernet Adapter)
+ pci:v00001113d00001211sv00001113sd00001211*
+- ID_MODEL_FROM_DATABASE=EN-1207D Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SMC2-1211TX (EN-1207D Fast Ethernet Adapter)
+ pci:v00001113d00001216*
+  ID_MODEL_FROM_DATABASE=EN-1216 Ethernet Adapter
+ pci:v00001113d00001216sv00001113sd00001216*
+- ID_MODEL_FROM_DATABASE=EN1207F series PCI Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=EN-1216 Ethernet Adapter (EN1207F series PCI Fast Ethernet Adapter)
+ pci:v00001113d00001216sv00001113sd00002220*
+- ID_MODEL_FROM_DATABASE=EN2220A Cardbus Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=EN-1216 Ethernet Adapter (EN2220A Cardbus Fast Ethernet Adapter)
+ pci:v00001113d00001216sv00001113sd00002242*
+- ID_MODEL_FROM_DATABASE=EN2242 10/100 Ethernet Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=EN-1216 Ethernet Adapter (EN2242 10/100 Ethernet Mini-PCI Card)
+ pci:v00001113d00001216sv0000111Asd00001020*
+- ID_MODEL_FROM_DATABASE=SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?]
++ ID_MODEL_FROM_DATABASE=EN-1216 Ethernet Adapter (SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?])
+ pci:v00001113d00001217*
+  ID_MODEL_FROM_DATABASE=EN-1217 Ethernet Adapter
+@@ -31272,37 +31272,37 @@ pci:v0000111Ad00000003*
+  ID_MODEL_FROM_DATABASE=ENI-25P ATM
+ pci:v0000111Ad00000003sv0000111Asd00000000*
+- ID_MODEL_FROM_DATABASE=ENI-25p Miniport ATM Adapter
++ ID_MODEL_FROM_DATABASE=ENI-25P ATM (ENI-25p Miniport ATM Adapter)
+ pci:v0000111Ad00000005*
+  ID_MODEL_FROM_DATABASE=SpeedStream (LANAI)
+ pci:v0000111Ad00000005sv0000111Asd00000001*
+- ID_MODEL_FROM_DATABASE=ENI-3010 ATM
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3010 ATM)
+ pci:v0000111Ad00000005sv0000111Asd00000009*
+- ID_MODEL_FROM_DATABASE=ENI-3060 ADSL (VPI=0)
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3060 ADSL (VPI=0))
+ pci:v0000111Ad00000005sv0000111Asd00000101*
+- ID_MODEL_FROM_DATABASE=ENI-3010 ATM
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3010 ATM)
+ pci:v0000111Ad00000005sv0000111Asd00000109*
+- ID_MODEL_FROM_DATABASE=ENI-3060CO ADSL (VPI=0)
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3060CO ADSL (VPI=0))
+ pci:v0000111Ad00000005sv0000111Asd00000809*
+- ID_MODEL_FROM_DATABASE=ENI-3060 ADSL (VPI=0 or 8)
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3060 ADSL (VPI=0 or 8))
+ pci:v0000111Ad00000005sv0000111Asd00000909*
+- ID_MODEL_FROM_DATABASE=ENI-3060CO ADSL (VPI=0 or 8)
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3060CO ADSL (VPI=0 or 8))
+ pci:v0000111Ad00000005sv0000111Asd00000A09*
+- ID_MODEL_FROM_DATABASE=ENI-3060 ADSL (VPI=<0..15>)
++ ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) (ENI-3060 ADSL (VPI=<0..15>))
+ pci:v0000111Ad00000007*
+  ID_MODEL_FROM_DATABASE=SpeedStream ADSL
+ pci:v0000111Ad00000007sv0000111Asd00001001*
+- ID_MODEL_FROM_DATABASE=ENI-3061 ADSL [ASIC]
++ ID_MODEL_FROM_DATABASE=SpeedStream ADSL (ENI-3061 ADSL [ASIC])
+ pci:v0000111Ad00001020*
+  ID_MODEL_FROM_DATABASE=SpeedStream PCI 10/100 Network Card
+@@ -31446,7 +31446,7 @@ pci:v0000111Dd0000806A*
+  ID_MODEL_FROM_DATABASE=PES24T3G2 PCI Express Gen2 Switch
+ pci:v0000111Dd0000806Asv000014C1sd0000000C*
+- ID_MODEL_FROM_DATABASE=10G-PCIE2-8B2
++ ID_MODEL_FROM_DATABASE=PES24T3G2 PCI Express Gen2 Switch (10G-PCIE2-8B2)
+ pci:v0000111Dd0000806C*
+  ID_MODEL_FROM_DATABASE=PES16T4A/4T4G2 PCI Express Gen2 Switch
+@@ -31515,7 +31515,7 @@ pci:v00001127d00000400*
+  ID_MODEL_FROM_DATABASE=ForeRunnerHE ATM Adapter
+ pci:v00001127d00000400sv00001127sd00000400*
+- ID_MODEL_FROM_DATABASE=ForeRunnerHE ATM
++ ID_MODEL_FROM_DATABASE=ForeRunnerHE ATM Adapter (ForeRunnerHE ATM)
+ pci:v00001129*
+  ID_VENDOR_FROM_DATABASE=Firmworks
+@@ -31557,13 +31557,13 @@ pci:v00001131d00001561*
+  ID_MODEL_FROM_DATABASE=USB 1.1 Host Controller
+ pci:v00001131d00001561sv00001775sd0000C200*
+- ID_MODEL_FROM_DATABASE=C2K onboard USB 1.1 host controller
++ ID_MODEL_FROM_DATABASE=USB 1.1 Host Controller (C2K onboard USB 1.1 host controller)
+ pci:v00001131d00001562*
+  ID_MODEL_FROM_DATABASE=USB 2.0 Host Controller
+ pci:v00001131d00001562sv00001775sd0000C200*
+- ID_MODEL_FROM_DATABASE=C2K onboard USB 2.0 host controller
++ ID_MODEL_FROM_DATABASE=USB 2.0 Host Controller (C2K onboard USB 2.0 host controller)
+ pci:v00001131d00003400*
+  ID_MODEL_FROM_DATABASE=SmartPCI56(UCB1500) 56K Modem
+@@ -31572,49 +31572,49 @@ pci:v00001131d00005400*
+  ID_MODEL_FROM_DATABASE=TriMedia TM1000/1100
+ pci:v00001131d00005400sv000012CAsd00000000*
+- ID_MODEL_FROM_DATABASE=BlueICE
++ ID_MODEL_FROM_DATABASE=TriMedia TM1000/1100 (BlueICE)
+ pci:v00001131d00005402*
+  ID_MODEL_FROM_DATABASE=TriMedia TM1300
+ pci:v00001131d00005402sv00001244sd00000F00*
+- ID_MODEL_FROM_DATABASE=Fritz!Card DSL
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (Fritz!Card DSL)
+ pci:v00001131d00005402sv000015EBsd00001300*
+- ID_MODEL_FROM_DATABASE=DT1300
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1300)
+ pci:v00001131d00005402sv000015EBsd00001302*
+- ID_MODEL_FROM_DATABASE=DT1302
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1302)
+ pci:v00001131d00005402sv000015EBsd00001304*
+- ID_MODEL_FROM_DATABASE=DT1304
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1304)
+ pci:v00001131d00005402sv000015EBsd00001305*
+- ID_MODEL_FROM_DATABASE=DT1305
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1305)
+ pci:v00001131d00005402sv000015EBsd00001306*
+- ID_MODEL_FROM_DATABASE=PMCDT1306
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (PMCDT1306)
+ pci:v00001131d00005402sv000015EBsd00001308*
+- ID_MODEL_FROM_DATABASE=DT1308
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1308)
+ pci:v00001131d00005402sv000015EBsd00001331*
+- ID_MODEL_FROM_DATABASE=DT1301 with SAA7121
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1301 with SAA7121)
+ pci:v00001131d00005402sv000015EBsd00001337*
+- ID_MODEL_FROM_DATABASE=DT1301 with SAA7127
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (DT1301 with SAA7127)
+ pci:v00001131d00005402sv000015EBsd00002D3D*
+- ID_MODEL_FROM_DATABASE=X3D
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (X3D)
+ pci:v00001131d00005402sv000015EBsd00007022*
+- ID_MODEL_FROM_DATABASE=PTM1300
++ ID_MODEL_FROM_DATABASE=TriMedia TM1300 (PTM1300)
+ pci:v00001131d00005405*
+  ID_MODEL_FROM_DATABASE=TriMedia TM1500
+ pci:v00001131d00005405sv00001136sd00000005*
+- ID_MODEL_FROM_DATABASE=LCP-1500
++ ID_MODEL_FROM_DATABASE=TriMedia TM1500 (LCP-1500)
+ pci:v00001131d00005406*
+  ID_MODEL_FROM_DATABASE=TriMedia TM1700
+@@ -31623,409 +31623,409 @@ pci:v00001131d0000540B*
+  ID_MODEL_FROM_DATABASE=PNX1005 Media Processor
+ pci:v00001131d0000540Bsv00001131sd00000020*
+- ID_MODEL_FROM_DATABASE=PNXLite PCI Demo Board
++ ID_MODEL_FROM_DATABASE=PNX1005 Media Processor (PNXLite PCI Demo Board)
+ pci:v00001131d00007130*
+  ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder
+ pci:v00001131d00007130sv00000000sd00004016*
+- ID_MODEL_FROM_DATABASE=Behold TV 401
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Behold TV 401)
+ pci:v00001131d00007130sv00000000sd00004051*
+- ID_MODEL_FROM_DATABASE=Behold TV 405 FM
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Behold TV 405 FM)
+ pci:v00001131d00007130sv00000000sd00005051*
+- ID_MODEL_FROM_DATABASE=Behold TV 505 RDS
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Behold TV 505 RDS)
+ pci:v00001131d00007130sv00000000sd0000505B*
+- ID_MODEL_FROM_DATABASE=Behold TV 505 RDS
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Behold TV 505 RDS)
+ pci:v00001131d00007130sv0000102Bsd000048D0*
+- ID_MODEL_FROM_DATABASE=Matrox CronosPlus
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Matrox CronosPlus)
+ pci:v00001131d00007130sv00001048sd0000226B*
+- ID_MODEL_FROM_DATABASE=ELSA EX-VISION 300TV
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (ELSA EX-VISION 300TV)
+ pci:v00001131d00007130sv0000107Dsd00006655*
+- ID_MODEL_FROM_DATABASE=WinFast DTV1000S
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (WinFast DTV1000S)
+ pci:v00001131d00007130sv00001131sd00000000*
+- ID_MODEL_FROM_DATABASE=SAA7130-based TV tuner card
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (SAA7130-based TV tuner card)
+ pci:v00001131d00007130sv00001131sd00002001*
+- ID_MODEL_FROM_DATABASE=10MOONS PCI TV CAPTURE CARD
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (10MOONS PCI TV CAPTURE CARD)
+ pci:v00001131d00007130sv00001131sd00002005*
+- ID_MODEL_FROM_DATABASE=Techcom (India) TV Tuner Card (SSD-TV-670)
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Techcom (India) TV Tuner Card (SSD-TV-670))
+ pci:v00001131d00007130sv00001458sd00009006*
+- ID_MODEL_FROM_DATABASE=GT-PS700 DVB-S tuner
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (GT-PS700 DVB-S tuner)
+ pci:v00001131d00007130sv00001461sd0000050C*
+- ID_MODEL_FROM_DATABASE=Nagase Sangyo TransGear 3000TV
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Nagase Sangyo TransGear 3000TV)
+ pci:v00001131d00007130sv00001461sd000010FF*
+- ID_MODEL_FROM_DATABASE=AVerMedia DVD EZMaker
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (AVerMedia DVD EZMaker)
+ pci:v00001131d00007130sv00001461sd00002108*
+- ID_MODEL_FROM_DATABASE=AverMedia AverTV/305
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (AverMedia AverTV/305)
+ pci:v00001131d00007130sv00001461sd00002115*
+- ID_MODEL_FROM_DATABASE=AverMedia AverTV Studio 305
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (AverMedia AverTV Studio 305)
+ pci:v00001131d00007130sv0000153Bsd00001152*
+- ID_MODEL_FROM_DATABASE=Terratec Cinergy 200 TV
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Terratec Cinergy 200 TV)
+ pci:v00001131d00007130sv0000185Bsd0000C100*
+- ID_MODEL_FROM_DATABASE=Compro VideoMate TV PVR/FM
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Compro VideoMate TV PVR/FM)
+ pci:v00001131d00007130sv0000185Bsd0000C901*
+- ID_MODEL_FROM_DATABASE=Videomate DVB-T200
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Videomate DVB-T200)
+ pci:v00001131d00007130sv00005168sd00000138*
+- ID_MODEL_FROM_DATABASE=LifeView FlyVIDEO2000
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (LifeView FlyVIDEO2000)
+ pci:v00001131d00007130sv00005ACEsd00005010*
+- ID_MODEL_FROM_DATABASE=Behold TV 501
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Behold TV 501)
+ pci:v00001131d00007130sv00005ACEsd00005050*
+- ID_MODEL_FROM_DATABASE=Behold TV 505 FM
++ ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder (Behold TV 505 FM)
+ pci:v00001131d00007133*
+  ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder
+ pci:v00001131d00007133sv00000000sd00004091*
+- ID_MODEL_FROM_DATABASE=Beholder BeholdTV 409 FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Beholder BeholdTV 409 FM)
+ pci:v00001131d00007133sv00000000sd00005071*
+- ID_MODEL_FROM_DATABASE=Behold TV 507 RDS
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 507 RDS)
+ pci:v00001131d00007133sv00000000sd0000507B*
+- ID_MODEL_FROM_DATABASE=Behold TV 507 RDS
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 507 RDS)
+ pci:v00001131d00007133sv00000000sd00005201*
+- ID_MODEL_FROM_DATABASE=Behold TV Columbus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV Columbus)
+ pci:v00001131d00007133sv00000070sd00006701*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-1110
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (WinTV HVR-1110)
+ pci:v00001131d00007133sv00001019sd00004CB5*
+- ID_MODEL_FROM_DATABASE=Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM)
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM))
+ pci:v00001131d00007133sv00001043sd00000210*
+- ID_MODEL_FROM_DATABASE=FlyTV mini Asus Digimatrix
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (FlyTV mini Asus Digimatrix)
+ pci:v00001131d00007133sv00001043sd00004843*
+- ID_MODEL_FROM_DATABASE=ASUS TV-FM 7133
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (ASUS TV-FM 7133)
+ pci:v00001131d00007133sv00001043sd00004845*
+- ID_MODEL_FROM_DATABASE=TV-FM 7135
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (TV-FM 7135)
+ pci:v00001131d00007133sv00001043sd00004862*
+- ID_MODEL_FROM_DATABASE=P7131 Dual
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (P7131 Dual)
+ pci:v00001131d00007133sv00001043sd00004876*
+- ID_MODEL_FROM_DATABASE=My Cinema-P7131 Hybrid
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (My Cinema-P7131 Hybrid)
+ pci:v00001131d00007133sv00001131sd00000000*
+- ID_MODEL_FROM_DATABASE=SAA713x-based TV tuner card
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (SAA713x-based TV tuner card)
+ pci:v00001131d00007133sv00001131sd00002001*
+- ID_MODEL_FROM_DATABASE=Proteus Pro [philips reference design]
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Proteus Pro [philips reference design])
+ pci:v00001131d00007133sv00001131sd00002018*
+- ID_MODEL_FROM_DATABASE=Tiger reference design
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Tiger reference design)
+ pci:v00001131d00007133sv00001131sd00004EE9*
+- ID_MODEL_FROM_DATABASE=MonsterTV Mobile
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (MonsterTV Mobile)
+ pci:v00001131d00007133sv00001131sd00007133*
+- ID_MODEL_FROM_DATABASE=Pinnacle PCTV 301i
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Pinnacle PCTV 301i)
+ pci:v00001131d00007133sv000011BDsd0000002B*
+- ID_MODEL_FROM_DATABASE=PCTV Stereo
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (PCTV Stereo)
+ pci:v00001131d00007133sv000011BDsd0000002E*
+- ID_MODEL_FROM_DATABASE=PCTV 110i (saa7133)
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (PCTV 110i (saa7133))
+ pci:v00001131d00007133sv000012ABsd00000800*
+- ID_MODEL_FROM_DATABASE=PURPLE TV
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (PURPLE TV)
+ pci:v00001131d00007133sv000013C2sd00002804*
+- ID_MODEL_FROM_DATABASE=Technotrend Budget T-3000 Hybrid
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Technotrend Budget T-3000 Hybrid)
+ pci:v00001131d00007133sv00001421sd00000335*
+- ID_MODEL_FROM_DATABASE=Instant TV DVB-T Cardbus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Instant TV DVB-T Cardbus)
+ pci:v00001131d00007133sv00001421sd00001370*
+- ID_MODEL_FROM_DATABASE=Instant TV (saa7135)
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Instant TV (saa7135))
+ pci:v00001131d00007133sv00001435sd00007330*
+- ID_MODEL_FROM_DATABASE=VFG7330
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (VFG7330)
+ pci:v00001131d00007133sv00001435sd00007350*
+- ID_MODEL_FROM_DATABASE=VFG7350
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (VFG7350)
+ pci:v00001131d00007133sv00001458sd00009001*
+- ID_MODEL_FROM_DATABASE=GC-PTV-TAF Hybrid TV card
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (GC-PTV-TAF Hybrid TV card)
+ pci:v00001131d00007133sv00001458sd00009002*
+- ID_MODEL_FROM_DATABASE=GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner)
+ pci:v00001131d00007133sv00001458sd00009003*
+- ID_MODEL_FROM_DATABASE=GT-PTV-AF-RH Analog TV/FM tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (GT-PTV-AF-RH Analog TV/FM tuner)
+ pci:v00001131d00007133sv00001458sd00009004*
+- ID_MODEL_FROM_DATABASE=GT-P8000 DVB-T/Analog TV/FM tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (GT-P8000 DVB-T/Analog TV/FM tuner)
+ pci:v00001131d00007133sv00001458sd00009005*
+- ID_MODEL_FROM_DATABASE=GT-P6000 Analog TV/FM tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (GT-P6000 Analog TV/FM tuner)
+ pci:v00001131d00007133sv00001458sd00009008*
+- ID_MODEL_FROM_DATABASE=GT-P5100 Analog TV tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (GT-P5100 Analog TV tuner)
+ pci:v00001131d00007133sv00001461sd00001044*
+- ID_MODEL_FROM_DATABASE=AVerTVHD MCE A180
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (AVerTVHD MCE A180)
+ pci:v00001131d00007133sv00001461sd00004836*
+- ID_MODEL_FROM_DATABASE=M10D Hybrid DVBT
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (M10D Hybrid DVBT)
+ pci:v00001131d00007133sv00001461sd0000861E*
+- ID_MODEL_FROM_DATABASE=M105 PAL/SECAM/NTSC/FM Tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (M105 PAL/SECAM/NTSC/FM Tuner)
+ pci:v00001131d00007133sv00001461sd0000A14B*
+- ID_MODEL_FROM_DATABASE=AVerTV Studio 509
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (AVerTV Studio 509)
+ pci:v00001131d00007133sv00001461sd0000A836*
+- ID_MODEL_FROM_DATABASE=M115 DVB-T, PAL/SECAM/NTSC Tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (M115 DVB-T, PAL/SECAM/NTSC Tuner)
+ pci:v00001131d00007133sv00001461sd0000F01D*
+- ID_MODEL_FROM_DATABASE=DVB-T Super 007
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (DVB-T Super 007)
+ pci:v00001131d00007133sv00001461sd0000F31F*
+- ID_MODEL_FROM_DATABASE=Avermedia AVerTV GO 007 FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Avermedia AVerTV GO 007 FM)
+ pci:v00001131d00007133sv00001461sd0000F936*
+- ID_MODEL_FROM_DATABASE=Hybrid+FM PCI (rev A16D)
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Hybrid+FM PCI (rev A16D))
+ pci:v00001131d00007133sv00001462sd00006231*
+- ID_MODEL_FROM_DATABASE=TV@nywhere Plus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (TV@nywhere Plus)
+ pci:v00001131d00007133sv00001489sd00000214*
+- ID_MODEL_FROM_DATABASE=LifeView FlyTV Platinum FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyTV Platinum FM)
+ pci:v00001131d00007133sv000014C0sd00001212*
+- ID_MODEL_FROM_DATABASE=LifeView FlyTV Platinum Mini2
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyTV Platinum Mini2)
+ pci:v00001131d00007133sv0000153Bsd00001160*
+- ID_MODEL_FROM_DATABASE=Cinergy 250 PCI TV
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Cinergy 250 PCI TV)
+ pci:v00001131d00007133sv0000153Bsd00001162*
+- ID_MODEL_FROM_DATABASE=Terratec Cinergy 400 mobile
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Terratec Cinergy 400 mobile)
+ pci:v00001131d00007133sv000017DEsd00007256*
+- ID_MODEL_FROM_DATABASE=PlusTV All In One PI610 card
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (PlusTV All In One PI610 card)
+ pci:v00001131d00007133sv000017DEsd00007350*
+- ID_MODEL_FROM_DATABASE=ATSC 110 Digital / Analog HDTV Tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (ATSC 110 Digital / Analog HDTV Tuner)
+ pci:v00001131d00007133sv000017DEsd00007352*
+- ID_MODEL_FROM_DATABASE=ATSC 115 Digital / Analog HDTV Tuner
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (ATSC 115 Digital / Analog HDTV Tuner)
+ pci:v00001131d00007133sv0000185Bsd0000C100*
+- ID_MODEL_FROM_DATABASE=VideoMate TV
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (VideoMate TV)
+ pci:v00001131d00007133sv0000185Bsd0000C900*
+- ID_MODEL_FROM_DATABASE=VideoMate T750
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (VideoMate T750)
+ pci:v00001131d00007133sv00005168sd00000306*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T DUO
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB-T DUO)
+ pci:v00001131d00007133sv00005168sd00000319*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB Trio
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB Trio)
+ pci:v00001131d00007133sv00005168sd00000502*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T Duo CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB-T Duo CardBus)
+ pci:v00001131d00007133sv00005168sd00000520*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB Trio CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB Trio CardBus)
+ pci:v00001131d00007133sv00005168sd00001502*
+- ID_MODEL_FROM_DATABASE=LifeView FlyTV CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyTV CardBus)
+ pci:v00001131d00007133sv00005168sd00002502*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB-T CardBus)
+ pci:v00001131d00007133sv00005168sd00002520*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB-S Duo CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB-S Duo CardBus)
+ pci:v00001131d00007133sv00005168sd00003502*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T Hybrid CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB-T Hybrid CardBus)
+ pci:v00001131d00007133sv00005168sd00003520*
+- ID_MODEL_FROM_DATABASE=LifeView FlyDVB Trio N CardBus
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (LifeView FlyDVB Trio N CardBus)
+ pci:v00001131d00007133sv00005ACEsd00005030*
+- ID_MODEL_FROM_DATABASE=Behold TV 503 FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 503 FM)
+ pci:v00001131d00007133sv00005ACEsd00005090*
+- ID_MODEL_FROM_DATABASE=Behold TV 509 FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 509 FM)
+ pci:v00001131d00007133sv00005ACEsd00006090*
+- ID_MODEL_FROM_DATABASE=Behold TV 609 FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 609 FM)
+ pci:v00001131d00007133sv00005ACEsd00006091*
+- ID_MODEL_FROM_DATABASE=Behold TV 609 FM
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 609 FM)
+ pci:v00001131d00007133sv00005ACEsd00006092*
+- ID_MODEL_FROM_DATABASE=Behold TV 609 RDS
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 609 RDS)
+ pci:v00001131d00007133sv00005ACEsd00006093*
+- ID_MODEL_FROM_DATABASE=Behold TV 609 RDS
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV 609 RDS)
+ pci:v00001131d00007133sv00005ACEsd00006190*
+- ID_MODEL_FROM_DATABASE=Behold TV M6
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV M6)
+ pci:v00001131d00007133sv00005ACEsd00006191*
+- ID_MODEL_FROM_DATABASE=Behold TV M63
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV M63)
+ pci:v00001131d00007133sv00005ACEsd00006193*
+- ID_MODEL_FROM_DATABASE=Behold TV M6 Extra
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV M6 Extra)
+ pci:v00001131d00007133sv00005ACEsd00006290*
+- ID_MODEL_FROM_DATABASE=Behold TV H6
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV H6)
+ pci:v00001131d00007133sv00005ACEsd00007090*
+- ID_MODEL_FROM_DATABASE=Behold TV A7
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV A7)
+ pci:v00001131d00007133sv00005ACEsd00007150*
+- ID_MODEL_FROM_DATABASE=Behold TV H75
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV H75)
+ pci:v00001131d00007133sv00005ACEsd00007151*
+- ID_MODEL_FROM_DATABASE=Behold TV H75
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV H75)
+ pci:v00001131d00007133sv00005ACEsd00007190*
+- ID_MODEL_FROM_DATABASE=Behold TV H7
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV H7)
+ pci:v00001131d00007133sv00005ACEsd00007191*
+- ID_MODEL_FROM_DATABASE=Behold TV H7
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV H7)
+ pci:v00001131d00007133sv00005ACEsd00007290*
+- ID_MODEL_FROM_DATABASE=Behold TV T7
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV T7)
+ pci:v00001131d00007133sv00005ACEsd00007591*
+- ID_MODEL_FROM_DATABASE=Behold TV X7
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV X7)
+ pci:v00001131d00007133sv00005ACEsd00007595*
+- ID_MODEL_FROM_DATABASE=Behold TV X7
++ ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder (Behold TV X7)
+ pci:v00001131d00007134*
+  ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder
+ pci:v00001131d00007134sv00000000sd00004036*
+- ID_MODEL_FROM_DATABASE=Behold TV 403
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 403)
+ pci:v00001131d00007134sv00000000sd00004037*
+- ID_MODEL_FROM_DATABASE=Behold TV 403 FM
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 403 FM)
+ pci:v00001131d00007134sv00000000sd00004071*
+- ID_MODEL_FROM_DATABASE=Behold TV 407 FM
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 407 FM)
+ pci:v00001131d00007134sv00001019sd00004CB4*
+- ID_MODEL_FROM_DATABASE=Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM)
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM))
+ pci:v00001131d00007134sv00001043sd00000210*
+- ID_MODEL_FROM_DATABASE=Digimatrix TV
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Digimatrix TV)
+ pci:v00001131d00007134sv00001043sd00004840*
+- ID_MODEL_FROM_DATABASE=ASUS TV-FM 7134
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (ASUS TV-FM 7134)
+ pci:v00001131d00007134sv00001043sd00004842*
+- ID_MODEL_FROM_DATABASE=TV-FM 7134
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (TV-FM 7134)
+ pci:v00001131d00007134sv00001131sd00000000*
+- ID_MODEL_FROM_DATABASE=SAA713x-based TV tuner card
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (SAA713x-based TV tuner card)
+ pci:v00001131d00007134sv00001131sd00002004*
+- ID_MODEL_FROM_DATABASE=EUROPA V3 reference design
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (EUROPA V3 reference design)
+ pci:v00001131d00007134sv00001131sd00004E85*
+- ID_MODEL_FROM_DATABASE=SKNet Monster TV
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (SKNet Monster TV)
+ pci:v00001131d00007134sv00001131sd00006752*
+- ID_MODEL_FROM_DATABASE=EMPRESS
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (EMPRESS)
+ pci:v00001131d00007134sv000011BDsd0000002B*
+- ID_MODEL_FROM_DATABASE=PCTV Stereo
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (PCTV Stereo)
+ pci:v00001131d00007134sv000011BDsd0000002D*
+- ID_MODEL_FROM_DATABASE=PCTV 300i DVB-T + PAL
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (PCTV 300i DVB-T + PAL)
+ pci:v00001131d00007134sv00001461sd00002C00*
+- ID_MODEL_FROM_DATABASE=AverTV Hybrid+FM PCI
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (AverTV Hybrid+FM PCI)
+ pci:v00001131d00007134sv00001461sd00009715*
+- ID_MODEL_FROM_DATABASE=AVerTV Studio 307
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (AVerTV Studio 307)
+ pci:v00001131d00007134sv00001461sd0000A70A*
+- ID_MODEL_FROM_DATABASE=Avermedia AVerTV 307
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Avermedia AVerTV 307)
+ pci:v00001131d00007134sv00001461sd0000A70B*
+- ID_MODEL_FROM_DATABASE=AverMedia M156 / Medion 2819
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (AverMedia M156 / Medion 2819)
+ pci:v00001131d00007134sv00001461sd0000D6EE*
+- ID_MODEL_FROM_DATABASE=Cardbus TV/Radio (E500)
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Cardbus TV/Radio (E500))
+ pci:v00001131d00007134sv00001471sd0000B7E9*
+- ID_MODEL_FROM_DATABASE=AVerTV Cardbus plus
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (AVerTV Cardbus plus)
+ pci:v00001131d00007134sv0000153Bsd00001142*
+- ID_MODEL_FROM_DATABASE=Terratec Cinergy 400 TV
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Terratec Cinergy 400 TV)
+ pci:v00001131d00007134sv0000153Bsd00001143*
+- ID_MODEL_FROM_DATABASE=Terratec Cinergy 600 TV
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Terratec Cinergy 600 TV)
+ pci:v00001131d00007134sv0000153Bsd00001158*
+- ID_MODEL_FROM_DATABASE=Terratec Cinergy 600 TV MK3
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Terratec Cinergy 600 TV MK3)
+ pci:v00001131d00007134sv00001540sd00009524*
+- ID_MODEL_FROM_DATABASE=ProVideo PV952
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (ProVideo PV952)
+ pci:v00001131d00007134sv000016BEsd00000003*
+- ID_MODEL_FROM_DATABASE=Medion 7134
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Medion 7134)
+ pci:v00001131d00007134sv0000185Bsd0000C200*
+- ID_MODEL_FROM_DATABASE=Compro VideoMate Gold+ Pal
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Compro VideoMate Gold+ Pal)
+ pci:v00001131d00007134sv0000185Bsd0000C900*
+- ID_MODEL_FROM_DATABASE=Videomate DVB-T300
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Videomate DVB-T300)
+ pci:v00001131d00007134sv00001894sd0000A006*
+- ID_MODEL_FROM_DATABASE=KNC One TV-Station DVR
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (KNC One TV-Station DVR)
+ pci:v00001131d00007134sv00001894sd0000FE01*
+- ID_MODEL_FROM_DATABASE=KNC One TV-Station RDS / Typhoon TV Tuner RDS
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (KNC One TV-Station RDS / Typhoon TV Tuner RDS)
+ pci:v00001131d00007134sv00005168sd00000138*
+- ID_MODEL_FROM_DATABASE=FLY TV PRIME 34FM
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (FLY TV PRIME 34FM)
+ pci:v00001131d00007134sv00005168sd00000300*
+- ID_MODEL_FROM_DATABASE=FlyDVB-S
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (FlyDVB-S)
+ pci:v00001131d00007134sv00005ACEsd00005070*
+- ID_MODEL_FROM_DATABASE=Behold TV 507 FM
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 507 FM)
+ pci:v00001131d00007134sv00005ACEsd00006070*
+- ID_MODEL_FROM_DATABASE=Behold TV 607 FM
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 607 FM)
+ pci:v00001131d00007134sv00005ACEsd00006071*
+- ID_MODEL_FROM_DATABASE=Behold TV 607 FM
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 607 FM)
+ pci:v00001131d00007134sv00005ACEsd00006072*
+- ID_MODEL_FROM_DATABASE=Behold TV 607 RDS
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 607 RDS)
+ pci:v00001131d00007134sv00005ACEsd00006073*
+- ID_MODEL_FROM_DATABASE=Behold TV 607 RDS
++ ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder (Behold TV 607 RDS)
+ pci:v00001131d00007145*
+  ID_MODEL_FROM_DATABASE=SAA7145
+@@ -32034,223 +32034,223 @@ pci:v00001131d00007146*
+  ID_MODEL_FROM_DATABASE=SAA7146
+ pci:v00001131d00007146sv0000110Asd00000000*
+- ID_MODEL_FROM_DATABASE=Fujitsu/Siemens DVB-C card rev1.5
++ ID_MODEL_FROM_DATABASE=SAA7146 (Fujitsu/Siemens DVB-C card rev1.5)
+ pci:v00001131d00007146sv0000110Asd0000FFFF*
+- ID_MODEL_FROM_DATABASE=Fujitsu/Siemens DVB-C card rev1.5
++ ID_MODEL_FROM_DATABASE=SAA7146 (Fujitsu/Siemens DVB-C card rev1.5)
+ pci:v00001131d00007146sv00001124sd00002581*
+- ID_MODEL_FROM_DATABASE=Leutron Vision PicPort
++ ID_MODEL_FROM_DATABASE=SAA7146 (Leutron Vision PicPort)
+ pci:v00001131d00007146sv00001131sd00004F56*
+- ID_MODEL_FROM_DATABASE=KNC1 DVB-S Budget
++ ID_MODEL_FROM_DATABASE=SAA7146 (KNC1 DVB-S Budget)
+ pci:v00001131d00007146sv00001131sd00004F60*
+- ID_MODEL_FROM_DATABASE=Fujitsu-Siemens Activy DVB-S Budget Rev AL
++ ID_MODEL_FROM_DATABASE=SAA7146 (Fujitsu-Siemens Activy DVB-S Budget Rev AL)
+ pci:v00001131d00007146sv00001131sd00004F61*
+- ID_MODEL_FROM_DATABASE=Activy DVB-S Budget Rev GR
++ ID_MODEL_FROM_DATABASE=SAA7146 (Activy DVB-S Budget Rev GR)
+ pci:v00001131d00007146sv00001131sd00005F61*
+- ID_MODEL_FROM_DATABASE=Activy DVB-T Budget
++ ID_MODEL_FROM_DATABASE=SAA7146 (Activy DVB-T Budget)
+ pci:v00001131d00007146sv0000114Bsd00002003*
+- ID_MODEL_FROM_DATABASE=DVRaptor Video Edit/Capture Card
++ ID_MODEL_FROM_DATABASE=SAA7146 (DVRaptor Video Edit/Capture Card)
+ pci:v00001131d00007146sv000011BDsd00000006*
+- ID_MODEL_FROM_DATABASE=DV500 Overlay
++ ID_MODEL_FROM_DATABASE=SAA7146 (DV500 Overlay)
+ pci:v00001131d00007146sv000011BDsd0000000A*
+- ID_MODEL_FROM_DATABASE=DV500 Overlay
++ ID_MODEL_FROM_DATABASE=SAA7146 (DV500 Overlay)
+ pci:v00001131d00007146sv000011BDsd0000000F*
+- ID_MODEL_FROM_DATABASE=DV500 Overlay
++ ID_MODEL_FROM_DATABASE=SAA7146 (DV500 Overlay)
+ pci:v00001131d00007146sv000013C2sd00000000*
+- ID_MODEL_FROM_DATABASE=Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5
++ ID_MODEL_FROM_DATABASE=SAA7146 (Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5)
+ pci:v00001131d00007146sv000013C2sd00000001*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev1.3 or rev1.6
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev1.3 or rev1.6)
+ pci:v00001131d00007146sv000013C2sd00000002*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev2.1)
+ pci:v00001131d00007146sv000013C2sd00000003*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev2.1)
+ pci:v00001131d00007146sv000013C2sd00000004*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev2.1)
+ pci:v00001131d00007146sv000013C2sd00000006*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev1.3 or rev1.6
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev1.3 or rev1.6)
+ pci:v00001131d00007146sv000013C2sd00000008*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB-T
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB-T)
+ pci:v00001131d00007146sv000013C2sd0000000A*
+- ID_MODEL_FROM_DATABASE=Octal/Technotrend DVB-C for iTV
++ ID_MODEL_FROM_DATABASE=SAA7146 (Octal/Technotrend DVB-C for iTV)
+ pci:v00001131d00007146sv000013C2sd0000000E*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.3
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev2.3)
+ pci:v00001131d00007146sv000013C2sd00001003*
+- ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card)
+ pci:v00001131d00007146sv000013C2sd00001004*
+- ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card)
+ pci:v00001131d00007146sv000013C2sd00001005*
+- ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card)
+ pci:v00001131d00007146sv000013C2sd0000100C*
+- ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card)
+ pci:v00001131d00007146sv000013C2sd0000100F*
+- ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card)
+ pci:v00001131d00007146sv000013C2sd00001010*
+- ID_MODEL_FROM_DATABASE=DVB C-1500
++ ID_MODEL_FROM_DATABASE=SAA7146 (DVB C-1500)
+ pci:v00001131d00007146sv000013C2sd00001011*
+- ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card)
+ pci:v00001131d00007146sv000013C2sd00001012*
+- ID_MODEL_FROM_DATABASE=DVB T-1500
++ ID_MODEL_FROM_DATABASE=SAA7146 (DVB T-1500)
+ pci:v00001131d00007146sv000013C2sd00001013*
+- ID_MODEL_FROM_DATABASE=SATELCO Multimedia DVB
++ ID_MODEL_FROM_DATABASE=SAA7146 (SATELCO Multimedia DVB)
+ pci:v00001131d00007146sv000013C2sd00001016*
+- ID_MODEL_FROM_DATABASE=WinTV-NOVA-SE DVB card
++ ID_MODEL_FROM_DATABASE=SAA7146 (WinTV-NOVA-SE DVB card)
+ pci:v00001131d00007146sv000013C2sd00001018*
+- ID_MODEL_FROM_DATABASE=DVB S-1401
++ ID_MODEL_FROM_DATABASE=SAA7146 (DVB S-1401)
+ pci:v00001131d00007146sv000013C2sd00001019*
+- ID_MODEL_FROM_DATABASE=S2-3200
++ ID_MODEL_FROM_DATABASE=SAA7146 (S2-3200)
+ pci:v00001131d00007146sv000013C2sd00001102*
+- ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1
++ ID_MODEL_FROM_DATABASE=SAA7146 (Technotrend/Hauppauge DVB card rev2.1)
+ pci:v00001131d00007146sv0000153Bsd00001155*
+- ID_MODEL_FROM_DATABASE=Cinergy 1200 DVB-S
++ ID_MODEL_FROM_DATABASE=SAA7146 (Cinergy 1200 DVB-S)
+ pci:v00001131d00007146sv0000153Bsd00001156*
+- ID_MODEL_FROM_DATABASE=Terratec Cynergy 1200C
++ ID_MODEL_FROM_DATABASE=SAA7146 (Terratec Cynergy 1200C)
+ pci:v00001131d00007146sv0000153Bsd00001157*
+- ID_MODEL_FROM_DATABASE=Cinergy 1200 DVB-T
++ ID_MODEL_FROM_DATABASE=SAA7146 (Cinergy 1200 DVB-T)
+ pci:v00001131d00007146sv00001894sd00000020*
+- ID_MODEL_FROM_DATABASE=KNC One DVB-C V1.0
++ ID_MODEL_FROM_DATABASE=SAA7146 (KNC One DVB-C V1.0)
+ pci:v00001131d00007146sv00001894sd00000023*
+- ID_MODEL_FROM_DATABASE=TVStation DVB-C plus
++ ID_MODEL_FROM_DATABASE=SAA7146 (TVStation DVB-C plus)
+ pci:v00001131d00007160*
+  ID_MODEL_FROM_DATABASE=SAA7160
+ pci:v00001131d00007160sv00001458sd00009009*
+- ID_MODEL_FROM_DATABASE=E8000 DVB-T/Analog TV/FM tuner
++ ID_MODEL_FROM_DATABASE=SAA7160 (E8000 DVB-T/Analog TV/FM tuner)
+ pci:v00001131d00007162*
+  ID_MODEL_FROM_DATABASE=SAA7162
+ pci:v00001131d00007162sv000011BDsd00000101*
+- ID_MODEL_FROM_DATABASE=Pinnacle PCTV 7010iX TV Card
++ ID_MODEL_FROM_DATABASE=SAA7162 (Pinnacle PCTV 7010iX TV Card)
+ pci:v00001131d00007164*
+  ID_MODEL_FROM_DATABASE=SAA7164
+ pci:v00001131d00007164sv00000070sd00008800*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd00008810*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd00008851*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd00008853*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd00008880*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd00008891*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd000088A0*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd000088A1*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2250
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2250)
+ pci:v00001131d00007164sv00000070sd00008900*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd00008901*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd00008940*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200 (submodel 89619)
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200 (submodel 89619))
+ pci:v00001131d00007164sv00000070sd00008951*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd00008953*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd00008980*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd00008991*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd00008993*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd000089A0*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007164sv00000070sd000089A1*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-2200
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ pci:v00001131d00007231*
+  ID_MODEL_FROM_DATABASE=SAA7231
+ pci:v00001131d00007231sv00005ACEsd00008000*
+- ID_MODEL_FROM_DATABASE=Behold TV H8
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV H8)
+ pci:v00001131d00007231sv00005ACEsd00008001*
+- ID_MODEL_FROM_DATABASE=Behold TV H8
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV H8)
+ pci:v00001131d00007231sv00005ACEsd00008050*
+- ID_MODEL_FROM_DATABASE=Behold TV H85
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV H85)
+ pci:v00001131d00007231sv00005ACEsd00008051*
+- ID_MODEL_FROM_DATABASE=Behold TV H85
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV H85)
+ pci:v00001131d00007231sv00005ACEsd00008100*
+- ID_MODEL_FROM_DATABASE=Behold TV A8
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV A8)
+ pci:v00001131d00007231sv00005ACEsd00008101*
+- ID_MODEL_FROM_DATABASE=Behold TV A8
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV A8)
+ pci:v00001131d00007231sv00005ACEsd00008150*
+- ID_MODEL_FROM_DATABASE=Behold TV A85
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV A85)
+ pci:v00001131d00007231sv00005ACEsd00008151*
+- ID_MODEL_FROM_DATABASE=Behold TV A85
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV A85)
+ pci:v00001131d00007231sv00005ACEsd00008201*
+- ID_MODEL_FROM_DATABASE=Behold TV T8
++ ID_MODEL_FROM_DATABASE=SAA7231 (Behold TV T8)
+ pci:v00001131d00009730*
+  ID_MODEL_FROM_DATABASE=SAA9730 Integrated Multimedia and Peripheral Controller
+ pci:v00001131d00009730sv00001131sd00000000*
+- ID_MODEL_FROM_DATABASE=Integrated Multimedia and Peripheral Controller
++ ID_MODEL_FROM_DATABASE=SAA9730 Integrated Multimedia and Peripheral Controller (Integrated Multimedia and Peripheral Controller)
+ pci:v00001132*
+  ID_VENDOR_FROM_DATABASE=Mitel Corp.
+@@ -32364,7 +32364,7 @@ pci:v00001133d0000E010*
+  ID_MODEL_FROM_DATABASE=Diva Server BRI-2M PCI
+ pci:v00001133d0000E010sv0000110Asd00000021*
+- ID_MODEL_FROM_DATABASE=Fujitsu Siemens ISDN S0
++ ID_MODEL_FROM_DATABASE=Diva Server BRI-2M PCI (Fujitsu Siemens ISDN S0)
+ pci:v00001133d0000E011*
+  ID_MODEL_FROM_DATABASE=Diva Server BRI S/T Rev 2
+@@ -32376,10 +32376,10 @@ pci:v00001133d0000E013*
+  ID_MODEL_FROM_DATABASE=4BRI
+ pci:v00001133d0000E013sv00001133sd00001300*
+- ID_MODEL_FROM_DATABASE=Diva V-4BRI-8 PCI v2
++ ID_MODEL_FROM_DATABASE=4BRI (Diva V-4BRI-8 PCI v2)
+ pci:v00001133d0000E013sv00001133sd0000E013*
+- ID_MODEL_FROM_DATABASE=Diva 4BRI-8 PCI v2
++ ID_MODEL_FROM_DATABASE=4BRI (Diva 4BRI-8 PCI v2)
+ pci:v00001133d0000E014*
+  ID_MODEL_FROM_DATABASE=Diva Server PRI-30M PCI
+@@ -32394,22 +32394,22 @@ pci:v00001133d0000E017*
+  ID_MODEL_FROM_DATABASE=Diva Server Voice 4BRI Rev 2
+ pci:v00001133d0000E017sv00001133sd0000E017*
+- ID_MODEL_FROM_DATABASE=Diva Server Voice 4BRI-8M 2.0 PCI
++ ID_MODEL_FROM_DATABASE=Diva Server Voice 4BRI Rev 2 (Diva Server Voice 4BRI-8M 2.0 PCI)
+ pci:v00001133d0000E018*
+  ID_MODEL_FROM_DATABASE=BRI
+ pci:v00001133d0000E018sv00001133sd00001800*
+- ID_MODEL_FROM_DATABASE=Diva V-BRI-2 PCI v2
++ ID_MODEL_FROM_DATABASE=BRI (Diva V-BRI-2 PCI v2)
+ pci:v00001133d0000E018sv00001133sd0000E018*
+- ID_MODEL_FROM_DATABASE=Diva BRI-2 PCI v2
++ ID_MODEL_FROM_DATABASE=BRI (Diva BRI-2 PCI v2)
+ pci:v00001133d0000E019*
+  ID_MODEL_FROM_DATABASE=Diva Server Voice PRI Rev 2
+ pci:v00001133d0000E019sv00001133sd0000E019*
+- ID_MODEL_FROM_DATABASE=Diva Server Voice PRI 2.0 PCI
++ ID_MODEL_FROM_DATABASE=Diva Server Voice PRI Rev 2 (Diva Server Voice PRI 2.0 PCI)
+ pci:v00001133d0000E01A*
+  ID_MODEL_FROM_DATABASE=Diva BRI-2FX PCI v2
+@@ -32424,85 +32424,85 @@ pci:v00001133d0000E01C*
+  ID_MODEL_FROM_DATABASE=PRI
+ pci:v00001133d0000E01Csv00001133sd00001C01*
+- ID_MODEL_FROM_DATABASE=Diva PRI/E1/T1-8 PCI v3
++ ID_MODEL_FROM_DATABASE=PRI (Diva PRI/E1/T1-8 PCI v3)
+ pci:v00001133d0000E01Csv00001133sd00001C02*
+- ID_MODEL_FROM_DATABASE=Diva PRI/T1-24 PCI(e) v3
++ ID_MODEL_FROM_DATABASE=PRI (Diva PRI/T1-24 PCI(e) v3)
+ pci:v00001133d0000E01Csv00001133sd00001C03*
+- ID_MODEL_FROM_DATABASE=Diva PRI/E1-30 PCI(e) v3
++ ID_MODEL_FROM_DATABASE=PRI (Diva PRI/E1-30 PCI(e) v3)
+ pci:v00001133d0000E01Csv00001133sd00001C04*
+- ID_MODEL_FROM_DATABASE=Diva PRI/E1/T1-CTI PCI(e) v3
++ ID_MODEL_FROM_DATABASE=PRI (Diva PRI/E1/T1-CTI PCI(e) v3)
+ pci:v00001133d0000E01Csv00001133sd00001C05*
+- ID_MODEL_FROM_DATABASE=Diva V-PRI/T1-24 PCI(e) v3
++ ID_MODEL_FROM_DATABASE=PRI (Diva V-PRI/T1-24 PCI(e) v3)
+ pci:v00001133d0000E01Csv00001133sd00001C06*
+- ID_MODEL_FROM_DATABASE=Diva V-PRI/E1-30 PCI(e) v3
++ ID_MODEL_FROM_DATABASE=PRI (Diva V-PRI/E1-30 PCI(e) v3)
+ pci:v00001133d0000E01Csv00001133sd00001C07*
+- ID_MODEL_FROM_DATABASE=Diva Server PRI/E1/T1-8 Cornet NQ
++ ID_MODEL_FROM_DATABASE=PRI (Diva Server PRI/E1/T1-8 Cornet NQ)
+ pci:v00001133d0000E01Csv00001133sd00001C08*
+- ID_MODEL_FROM_DATABASE=Diva Server PRI/T1-24 Cornet NQ
++ ID_MODEL_FROM_DATABASE=PRI (Diva Server PRI/T1-24 Cornet NQ)
+ pci:v00001133d0000E01Csv00001133sd00001C09*
+- ID_MODEL_FROM_DATABASE=Diva Server PRI/E1-30 Cornet NQ
++ ID_MODEL_FROM_DATABASE=PRI (Diva Server PRI/E1-30 Cornet NQ)
+ pci:v00001133d0000E01Csv00001133sd00001C0A*
+- ID_MODEL_FROM_DATABASE=Diva Server PRI/E1/T1 Cornet NQ
++ ID_MODEL_FROM_DATABASE=PRI (Diva Server PRI/E1/T1 Cornet NQ)
+ pci:v00001133d0000E01Csv00001133sd00001C0B*
+- ID_MODEL_FROM_DATABASE=Diva Server V-PRI/T1-24 Cornet NQ
++ ID_MODEL_FROM_DATABASE=PRI (Diva Server V-PRI/T1-24 Cornet NQ)
+ pci:v00001133d0000E01Csv00001133sd00001C0C*
+- ID_MODEL_FROM_DATABASE=Diva Server V-PRI/E1-30 Cornet NQ
++ ID_MODEL_FROM_DATABASE=PRI (Diva Server V-PRI/E1-30 Cornet NQ)
+ pci:v00001133d0000E01E*
+  ID_MODEL_FROM_DATABASE=2PRI
+ pci:v00001133d0000E01Esv00001133sd00001E01*
+- ID_MODEL_FROM_DATABASE=Diva 2PRI/E1/T1-60 PCI v1
++ ID_MODEL_FROM_DATABASE=2PRI (Diva 2PRI/E1/T1-60 PCI v1)
+ pci:v00001133d0000E01Esv00001133sd0000E01E*
+- ID_MODEL_FROM_DATABASE=Diva V-2PRI/E1/T1-60 PCI v1
++ ID_MODEL_FROM_DATABASE=2PRI (Diva V-2PRI/E1/T1-60 PCI v1)
+ pci:v00001133d0000E020*
+  ID_MODEL_FROM_DATABASE=4PRI
+ pci:v00001133d0000E020sv00001133sd00002001*
+- ID_MODEL_FROM_DATABASE=Diva 4PRI/E1/T1-120 PCI v1
++ ID_MODEL_FROM_DATABASE=4PRI (Diva 4PRI/E1/T1-120 PCI v1)
+ pci:v00001133d0000E020sv00001133sd0000E020*
+- ID_MODEL_FROM_DATABASE=Diva V-4PRI/E1/T1-120 PCI v1
++ ID_MODEL_FROM_DATABASE=4PRI (Diva V-4PRI/E1/T1-120 PCI v1)
+ pci:v00001133d0000E022*
+  ID_MODEL_FROM_DATABASE=Analog-2
+ pci:v00001133d0000E022sv00001133sd00002200*
+- ID_MODEL_FROM_DATABASE=Diva V-Analog-2 PCI v1
++ ID_MODEL_FROM_DATABASE=Analog-2 (Diva V-Analog-2 PCI v1)
+ pci:v00001133d0000E022sv00001133sd0000E022*
+- ID_MODEL_FROM_DATABASE=Diva Analog-2 PCI v1
++ ID_MODEL_FROM_DATABASE=Analog-2 (Diva Analog-2 PCI v1)
+ pci:v00001133d0000E024*
+  ID_MODEL_FROM_DATABASE=Analog-4
+ pci:v00001133d0000E024sv00001133sd00002400*
+- ID_MODEL_FROM_DATABASE=Diva V-Analog-4 PCI v1
++ ID_MODEL_FROM_DATABASE=Analog-4 (Diva V-Analog-4 PCI v1)
+ pci:v00001133d0000E024sv00001133sd0000E024*
+- ID_MODEL_FROM_DATABASE=Diva Analog-4 PCI v1
++ ID_MODEL_FROM_DATABASE=Analog-4 (Diva Analog-4 PCI v1)
+ pci:v00001133d0000E028*
+  ID_MODEL_FROM_DATABASE=Analog-8
+ pci:v00001133d0000E028sv00001133sd00002800*
+- ID_MODEL_FROM_DATABASE=Diva V-Analog-8 PCI v1
++ ID_MODEL_FROM_DATABASE=Analog-8 (Diva V-Analog-8 PCI v1)
+ pci:v00001133d0000E028sv00001133sd0000E028*
+- ID_MODEL_FROM_DATABASE=Diva Analog-8 PCI v1
++ ID_MODEL_FROM_DATABASE=Analog-8 (Diva Analog-8 PCI v1)
+ pci:v00001133d0000E02A*
+  ID_MODEL_FROM_DATABASE=Diva IPM-300 PCI v1
+@@ -32514,19 +32514,19 @@ pci:v00001133d0000E02E*
+  ID_MODEL_FROM_DATABASE=4BRI
+ pci:v00001133d0000E02Esv00001133sd00002E01*
+- ID_MODEL_FROM_DATABASE=Diva V-4BRI-8 PCIe v2
++ ID_MODEL_FROM_DATABASE=4BRI (Diva V-4BRI-8 PCIe v2)
+ pci:v00001133d0000E02Esv00001133sd0000E02E*
+- ID_MODEL_FROM_DATABASE=Diva 4BRI-8 PCIe v2
++ ID_MODEL_FROM_DATABASE=4BRI (Diva 4BRI-8 PCIe v2)
+ pci:v00001133d0000E032*
+  ID_MODEL_FROM_DATABASE=BRI
+ pci:v00001133d0000E032sv00001133sd00003201*
+- ID_MODEL_FROM_DATABASE=Diva V-BRI-2 PCIe v2
++ ID_MODEL_FROM_DATABASE=BRI (Diva V-BRI-2 PCIe v2)
+ pci:v00001133d0000E032sv00001133sd0000E032*
+- ID_MODEL_FROM_DATABASE=Diva BRI-2 PCIe v2
++ ID_MODEL_FROM_DATABASE=BRI (Diva BRI-2 PCIe v2)
+ pci:v00001133d0000E034*
+  ID_MODEL_FROM_DATABASE=Diva BRI-CTI PCI v2
+@@ -32574,88 +32574,88 @@ pci:v00001137d00000042*
+  ID_MODEL_FROM_DATABASE=VIC Management Controller
+ pci:v00001137d00000042sv00001137sd00000047*
+- ID_MODEL_FROM_DATABASE=VIC P81E PCIe Management Controller
++ ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC P81E PCIe Management Controller)
+ pci:v00001137d00000042sv00001137sd00000085*
+- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Management Controller
++ ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1225 PCIe Management Controller)
+ pci:v00001137d00000042sv00001137sd000000CD*
+- ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Management Controller
++ ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1285 PCIe Management Controller)
+ pci:v00001137d00000042sv00001137sd000000CE*
+- ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Management Controller
++ ID_MODEL_FROM_DATABASE=VIC Management Controller (VIC 1225T PCIe Management Controller)
+ pci:v00001137d00000043*
+  ID_MODEL_FROM_DATABASE=VIC Ethernet NIC
+ pci:v00001137d00000043sv00001137sd00000047*
+- ID_MODEL_FROM_DATABASE=VIC P81E PCIe Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC P81E PCIe Ethernet NIC)
+ pci:v00001137d00000043sv00001137sd00000048*
+- ID_MODEL_FROM_DATABASE=VIC M81KR Mezzanine Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC M81KR Mezzanine Ethernet NIC)
+ pci:v00001137d00000043sv00001137sd0000004F*
+- ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC 1280 Mezzanine Ethernet NIC)
+ pci:v00001137d00000043sv00001137sd00000084*
+- ID_MODEL_FROM_DATABASE=VIC 1240 MLOM Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC 1240 MLOM Ethernet NIC)
+ pci:v00001137d00000043sv00001137sd00000085*
+- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC 1225 PCIe Ethernet NIC)
+ pci:v00001137d00000043sv00001137sd000000CD*
+- ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC 1285 PCIe Ethernet NIC)
+ pci:v00001137d00000043sv00001137sd000000CE*
+- ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC (VIC 1225T PCIe Ethernet NIC)
+ pci:v00001137d00000044*
+  ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic
+ pci:v00001137d00000044sv00001137sd00000047*
+- ID_MODEL_FROM_DATABASE=VIC P81E PCIe Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC P81E PCIe Ethernet NIC Dynamic)
+ pci:v00001137d00000044sv00001137sd00000048*
+- ID_MODEL_FROM_DATABASE=VIC M81KR Mezzanine Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC M81KR Mezzanine Ethernet NIC Dynamic)
+ pci:v00001137d00000044sv00001137sd0000004F*
+- ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1280 Mezzanine Ethernet NIC Dynamic)
+ pci:v00001137d00000044sv00001137sd00000084*
+- ID_MODEL_FROM_DATABASE=VIC 1240 MLOM Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1240 MLOM Ethernet NIC Dynamic)
+ pci:v00001137d00000044sv00001137sd00000085*
+- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1225 PCIe Ethernet NIC Dynamic)
+ pci:v00001137d00000044sv00001137sd000000CD*
+- ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1285 PCIe Ethernet NIC Dynamic)
+ pci:v00001137d00000044sv00001137sd000000CE*
+- ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC Dynamic
++ ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic (VIC 1225T PCIe Ethernet NIC Dynamic)
+ pci:v00001137d00000045*
+  ID_MODEL_FROM_DATABASE=VIC FCoE HBA
+ pci:v00001137d00000045sv00001137sd00000047*
+- ID_MODEL_FROM_DATABASE=VIC P81E PCIe FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC P81E PCIe FCoE HBA)
+ pci:v00001137d00000045sv00001137sd00000048*
+- ID_MODEL_FROM_DATABASE=VIC M81KR Mezzanine FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC M81KR Mezzanine FCoE HBA)
+ pci:v00001137d00000045sv00001137sd0000004F*
+- ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1280 Mezzanine FCoE HBA)
+ pci:v00001137d00000045sv00001137sd00000084*
+- ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1240 MLOM FCoE HBA)
+ pci:v00001137d00000045sv00001137sd00000085*
+- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1225 PCIe FCoE HBA)
+ pci:v00001137d00000045sv00001137sd000000CD*
+- ID_MODEL_FROM_DATABASE=VIC 1285 PCIe FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1285 PCIe FCoE HBA)
+ pci:v00001137d00000045sv00001137sd000000CE*
+- ID_MODEL_FROM_DATABASE=VIC 1225T PCIe FCoE HBA
++ ID_MODEL_FROM_DATABASE=VIC FCoE HBA (VIC 1225T PCIe FCoE HBA)
+ pci:v00001137d0000004E*
+  ID_MODEL_FROM_DATABASE=VIC 82 PCIe Upstream Port
+@@ -32814,49 +32814,49 @@ pci:v00001148d00004000*
+  ID_MODEL_FROM_DATABASE=FDDI Adapter
+ pci:v00001148d00004000sv00000E11sd0000B03B*
+- ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI DAS Fibre SC
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (Netelligent 100 FDDI DAS Fibre SC)
+ pci:v00001148d00004000sv00000E11sd0000B03C*
+- ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI SAS Fibre SC
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (Netelligent 100 FDDI SAS Fibre SC)
+ pci:v00001148d00004000sv00000E11sd0000B03D*
+- ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI DAS UTP
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (Netelligent 100 FDDI DAS UTP)
+ pci:v00001148d00004000sv00000E11sd0000B03E*
+- ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI SAS UTP
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (Netelligent 100 FDDI SAS UTP)
+ pci:v00001148d00004000sv00000E11sd0000B03F*
+- ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI SAS Fibre MIC
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (Netelligent 100 FDDI SAS Fibre MIC)
+ pci:v00001148d00004000sv00001148sd00005521*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5521 (SK-NET FDDI-UP)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5521 (SK-NET FDDI-UP))
+ pci:v00001148d00004000sv00001148sd00005522*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5522 (SK-NET FDDI-UP DAS)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5522 (SK-NET FDDI-UP DAS))
+ pci:v00001148d00004000sv00001148sd00005541*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5541 (SK-NET FDDI-FP)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5541 (SK-NET FDDI-FP))
+ pci:v00001148d00004000sv00001148sd00005543*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5543 (SK-NET FDDI-LP)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5543 (SK-NET FDDI-LP))
+ pci:v00001148d00004000sv00001148sd00005544*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5544 (SK-NET FDDI-LP DAS)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5544 (SK-NET FDDI-LP DAS))
+ pci:v00001148d00004000sv00001148sd00005821*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5821 (SK-NET FDDI-UP64)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5821 (SK-NET FDDI-UP64))
+ pci:v00001148d00004000sv00001148sd00005822*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5822 (SK-NET FDDI-UP64 DAS)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5822 (SK-NET FDDI-UP64 DAS))
+ pci:v00001148d00004000sv00001148sd00005841*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5841 (SK-NET FDDI-FP64)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5841 (SK-NET FDDI-FP64))
+ pci:v00001148d00004000sv00001148sd00005843*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5843 (SK-NET FDDI-LP64)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5843 (SK-NET FDDI-LP64))
+ pci:v00001148d00004000sv00001148sd00005844*
+- ID_MODEL_FROM_DATABASE=FDDI SK-5844 (SK-NET FDDI-LP64 DAS)
++ ID_MODEL_FROM_DATABASE=FDDI Adapter (FDDI SK-5844 (SK-NET FDDI-LP64 DAS))
+ pci:v00001148d00004200*
+  ID_MODEL_FROM_DATABASE=Token Ring adapter
+@@ -32865,115 +32865,115 @@ pci:v00001148d00004300*
+  ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
+ pci:v00001148d00004300sv00001148sd00009821*
+- ID_MODEL_FROM_DATABASE=SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T))
+ pci:v00001148d00004300sv00001148sd00009822*
+- ID_MODEL_FROM_DATABASE=SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link))
+ pci:v00001148d00004300sv00001148sd00009841*
+- ID_MODEL_FROM_DATABASE=SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX))
+ pci:v00001148d00004300sv00001148sd00009842*
+- ID_MODEL_FROM_DATABASE=SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link))
+ pci:v00001148d00004300sv00001148sd00009843*
+- ID_MODEL_FROM_DATABASE=SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX))
+ pci:v00001148d00004300sv00001148sd00009844*
+- ID_MODEL_FROM_DATABASE=SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link))
+ pci:v00001148d00004300sv00001148sd00009861*
+- ID_MODEL_FROM_DATABASE=SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition))
+ pci:v00001148d00004300sv00001148sd00009862*
+- ID_MODEL_FROM_DATABASE=SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link))
+ pci:v00001148d00004300sv00001148sd00009871*
+- ID_MODEL_FROM_DATABASE=SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX))
+ pci:v00001148d00004300sv00001148sd00009872*
+  ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
+ pci:v00001148d00004300sv00001259sd00002970*
+- ID_MODEL_FROM_DATABASE=AT-2970SX Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2970SX Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002971*
+- ID_MODEL_FROM_DATABASE=AT-2970LX Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2970LX Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002972*
+- ID_MODEL_FROM_DATABASE=AT-2970TX Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2970TX Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002973*
+- ID_MODEL_FROM_DATABASE=AT-2971SX Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2971SX Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002974*
+- ID_MODEL_FROM_DATABASE=AT-2971T Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2971T Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002975*
+- ID_MODEL_FROM_DATABASE=AT-2970SX/2SC Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2970SX/2SC Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002976*
+- ID_MODEL_FROM_DATABASE=AT-2970LX/2SC Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2970LX/2SC Gigabit Ethernet Adapter)
+ pci:v00001148d00004300sv00001259sd00002977*
+- ID_MODEL_FROM_DATABASE=AT-2970TX/2TX Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) (AT-2970TX/2TX Gigabit Ethernet Adapter)
+ pci:v00001148d00004320*
+  ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC
+ pci:v00001148d00004320sv00001148sd00000121*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8001 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8001 Adapter)
+ pci:v00001148d00004320sv00001148sd00000221*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8002 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8002 Adapter)
+ pci:v00001148d00004320sv00001148sd00000321*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8003 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8003 Adapter)
+ pci:v00001148d00004320sv00001148sd00000421*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8004 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8004 Adapter)
+ pci:v00001148d00004320sv00001148sd00000621*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8006 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8006 Adapter)
+ pci:v00001148d00004320sv00001148sd00000721*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8007 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8007 Adapter)
+ pci:v00001148d00004320sv00001148sd00000821*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8008 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8008 Adapter)
+ pci:v00001148d00004320sv00001148sd00000921*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8009 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8009 Adapter)
+ pci:v00001148d00004320sv00001148sd00001121*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8011 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8011 Adapter)
+ pci:v00001148d00004320sv00001148sd00001221*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8012 Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (Marvell RDK-8012 Adapter)
+ pci:v00001148d00004320sv00001148sd00003221*
+- ID_MODEL_FROM_DATABASE=SK-9521 V2.0 10/100/1000Base-T Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9521 V2.0 10/100/1000Base-T Adapter)
+ pci:v00001148d00004320sv00001148sd00005021*
+- ID_MODEL_FROM_DATABASE=SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter)
+ pci:v00001148d00004320sv00001148sd00005041*
+- ID_MODEL_FROM_DATABASE=SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter)
+ pci:v00001148d00004320sv00001148sd00005043*
+- ID_MODEL_FROM_DATABASE=SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter)
+ pci:v00001148d00004320sv00001148sd00005051*
+- ID_MODEL_FROM_DATABASE=SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter)
+ pci:v00001148d00004320sv00001148sd00005061*
+- ID_MODEL_FROM_DATABASE=SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter)
+ pci:v00001148d00004320sv00001148sd00005071*
+- ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter)
+ pci:v00001148d00004320sv00001148sd00009521*
+- ID_MODEL_FROM_DATABASE=SK-9521 10/100/1000Base-T Adapter
++ ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC (SK-9521 10/100/1000Base-T Adapter)
+ pci:v00001148d00004400*
+  ID_MODEL_FROM_DATABASE=SK-9Dxx Gigabit Ethernet Adapter
+@@ -32991,25 +32991,25 @@ pci:v00001148d00009E00*
+  ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45
+ pci:v00001148d00009E00sv00001148sd00002100*
+- ID_MODEL_FROM_DATABASE=SK-9E21 Server Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E21 Server Adapter)
+ pci:v00001148d00009E00sv00001148sd000021D0*
+- ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E21D 10/100/1000Base-T Adapter)
+ pci:v00001148d00009E00sv00001148sd00002200*
+- ID_MODEL_FROM_DATABASE=SK-9E22 Server Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E22 Server Adapter)
+ pci:v00001148d00009E00sv00001148sd00008100*
+- ID_MODEL_FROM_DATABASE=SK-9E81 Server Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E81 Server Adapter)
+ pci:v00001148d00009E00sv00001148sd00008200*
+- ID_MODEL_FROM_DATABASE=SK-9E82 Server Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E82 Server Adapter)
+ pci:v00001148d00009E00sv00001148sd00009100*
+- ID_MODEL_FROM_DATABASE=SK-9E91 Server Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E91 Server Adapter)
+ pci:v00001148d00009E00sv00001148sd00009200*
+- ID_MODEL_FROM_DATABASE=SK-9E92 Server Adapter
++ ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 (SK-9E92 Server Adapter)
+ pci:v00001148d00009E01*
+  ID_MODEL_FROM_DATABASE=SK-9E21M 10/100/1000Base-T Adapter
+@@ -33111,16 +33111,16 @@ pci:v0000114Fd0000001D*
+  ID_MODEL_FROM_DATABASE=DataFire RAS T1/E1/PRI
+ pci:v0000114Fd0000001Dsv0000114Fsd00000050*
+- ID_MODEL_FROM_DATABASE=DataFire RAS E1 Adapter
++ ID_MODEL_FROM_DATABASE=DataFire RAS T1/E1/PRI (DataFire RAS E1 Adapter)
+ pci:v0000114Fd0000001Dsv0000114Fsd00000051*
+- ID_MODEL_FROM_DATABASE=DataFire RAS Dual E1 Adapter
++ ID_MODEL_FROM_DATABASE=DataFire RAS T1/E1/PRI (DataFire RAS Dual E1 Adapter)
+ pci:v0000114Fd0000001Dsv0000114Fsd00000052*
+- ID_MODEL_FROM_DATABASE=DataFire RAS T1 Adapter
++ ID_MODEL_FROM_DATABASE=DataFire RAS T1/E1/PRI (DataFire RAS T1 Adapter)
+ pci:v0000114Fd0000001Dsv0000114Fsd00000053*
+- ID_MODEL_FROM_DATABASE=DataFire RAS Dual T1 Adapter
++ ID_MODEL_FROM_DATABASE=DataFire RAS T1/E1/PRI (DataFire RAS Dual T1 Adapter)
+ pci:v0000114Fd00000023*
+  ID_MODEL_FROM_DATABASE=AccelePort RAS
+@@ -33129,10 +33129,10 @@ pci:v0000114Fd00000024*
+  ID_MODEL_FROM_DATABASE=DataFire RAS B4 ST/U
+ pci:v0000114Fd00000024sv0000114Fsd00000030*
+- ID_MODEL_FROM_DATABASE=DataFire RAS BRI U Adapter
++ ID_MODEL_FROM_DATABASE=DataFire RAS B4 ST/U (DataFire RAS BRI U Adapter)
+ pci:v0000114Fd00000024sv0000114Fsd00000031*
+- ID_MODEL_FROM_DATABASE=DataFire RAS BRI S/T Adapter
++ ID_MODEL_FROM_DATABASE=DataFire RAS B4 ST/U (DataFire RAS BRI S/T Adapter)
+ pci:v0000114Fd00000026*
+  ID_MODEL_FROM_DATABASE=AccelePort 4r 920
+@@ -33156,19 +33156,19 @@ pci:v0000114Fd00000040*
+  ID_MODEL_FROM_DATABASE=AccelePort Xp
+ pci:v0000114Fd00000040sv0000114Fsd00000042*
+- ID_MODEL_FROM_DATABASE=AccelePort 2p PCI
++ ID_MODEL_FROM_DATABASE=AccelePort Xp (AccelePort 2p PCI)
+ pci:v0000114Fd00000040sv0000114Fsd00000043*
+- ID_MODEL_FROM_DATABASE=AccelePort 4p PCI
++ ID_MODEL_FROM_DATABASE=AccelePort Xp (AccelePort 4p PCI)
+ pci:v0000114Fd00000040sv0000114Fsd00000044*
+- ID_MODEL_FROM_DATABASE=AccelePort 8p PCI
++ ID_MODEL_FROM_DATABASE=AccelePort Xp (AccelePort 8p PCI)
+ pci:v0000114Fd00000040sv0000114Fsd00000045*
+- ID_MODEL_FROM_DATABASE=AccelePort 16p PCI
++ ID_MODEL_FROM_DATABASE=AccelePort Xp (AccelePort 16p PCI)
+ pci:v0000114Fd00000040sv0000114Fsd0000004E*
+- ID_MODEL_FROM_DATABASE=AccelePort 32p PCI
++ ID_MODEL_FROM_DATABASE=AccelePort Xp (AccelePort 32p PCI)
+ pci:v0000114Fd00000042*
+  ID_MODEL_FROM_DATABASE=AccelePort 2p
+@@ -33300,22 +33300,22 @@ pci:v0000115Dd00000003*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd00000003sv00001014sd00000181*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000003sv00001014sd00001181*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000003sv00001014sd00008181*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000003sv00001014sd00009181*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000003sv0000115Dsd00000181*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd00000003sv0000115Dsd00000182*
+- ID_MODEL_FROM_DATABASE=RealPort2 CardBus Ethernet 10/100 (R2BE-100)
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (RealPort2 CardBus Ethernet 10/100 (R2BE-100))
+ pci:v0000115Dd00000003sv0000115Dsd00001181*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+@@ -33324,19 +33324,19 @@ pci:v0000115Dd00000003sv00001179sd00000181*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd00000003sv00008086sd00008181*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (EtherExpress PRO/100 Mobile CardBus 32 Adapter)
+ pci:v0000115Dd00000003sv00008086sd00009181*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (EtherExpress PRO/100 Mobile CardBus 32 Adapter)
+ pci:v0000115Dd00000005*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd00000005sv00001014sd00000182*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000005sv00001014sd00001182*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000005sv0000115Dsd00000182*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+@@ -33348,10 +33348,10 @@ pci:v0000115Dd00000007*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd00000007sv00001014sd00000182*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000007sv00001014sd00001182*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd00000007sv0000115Dsd00000182*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+@@ -33363,7 +33363,7 @@ pci:v0000115Dd0000000B*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd0000000Bsv00001014sd00000183*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd0000000Bsv0000115Dsd00000183*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+@@ -33375,7 +33375,7 @@ pci:v0000115Dd0000000F*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+ pci:v0000115Dd0000000Fsv00001014sd00000183*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 (10/100 EtherJet Cardbus Adapter)
+ pci:v0000115Dd0000000Fsv0000115Dsd00000183*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100
+@@ -33387,22 +33387,22 @@ pci:v0000115Dd00000101*
+  ID_MODEL_FROM_DATABASE=Cardbus 56k modem
+ pci:v0000115Dd00000101sv0000115Dsd00001081*
+- ID_MODEL_FROM_DATABASE=Cardbus 56k Modem
++ ID_MODEL_FROM_DATABASE=Cardbus 56k modem (Cardbus 56k Modem)
+ pci:v0000115Dd00000103*
+  ID_MODEL_FROM_DATABASE=Cardbus Ethernet + 56k Modem
+ pci:v0000115Dd00000103sv00001014sd00009181*
+- ID_MODEL_FROM_DATABASE=Cardbus 56k Modem
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet + 56k Modem (Cardbus 56k Modem)
+ pci:v0000115Dd00000103sv00001115sd00001181*
+- ID_MODEL_FROM_DATABASE=Cardbus Ethernet 100 + 56k Modem
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet + 56k Modem (Cardbus Ethernet 100 + 56k Modem)
+ pci:v0000115Dd00000103sv0000115Dsd00001181*
+- ID_MODEL_FROM_DATABASE=CBEM56G-100 Ethernet + 56k Modem
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet + 56k Modem (CBEM56G-100 Ethernet + 56k Modem)
+ pci:v0000115Dd00000103sv00008086sd00009181*
+- ID_MODEL_FROM_DATABASE=PRO/100 LAN + Modem56 CardBus
++ ID_MODEL_FROM_DATABASE=Cardbus Ethernet + 56k Modem (PRO/100 LAN + Modem56 CardBus)
+ pci:v0000115E*
+  ID_VENDOR_FROM_DATABASE=Peer Protocols Inc
+@@ -33429,7 +33429,7 @@ pci:v00001163d00002000*
+  ID_MODEL_FROM_DATABASE=Verite V2000/V2100/V2200
+ pci:v00001163d00002000sv00001092sd00002000*
+- ID_MODEL_FROM_DATABASE=Stealth II S220
++ ID_MODEL_FROM_DATABASE=Verite V2000/V2100/V2200 (Stealth II S220)
+ pci:v00001164*
+  ID_VENDOR_FROM_DATABASE=Advanced Peripherals Technologies
+@@ -33510,7 +33510,7 @@ pci:v00001166d00000132*
+  ID_MODEL_FROM_DATABASE=BCM5780 [HT2000] PCI-Express Bridge
+ pci:v00001166d00000132sv00001166sd00000132*
+- ID_MODEL_FROM_DATABASE=HT2000 PCI-Express bridge
++ ID_MODEL_FROM_DATABASE=BCM5780 [HT2000] PCI-Express Bridge (HT2000 PCI-Express bridge)
+ pci:v00001166d00000140*
+  ID_MODEL_FROM_DATABASE=HT2100 PCI-Express Bridge
+@@ -33531,13 +33531,13 @@ pci:v00001166d00000201*
+  ID_MODEL_FROM_DATABASE=CSB5 South Bridge
+ pci:v00001166d00000201sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=CSB5 South Bridge (CT8 mainboard)
+ pci:v00001166d00000203*
+  ID_MODEL_FROM_DATABASE=CSB6 South Bridge
+ pci:v00001166d00000203sv00001734sd00001012*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series
++ ID_MODEL_FROM_DATABASE=CSB6 South Bridge (PRIMERGY RX/TX series)
+ pci:v00001166d00000205*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] Legacy South Bridge
+@@ -33549,37 +33549,37 @@ pci:v00001166d00000212*
+  ID_MODEL_FROM_DATABASE=CSB5 IDE Controller
+ pci:v00001166d00000212sv00001028sd0000014A*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1750
++ ID_MODEL_FROM_DATABASE=CSB5 IDE Controller (PowerEdge 1750)
+ pci:v00001166d00000212sv00001028sd0000810B*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1650/2550
++ ID_MODEL_FROM_DATABASE=CSB5 IDE Controller (PowerEdge 1650/2550)
+ pci:v00001166d00000212sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=CSB5 IDE Controller (CT8 mainboard)
+ pci:v00001166d00000213*
+  ID_MODEL_FROM_DATABASE=CSB6 RAID/IDE Controller
+ pci:v00001166d00000213sv00001028sd00004134*
+- ID_MODEL_FROM_DATABASE=PowerEdge 600SC
++ ID_MODEL_FROM_DATABASE=CSB6 RAID/IDE Controller (PowerEdge 600SC)
+ pci:v00001166d00000213sv00001028sd0000C134*
+- ID_MODEL_FROM_DATABASE=Poweredge SC600
++ ID_MODEL_FROM_DATABASE=CSB6 RAID/IDE Controller (Poweredge SC600)
+ pci:v00001166d00000213sv00001734sd00001012*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard IDE
++ ID_MODEL_FROM_DATABASE=CSB6 RAID/IDE Controller (PRIMERGY RX/TX series onboard IDE)
+ pci:v00001166d00000214*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] IDE
+ pci:v00001166d00000214sv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 IDE
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] IDE (PowerEdge 2970 HT1000 IDE)
+ pci:v00001166d00000217*
+  ID_MODEL_FROM_DATABASE=CSB6 IDE Controller
+ pci:v00001166d00000217sv00001028sd00004134*
+- ID_MODEL_FROM_DATABASE=Poweredge SC600
++ ID_MODEL_FROM_DATABASE=CSB6 IDE Controller (Poweredge SC600)
+ pci:v00001166d0000021B*
+  ID_MODEL_FROM_DATABASE=HT1100 HD Audio
+@@ -33588,22 +33588,22 @@ pci:v00001166d00000220*
+  ID_MODEL_FROM_DATABASE=OSB4/CSB5 OHCI USB Controller
+ pci:v00001166d00000220sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=OSB4/CSB5 OHCI USB Controller (CT8 mainboard)
+ pci:v00001166d00000221*
+  ID_MODEL_FROM_DATABASE=CSB6 OHCI USB Controller
+ pci:v00001166d00000221sv00001734sd00001012*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard OHCI
++ ID_MODEL_FROM_DATABASE=CSB6 OHCI USB Controller (PRIMERGY RX/TX series onboard OHCI)
+ pci:v00001166d00000223*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] USB
+ pci:v00001166d00000223sv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 USB Controller
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] USB (PowerEdge 2970 HT1000 USB Controller)
+ pci:v00001166d00000223sv00001028sd0000020B*
+- ID_MODEL_FROM_DATABASE=PowerEdge T605 HT1000 USB Controller
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] USB (PowerEdge T605 HT1000 USB Controller)
+ pci:v00001166d00000225*
+  ID_MODEL_FROM_DATABASE=CSB5 LPC bridge
+@@ -33612,22 +33612,22 @@ pci:v00001166d00000227*
+  ID_MODEL_FROM_DATABASE=GCLE-2 Host Bridge
+ pci:v00001166d00000227sv00001734sd00001012*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series
++ ID_MODEL_FROM_DATABASE=GCLE-2 Host Bridge (PRIMERGY RX/TX series)
+ pci:v00001166d00000230*
+  ID_MODEL_FROM_DATABASE=CSB5 LPC bridge
+ pci:v00001166d00000230sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=CSB5 LPC bridge (CT8 mainboard)
+ pci:v00001166d00000234*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] LPC
+ pci:v00001166d00000234sv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 LPC
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] LPC (PowerEdge 2970 HT1000 LPC)
+ pci:v00001166d00000234sv00001028sd0000020B*
+- ID_MODEL_FROM_DATABASE=PowerEdge T605 HT1000 LPC
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] LPC (PowerEdge T605 HT1000 LPC)
+ pci:v00001166d00000235*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] XIOAPIC0-2
+@@ -33648,13 +33648,13 @@ pci:v00001166d0000024A*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (Native SATA Mode)
+ pci:v00001166d0000024Asv00001028sd0000020B*
+- ID_MODEL_FROM_DATABASE=PowerEdge T605 onboard SATA Controller
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (Native SATA Mode) (PowerEdge T605 onboard SATA Controller)
+ pci:v00001166d0000024B*
+  ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (PATA/IDE Mode)
+ pci:v00001166d0000024Bsv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 SATA controller
++ ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (PATA/IDE Mode) (PowerEdge 2970 HT1000 SATA controller)
+ pci:v00001166d00000406*
+  ID_MODEL_FROM_DATABASE=HT1100 PCI-X Bridge
+@@ -33666,7 +33666,7 @@ pci:v00001166d0000040A*
+  ID_MODEL_FROM_DATABASE=HT1100 ISA-LPC Bridge
+ pci:v00001166d0000040Asv00001028sd00000223*
+- ID_MODEL_FROM_DATABASE=PowerEdge R905 HT1100 ISA-LPC Bridge
++ ID_MODEL_FROM_DATABASE=HT1100 ISA-LPC Bridge (PowerEdge R905 HT1100 ISA-LPC Bridge)
+ pci:v00001166d00000410*
+  ID_MODEL_FROM_DATABASE=HT1100 SATA Controller (Native SATA Mode)
+@@ -33783,7 +33783,7 @@ pci:v00001179d00000601*
+  ID_MODEL_FROM_DATABASE=CPU to PCI bridge
+ pci:v00001179d00000601sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Satellite Pro
++ ID_MODEL_FROM_DATABASE=CPU to PCI bridge (Satellite Pro)
+ pci:v00001179d00000602*
+  ID_MODEL_FROM_DATABASE=PCI to ISA bridge
+@@ -33798,13 +33798,13 @@ pci:v00001179d0000060A*
+  ID_MODEL_FROM_DATABASE=ToPIC95
+ pci:v00001179d0000060Asv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Satellite Pro
++ ID_MODEL_FROM_DATABASE=ToPIC95 (Satellite Pro)
+ pci:v00001179d0000060F*
+  ID_MODEL_FROM_DATABASE=ToPIC97
+ pci:v00001179d0000060Fsv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Satellite 4010
++ ID_MODEL_FROM_DATABASE=ToPIC97 (Satellite 4010)
+ pci:v00001179d00000617*
+  ID_MODEL_FROM_DATABASE=ToPIC100 PCI to Cardbus Bridge with ZV Support
+@@ -33846,16 +33846,16 @@ pci:v0000117Cd00000030*
+  ID_MODEL_FROM_DATABASE=Ultra320 SCSI Host Adapter
+ pci:v0000117Cd00000030sv0000117Csd00008013*
+- ID_MODEL_FROM_DATABASE=ExpressPCI UL4D
++ ID_MODEL_FROM_DATABASE=Ultra320 SCSI Host Adapter (ExpressPCI UL4D)
+ pci:v0000117Cd00000030sv0000117Csd00008014*
+- ID_MODEL_FROM_DATABASE=ExpressPCI UL4S
++ ID_MODEL_FROM_DATABASE=Ultra320 SCSI Host Adapter (ExpressPCI UL4S)
+ pci:v0000117Cd00000030sv0000117Csd00008027*
+- ID_MODEL_FROM_DATABASE=ExpressPCI UL5D
++ ID_MODEL_FROM_DATABASE=Ultra320 SCSI Host Adapter (ExpressPCI UL5D)
+ pci:v0000117Cd00000030sv0000117Csd0000802F*
+- ID_MODEL_FROM_DATABASE=ExpressPCI UL5D Low Profile
++ ID_MODEL_FROM_DATABASE=Ultra320 SCSI Host Adapter (ExpressPCI UL5D Low Profile)
+ pci:v0000117Cd00000033*
+  ID_MODEL_FROM_DATABASE=SAS Adapter
+@@ -33882,67 +33882,67 @@ pci:v00001180d00000475*
+  ID_MODEL_FROM_DATABASE=RL5c475
+ pci:v00001180d00000475sv0000144Dsd0000C006*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 CardBus bridge
++ ID_MODEL_FROM_DATABASE=RL5c475 (vpr Matrix 170B4 CardBus bridge)
+ pci:v00001180d00000476*
+  ID_MODEL_FROM_DATABASE=RL5c476 II
+ pci:v00001180d00000476sv00001014sd00000185*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=RL5c476 II (ThinkPad A/T/X Series)
+ pci:v00001180d00000476sv00001014sd0000056C*
+- ID_MODEL_FROM_DATABASE=ThinkPad Z60t
++ ID_MODEL_FROM_DATABASE=RL5c476 II (ThinkPad Z60t)
+ pci:v00001180d00000476sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300 laptop
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Latitude X300 laptop)
+ pci:v00001180d00000476sv00001028sd00000188*
+- ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Inspiron 6000 laptop)
+ pci:v00001180d00000476sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Compaq 6710b)
+ pci:v00001180d00000476sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Compaq 6910p)
+ pci:v00001180d00000476sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=RL5c476 II (A6J-Q008)
+ pci:v00001180d00000476sv00001043sd00001967*
+- ID_MODEL_FROM_DATABASE=V6800V
++ ID_MODEL_FROM_DATABASE=RL5c476 II (V6800V)
+ pci:v00001180d00000476sv00001043sd00001987*
+- ID_MODEL_FROM_DATABASE=Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines )
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines ))
+ pci:v00001180d00000476sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Vaio PCG-FX403)
+ pci:v00001180d00000476sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=RL5c476 II (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00001180d00000476sv0000104Dsd0000814E*
+- ID_MODEL_FROM_DATABASE=VAIO GRZ390Z
++ ID_MODEL_FROM_DATABASE=RL5c476 II (VAIO GRZ390Z)
+ pci:v00001180d00000476sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=RL5c476 II (Panasonic CF-Y5 laptop)
+ pci:v00001180d00000476sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=RL5c476 II (X10 Laptop)
+ pci:v00001180d00000476sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=RL5c476 II (P30/P35 notebook)
+ pci:v00001180d00000476sv000014EFsd00000220*
+- ID_MODEL_FROM_DATABASE=PCD-RP-220S
++ ID_MODEL_FROM_DATABASE=RL5c476 II (PCD-RP-220S)
+ pci:v00001180d00000476sv000017AAsd0000201C*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
++ ID_MODEL_FROM_DATABASE=RL5c476 II (ThinkPad X60/X60s)
+ pci:v00001180d00000476sv000017AAsd000020C4*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61
++ ID_MODEL_FROM_DATABASE=RL5c476 II (ThinkPad T61)
+ pci:v00001180d00000476sv000017AAsd000020C6*
+- ID_MODEL_FROM_DATABASE=ThinkPad R61
++ ID_MODEL_FROM_DATABASE=RL5c476 II (ThinkPad R61)
+ pci:v00001180d00000477*
+  ID_MODEL_FROM_DATABASE=RL5c477
+@@ -33951,7 +33951,7 @@ pci:v00001180d00000478*
+  ID_MODEL_FROM_DATABASE=RL5c478
+ pci:v00001180d00000478sv00001014sd00000184*
+- ID_MODEL_FROM_DATABASE=ThinkPad A30p
++ ID_MODEL_FROM_DATABASE=RL5c478 (ThinkPad A30p)
+ pci:v00001180d00000511*
+  ID_MODEL_FROM_DATABASE=R5C511
+@@ -33960,43 +33960,43 @@ pci:v00001180d00000522*
+  ID_MODEL_FROM_DATABASE=R5C522 IEEE 1394 Controller
+ pci:v00001180d00000522sv00001014sd000001CF*
+- ID_MODEL_FROM_DATABASE=ThinkPad A30p
++ ID_MODEL_FROM_DATABASE=R5C522 IEEE 1394 Controller (ThinkPad A30p)
+ pci:v00001180d00000522sv00001043sd00001967*
+- ID_MODEL_FROM_DATABASE=V6800V
++ ID_MODEL_FROM_DATABASE=R5C522 IEEE 1394 Controller (V6800V)
+ pci:v00001180d00000551*
+  ID_MODEL_FROM_DATABASE=R5C551 IEEE 1394 Controller
+ pci:v00001180d00000551sv0000144Dsd0000C006*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=R5C551 IEEE 1394 Controller (vpr Matrix 170B4)
+ pci:v00001180d00000552*
+  ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller
+ pci:v00001180d00000552sv00001014sd00000511*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (ThinkPad A/T/X Series)
+ pci:v00001180d00000552sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300 laptop
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (Latitude X300 laptop)
+ pci:v00001180d00000552sv00001028sd00000188*
+- ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (Inspiron 6000 laptop)
+ pci:v00001180d00000552sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (A6J-Q008)
+ pci:v00001180d00000552sv00001043sd00001757*
+- ID_MODEL_FROM_DATABASE=M2400N laptop
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (M2400N laptop)
+ pci:v00001180d00000552sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (X10 Laptop)
+ pci:v00001180d00000552sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (P30/P35 notebook)
+ pci:v00001180d00000552sv000017AAsd0000201E*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
++ ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller (ThinkPad X60/X60s)
+ pci:v00001180d00000554*
+  ID_MODEL_FROM_DATABASE=R5C554
+@@ -34011,37 +34011,37 @@ pci:v00001180d00000592*
+  ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter
+ pci:v00001180d00000592sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (Aspire 5920G)
+ pci:v00001180d00000592sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (XPS M1210)
+ pci:v00001180d00000592sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (Inspiron 1420)
+ pci:v00001180d00000592sv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (Presario V3242AU)
+ pci:v00001180d00000592sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (Presario V6133CL)
+ pci:v00001180d00000592sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (Pavilion dv6700)
+ pci:v00001180d00000592sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (Pavilion dv9668eg Laptop)
+ pci:v00001180d00000592sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (A6J-Q008)
+ pci:v00001180d00000592sv00001043sd00001967*
+- ID_MODEL_FROM_DATABASE=V6800V
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (V6800V)
+ pci:v00001180d00000592sv0000144Dsd0000C018*
+- ID_MODEL_FROM_DATABASE=X20 IV
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (X20 IV)
+ pci:v00001180d00000592sv000017AAsd000020CA*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61
++ ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter (ThinkPad T61)
+ pci:v00001180d00000811*
+  ID_MODEL_FROM_DATABASE=R5C811
+@@ -34050,94 +34050,94 @@ pci:v00001180d00000822*
+  ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter
+ pci:v00001180d00000822sv00001014sd00000556*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60s / Z60t
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (ThinkPad X60s / Z60t)
+ pci:v00001180d00000822sv00001014sd00000598*
+- ID_MODEL_FROM_DATABASE=ThinkPad Z60m
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (ThinkPad Z60m)
+ pci:v00001180d00000822sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Aspire 5920G)
+ pci:v00001180d00000822sv00001028sd00000188*
+- ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Inspiron 6000 laptop)
+ pci:v00001180d00000822sv00001028sd000001A2*
+- ID_MODEL_FROM_DATABASE=Inspiron 9200
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Inspiron 9200)
+ pci:v00001180d00000822sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (XPS M1210)
+ pci:v00001180d00000822sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Inspiron 1420)
+ pci:v00001180d00000822sv0000103Csd000003B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Presario V3242AU)
+ pci:v00001180d00000822sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Presario V6133CL)
+ pci:v00001180d00000822sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Compaq 6910p)
+ pci:v00001180d00000822sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Pavilion dv6700)
+ pci:v00001180d00000822sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Pavilion dv9668eg Laptop)
+ pci:v00001180d00000822sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (A6J-Q008)
+ pci:v00001180d00000822sv00001043sd00001967*
+- ID_MODEL_FROM_DATABASE=ASUS V6800V
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (ASUS V6800V)
+ pci:v00001180d00000822sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (Panasonic CF-Y5 laptop)
+ pci:v00001180d00000822sv0000144Dsd0000C018*
+- ID_MODEL_FROM_DATABASE=X20 IV
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (X20 IV)
+ pci:v00001180d00000822sv000017AAsd0000201D*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (ThinkPad X60/X60s)
+ pci:v00001180d00000822sv000017AAsd000020C7*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (ThinkPad T61)
+ pci:v00001180d00000822sv000017AAsd000020C8*
+- ID_MODEL_FROM_DATABASE=ThinkPad W500
++ ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (ThinkPad W500)
+ pci:v00001180d00000832*
+  ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller
+ pci:v00001180d00000832sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Aspire 5920G)
+ pci:v00001180d00000832sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (XPS M1210)
+ pci:v00001180d00000832sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Inspiron 1420)
+ pci:v00001180d00000832sv00001028sd0000024D*
+- ID_MODEL_FROM_DATABASE=Latitude E4300
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Latitude E4300)
+ pci:v00001180d00000832sv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Presario V3242AU)
+ pci:v00001180d00000832sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Presario V6133CL)
+ pci:v00001180d00000832sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Compaq 6910p)
+ pci:v00001180d00000832sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Pavilion dv6700)
+ pci:v00001180d00000832sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (Pavilion dv9668eg Laptop)
+ pci:v00001180d00000832sv000017AAsd000020C7*
+- ID_MODEL_FROM_DATABASE=ThinkPad R61
++ ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller (ThinkPad R61)
+ pci:v00001180d00000841*
+  ID_MODEL_FROM_DATABASE=R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394
+@@ -34146,58 +34146,58 @@ pci:v00001180d00000843*
+  ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller
+ pci:v00001180d00000843sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Aspire 5920G)
+ pci:v00001180d00000843sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (XPS M1210)
+ pci:v00001180d00000843sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Inspiron 1420)
+ pci:v00001180d00000843sv00001028sd000001F5*
+- ID_MODEL_FROM_DATABASE=Dell Inspiron 1501
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Dell Inspiron 1501)
+ pci:v00001180d00000843sv00001028sd0000024F*
+- ID_MODEL_FROM_DATABASE=Dell Latitude e6500
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Dell Latitude e6500)
+ pci:v00001180d00000843sv0000103Csd000003B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Presario V3242AU)
+ pci:v00001180d00000843sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Presario V6133CL)
+ pci:v00001180d00000843sv00001183sd00000843*
+- ID_MODEL_FROM_DATABASE=Alienware Aurora m9700
++ ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller (Alienware Aurora m9700)
+ pci:v00001180d00000852*
+  ID_MODEL_FROM_DATABASE=xD-Picture Card Controller
+ pci:v00001180d00000852sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Aspire 5920G)
+ pci:v00001180d00000852sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Inspiron 1420)
+ pci:v00001180d00000852sv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Presario V3242AU)
+ pci:v00001180d00000852sv0000103Csd000030B7*
+- ID_MODEL_FROM_DATABASE=Presario V6133CL
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Presario V6133CL)
+ pci:v00001180d00000852sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Pavilion dv6700)
+ pci:v00001180d00000852sv0000103Csd000030CF*
+- ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Pavilion dv9668eg Laptop)
+ pci:v00001180d00000852sv00001043sd00001967*
+- ID_MODEL_FROM_DATABASE=V6800V
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (V6800V)
+ pci:v00001180d00000852sv00001180sd00000852*
+- ID_MODEL_FROM_DATABASE=Pavilion 2410us
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (Pavilion 2410us)
+ pci:v00001180d00000852sv00001324sd000010CF*
+- ID_MODEL_FROM_DATABASE=P7120
++ ID_MODEL_FROM_DATABASE=xD-Picture Card Controller (P7120)
+ pci:v00001180d0000E230*
+  ID_MODEL_FROM_DATABASE=R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller]
+@@ -34206,19 +34206,19 @@ pci:v00001180d0000E476*
+  ID_MODEL_FROM_DATABASE=CardBus bridge
+ pci:v00001180d0000E476sv00001028sd0000040A*
+- ID_MODEL_FROM_DATABASE=Latitude E6410
++ ID_MODEL_FROM_DATABASE=CardBus bridge (Latitude E6410)
+ pci:v00001180d0000E476sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=CardBus bridge (Latitude E6510)
+ pci:v00001180d0000E822*
+  ID_MODEL_FROM_DATABASE=MMC/SD Host Controller
+ pci:v00001180d0000E822sv00001028sd0000040A*
+- ID_MODEL_FROM_DATABASE=Latitude E6410
++ ID_MODEL_FROM_DATABASE=MMC/SD Host Controller (Latitude E6410)
+ pci:v00001180d0000E822sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=MMC/SD Host Controller (Latitude E6510)
+ pci:v00001180d0000E823*
+  ID_MODEL_FROM_DATABASE=PCIe SDXC/MMC Host Controller
+@@ -34227,10 +34227,10 @@ pci:v00001180d0000E832*
+  ID_MODEL_FROM_DATABASE=R5C832 PCIe IEEE 1394 Controller
+ pci:v00001180d0000E832sv00001028sd0000040A*
+- ID_MODEL_FROM_DATABASE=Latitude E6410
++ ID_MODEL_FROM_DATABASE=R5C832 PCIe IEEE 1394 Controller (Latitude E6410)
+ pci:v00001180d0000E832sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=R5C832 PCIe IEEE 1394 Controller (Latitude E6510)
+ pci:v00001180d0000E852*
+  ID_MODEL_FROM_DATABASE=PCIe xD-Picture Card Controller
+@@ -34254,10 +34254,10 @@ pci:v00001186d00001002*
+  ID_MODEL_FROM_DATABASE=DL10050 Sundance Ethernet
+ pci:v00001186d00001002sv00001186sd00001002*
+- ID_MODEL_FROM_DATABASE=DFE-550TX/FX
++ ID_MODEL_FROM_DATABASE=DL10050 Sundance Ethernet (DFE-550TX/FX)
+ pci:v00001186d00001002sv00001186sd00001012*
+- ID_MODEL_FROM_DATABASE=DFE-580TX
++ ID_MODEL_FROM_DATABASE=DL10050 Sundance Ethernet (DFE-580TX)
+ pci:v00001186d00001025*
+  ID_MODEL_FROM_DATABASE=AirPlus Xtreme G DWL-G650 Adapter
+@@ -34272,13 +34272,13 @@ pci:v00001186d00001300*
+  ID_MODEL_FROM_DATABASE=RTL8139 Ethernet
+ pci:v00001186d00001300sv00001186sd00001300*
+- ID_MODEL_FROM_DATABASE=DFE-538TX 10/100 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RTL8139 Ethernet (DFE-538TX 10/100 Ethernet Adapter)
+ pci:v00001186d00001300sv00001186sd00001301*
+- ID_MODEL_FROM_DATABASE=DFE-530TX+ 10/100 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=RTL8139 Ethernet (DFE-530TX+ 10/100 Ethernet Adapter)
+ pci:v00001186d00001300sv00001186sd00001303*
+- ID_MODEL_FROM_DATABASE=DFE-528TX 10/100 Fast Ethernet PCI Adapter
++ ID_MODEL_FROM_DATABASE=RTL8139 Ethernet (DFE-528TX 10/100 Fast Ethernet PCI Adapter)
+ pci:v00001186d00001340*
+  ID_MODEL_FROM_DATABASE=DFE-690TXD CardBus PC Card
+@@ -34296,10 +34296,10 @@ pci:v00001186d00003300*
+  ID_MODEL_FROM_DATABASE=DWL-510 / DWL-610 802.11b [Realtek RTL8180L]
+ pci:v00001186d00003300sv00001186sd00003300*
+- ID_MODEL_FROM_DATABASE=DWL-610 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=DWL-510 / DWL-610 802.11b [Realtek RTL8180L] (DWL-610 Wireless Cardbus Adapter)
+ pci:v00001186d00003300sv00001186sd00003301*
+- ID_MODEL_FROM_DATABASE=DWL-510 Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=DWL-510 / DWL-610 802.11b [Realtek RTL8180L] (DWL-510 Wireless PCI Adapter)
+ pci:v00001186d00003A10*
+  ID_MODEL_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B)
+@@ -34317,7 +34317,7 @@ pci:v00001186d00004300*
+  ID_MODEL_FROM_DATABASE=DGE-528T Gigabit Ethernet Adapter
+ pci:v00001186d00004300sv00001186sd00004B10*
+- ID_MODEL_FROM_DATABASE=DGE-560T PCI Express (x1) Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=DGE-528T Gigabit Ethernet Adapter (DGE-560T PCI Express (x1) Gigabit Ethernet Adapter)
+ pci:v00001186d00004302*
+  ID_MODEL_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169]
+@@ -34338,7 +34338,7 @@ pci:v00001186d00004C00*
+  ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter
+ pci:v00001186d00004C00sv00001186sd00004C00*
+- ID_MODEL_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter (DGE-530T Gigabit Ethernet Adapter)
+ pci:v00001186d00008400*
+  ID_MODEL_FROM_DATABASE=D-Link DWL-650+ CardBus PC Card
+@@ -34620,7 +34620,7 @@ pci:v000011ABd00001FA6*
+  ID_MODEL_FROM_DATABASE=Marvell W8300 802.11 Adapter
+ pci:v000011ABd00001FA6sv00001186sd00003B08*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1)
++ ID_MODEL_FROM_DATABASE=Marvell W8300 802.11 Adapter (AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1))
+ pci:v000011ABd00001FA7*
+  ID_MODEL_FROM_DATABASE=88W8310 and 88W8000G [Libertas] 802.11g client chipset
+@@ -34629,13 +34629,13 @@ pci:v000011ABd00001FAA*
+  ID_MODEL_FROM_DATABASE=88w8335 [Libertas] 802.11b/g Wireless
+ pci:v000011ABd00001FAAsv00001385sd00004E00*
+- ID_MODEL_FROM_DATABASE=WG511v2 54 Mbps Wireless PC Card
++ ID_MODEL_FROM_DATABASE=88w8335 [Libertas] 802.11b/g Wireless (WG511v2 54 Mbps Wireless PC Card)
+ pci:v000011ABd00001FAAsv00001385sd00006B00*
+- ID_MODEL_FROM_DATABASE=WG311v3 802.11g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=88w8335 [Libertas] 802.11b/g Wireless (WG311v3 802.11g Wireless PCI Adapter)
+ pci:v000011ABd00001FAAsv00001737sd00000040*
+- ID_MODEL_FROM_DATABASE=WPC54G v5 802.11g Wireless-G Notebook Adapter
++ ID_MODEL_FROM_DATABASE=88w8335 [Libertas] 802.11b/g Wireless (WPC54G v5 802.11g Wireless-G Notebook Adapter)
+ pci:v000011ABd00002211*
+  ID_MODEL_FROM_DATABASE=88SB2211 PCI Express to PCI Bridge
+@@ -34647,19 +34647,19 @@ pci:v000011ABd00002A02*
+  ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless
+ pci:v000011ABd00002A02sv000007D1sd00003B02*
+- ID_MODEL_FROM_DATABASE=DIR-615 rev. A1 Mini PCI Wireless Module
++ ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless (DIR-615 rev. A1 Mini PCI Wireless Module)
+ pci:v000011ABd00002A02sv00001385sd00007C00*
+- ID_MODEL_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless PC Card
++ ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless (WN511T RangeMax Next 300 Mbps Wireless PC Card)
+ pci:v000011ABd00002A02sv00001385sd00007C01*
+- ID_MODEL_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter
++ ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless (WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter)
+ pci:v000011ABd00002A02sv00001385sd00007E00*
+- ID_MODEL_FROM_DATABASE=WN311T RangeMax Next 300 Mbps Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless (WN311T RangeMax Next 300 Mbps Wireless PCI Adapter)
+ pci:v000011ABd00002A02sv00001799sd0000801B*
+- ID_MODEL_FROM_DATABASE=F5D8011 v2 802.11n N1 Wireless Notebook Card
++ ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless (F5D8011 v2 802.11n N1 Wireless Notebook Card)
+ pci:v000011ABd00002A08*
+  ID_MODEL_FROM_DATABASE=88W8362e [TopDog] 802.11a/b/g/n Wireless
+@@ -34701,58 +34701,58 @@ pci:v000011ABd00004320*
+  ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller
+ pci:v000011ABd00004320sv00001019sd00000F38*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (ECS)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (ECS))
+ pci:v000011ABd00004320sv00001019sd00008001*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (ECS)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (ECS))
+ pci:v000011ABd00004320sv00001043sd0000173C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Asus)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Asus))
+ pci:v000011ABd00004320sv00001043sd0000811A*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Asus)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Asus))
+ pci:v000011ABd00004320sv0000105Bsd00000C19*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Foxconn)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Foxconn))
+ pci:v000011ABd00004320sv000010B8sd0000B452*
+- ID_MODEL_FROM_DATABASE=EZ Card 1000 (SMC9452TXV.2)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (EZ Card 1000 (SMC9452TXV.2))
+ pci:v000011ABd00004320sv000011ABsd00000121*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8001
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell RDK-8001)
+ pci:v000011ABd00004320sv000011ABsd00000321*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8003
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell RDK-8003)
+ pci:v000011ABd00004320sv000011ABsd00001021*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8010
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell RDK-8010)
+ pci:v000011ABd00004320sv000011ABsd00004320*
+- ID_MODEL_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus))
+ pci:v000011ABd00004320sv000011ABsd00005021*
+- ID_MODEL_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit))
+ pci:v000011ABd00004320sv000011ABsd00009521*
+- ID_MODEL_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit))
+ pci:v000011ABd00004320sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte))
+ pci:v000011ABd00004320sv0000147Bsd00001406*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Abit)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Abit))
+ pci:v000011ABd00004320sv000015D4sd00000047*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Iwill)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Iwill))
+ pci:v000011ABd00004320sv00001695sd00009025*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Epox)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Epox))
+ pci:v000011ABd00004320sv000017F2sd00001C03*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Albatron)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Albatron))
+ pci:v000011ABd00004320sv0000270Fsd00002803*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Chaintech)
++ ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller (Marvell 88E8001 Gigabit Ethernet Controller (Chaintech))
+ pci:v000011ABd00004340*
+  ID_MODEL_FROM_DATABASE=88E8021 PCI-X IPMI Gigabit Ethernet Controller
+@@ -34779,115 +34779,115 @@ pci:v000011ABd00004347*
+  ID_MODEL_FROM_DATABASE=88E8062 PCI-E IPMI Gigabit Ethernet Controller
+ pci:v000011ABd00004347sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 PrAMC Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=88E8062 PCI-E IPMI Gigabit Ethernet Controller (Telum ASLP10 PrAMC Gigabit Ethernet)
+ pci:v000011ABd00004350*
+  ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller
+ pci:v000011ABd00004350sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (Toshiba)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (Toshiba))
+ pci:v000011ABd00004350sv000011ABsd00003521*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8035
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell RDK-8035)
+ pci:v000011ABd00004350sv00001854sd0000000D*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd0000000E*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd0000000F*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000011*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000012*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000016*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000017*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000018*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000019*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd0000001C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd0000001E*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004350sv00001854sd00000020*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller (Marvell 88E8035 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351*
+  ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller
+ pci:v000011ABd00004351sv0000107Bsd00004009*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Wistron)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (Wistron))
+ pci:v000011ABd00004351sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Panasonic)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (Panasonic))
+ pci:v000011ABd00004351sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Toshiba)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (Toshiba))
+ pci:v000011ABd00004351sv00001179sd0000FF00*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Compal)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (Compal))
+ pci:v000011ABd00004351sv00001179sd0000FF10*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Inventec)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (Inventec))
+ pci:v000011ABd00004351sv000011ABsd00003621*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8036
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell RDK-8036)
+ pci:v000011ABd00004351sv000013D1sd0000AC12*
+- ID_MODEL_FROM_DATABASE=Abocom EFE3K - 10/100 Ethernet Expresscard
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Abocom EFE3K - 10/100 Ethernet Expresscard)
+ pci:v000011ABd00004351sv0000161Fsd0000203D*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Arima)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (Arima))
+ pci:v000011ABd00004351sv00001854sd0000000D*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd0000000E*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd0000000F*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000011*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000012*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000016*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000017*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000018*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000019*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd0000001C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd0000001E*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004351sv00001854sd00000020*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller (Marvell 88E8036 Fast Ethernet Controller (LGE))
+ pci:v000011ABd00004352*
+  ID_MODEL_FROM_DATABASE=88E8038 PCI-E Fast Ethernet Controller
+@@ -34896,19 +34896,19 @@ pci:v000011ABd00004353*
+  ID_MODEL_FROM_DATABASE=88E8039 PCI-E Fast Ethernet Controller
+ pci:v000011ABd00004353sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=88E8039 PCI-E Fast Ethernet Controller (VAIO VGN-NR120E)
+ pci:v000011ABd00004354*
+  ID_MODEL_FROM_DATABASE=88E8040 PCI-E Fast Ethernet Controller
+ pci:v000011ABd00004354sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=88E8040 PCI-E Fast Ethernet Controller (Notebook N150P)
+ pci:v000011ABd00004355*
+  ID_MODEL_FROM_DATABASE=88E8040T PCI-E Fast Ethernet Controller
+ pci:v000011ABd00004355sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=88E8040T PCI-E Fast Ethernet Controller (Satellite P305D-S8995E)
+ pci:v000011ABd00004356*
+  ID_MODEL_FROM_DATABASE=88EC033 PCI-E Fast Ethernet Controller
+@@ -34923,163 +34923,163 @@ pci:v000011ABd00004360*
+  ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller
+ pci:v000011ABd00004360sv00001043sd00008134*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Asus)
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8052 Gigabit Ethernet Controller (Asus))
+ pci:v000011ABd00004360sv0000107Bsd00004009*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Wistron)
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8052 Gigabit Ethernet Controller (Wistron))
+ pci:v000011ABd00004360sv000011ABsd00005221*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8052
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell RDK-8052)
+ pci:v000011ABd00004360sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte)
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte))
+ pci:v000011ABd00004360sv00001462sd0000052C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (MSI)
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8052 Gigabit Ethernet Controller (MSI))
+ pci:v000011ABd00004360sv00001849sd00008052*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (ASRock)
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8052 Gigabit Ethernet Controller (ASRock))
+ pci:v000011ABd00004360sv0000A0A0sd00000509*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Aopen)
++ ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8052 Gigabit Ethernet Controller (Aopen))
+ pci:v000011ABd00004361*
+  ID_MODEL_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller
+ pci:v000011ABd00004361sv0000107Bsd00003015*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Gateway)
++ ID_MODEL_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8050 Gigabit Ethernet Controller (Gateway))
+ pci:v000011ABd00004361sv000011ABsd00005021*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Intel)
++ ID_MODEL_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8050 Gigabit Ethernet Controller (Intel))
+ pci:v000011ABd00004361sv00008086sd00003063*
+- ID_MODEL_FROM_DATABASE=D925XCVLK mainboard
++ ID_MODEL_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller (D925XCVLK mainboard)
+ pci:v000011ABd00004361sv00008086sd00003439*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Intel)
++ ID_MODEL_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller (Marvell 88E8050 Gigabit Ethernet Controller (Intel))
+ pci:v000011ABd00004362*
+  ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller
+ pci:v000011ABd00004362sv0000103Csd00002A0D*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Asus)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Asus))
+ pci:v000011ABd00004362sv00001043sd00008142*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus))
+ pci:v000011ABd00004362sv0000109Fsd00003197*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Trigem)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Trigem))
+ pci:v000011ABd00004362sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Panasonic)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Panasonic))
+ pci:v000011ABd00004362sv000010FDsd0000A430*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (SOYO)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (SOYO))
+ pci:v000011ABd00004362sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Toshiba)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Toshiba))
+ pci:v000011ABd00004362sv00001179sd0000FF00*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Compal)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Compal))
+ pci:v000011ABd00004362sv00001179sd0000FF10*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Inventec)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Inventec))
+ pci:v000011ABd00004362sv000011ABsd00005321*
+- ID_MODEL_FROM_DATABASE=Marvell RDK-8053
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell RDK-8053)
+ pci:v000011ABd00004362sv00001297sd0000C240*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Shuttle))
+ pci:v000011ABd00004362sv00001297sd0000C241*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Shuttle))
+ pci:v000011ABd00004362sv00001297sd0000C242*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Shuttle))
+ pci:v000011ABd00004362sv00001297sd0000C243*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Shuttle))
+ pci:v000011ABd00004362sv00001297sd0000C244*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Shuttle))
+ pci:v000011ABd00004362sv000013D1sd0000AC11*
+- ID_MODEL_FROM_DATABASE=EGE5K - Giga Ethernet Expresscard
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (EGE5K - Giga Ethernet Expresscard)
+ pci:v000011ABd00004362sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte))
+ pci:v000011ABd00004362sv00001462sd0000058C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (MSI)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (MSI))
+ pci:v000011ABd00004362sv000014C0sd00000012*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Compal)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Compal))
+ pci:v000011ABd00004362sv00001558sd000004A0*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Clevo)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Clevo))
+ pci:v000011ABd00004362sv000015BDsd00001003*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (DFI)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (DFI))
+ pci:v000011ABd00004362sv0000161Fsd0000203C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Arima)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Arima))
+ pci:v000011ABd00004362sv0000161Fsd0000203D*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Arima)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Arima))
+ pci:v000011ABd00004362sv00001695sd00009029*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Epox)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Epox))
+ pci:v000011ABd00004362sv000017F2sd00002C08*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Albatron)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Albatron))
+ pci:v000011ABd00004362sv000017FFsd00000585*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Quanta)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Quanta))
+ pci:v000011ABd00004362sv00001849sd00008053*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (ASRock)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (ASRock))
+ pci:v000011ABd00004362sv00001854sd0000000B*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd0000000C*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd00000010*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd00000013*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd00000014*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd00000015*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd0000001A*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd0000001B*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd0000001D*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd0000001F*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd00000021*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv00001854sd00000022*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (LGE))
+ pci:v000011ABd00004362sv0000270Fsd00002801*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Chaintech)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Chaintech))
+ pci:v000011ABd00004362sv0000A0A0sd00000506*
+- ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Aopen)
++ ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller (Marvell 88E8053 Gigabit Ethernet Controller (Aopen))
+ pci:v000011ABd00004363*
+  ID_MODEL_FROM_DATABASE=88E8055 PCI-E Gigabit Ethernet Controller
+@@ -35088,10 +35088,10 @@ pci:v000011ABd00004364*
+  ID_MODEL_FROM_DATABASE=88E8056 PCI-E Gigabit Ethernet Controller
+ pci:v000011ABd00004364sv00001043sd000081F8*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=88E8056 PCI-E Gigabit Ethernet Controller (Motherboard)
+ pci:v000011ABd00004364sv000011BAsd000000BA*
+- ID_MODEL_FROM_DATABASE=8056 Gigabit Ethernet Controller
++ ID_MODEL_FROM_DATABASE=88E8056 PCI-E Gigabit Ethernet Controller (8056 Gigabit Ethernet Controller)
+ pci:v000011ABd00004365*
+  ID_MODEL_FROM_DATABASE=88E8070 based Ethernet Controller
+@@ -35112,7 +35112,7 @@ pci:v000011ABd0000436A*
+  ID_MODEL_FROM_DATABASE=88E8058 PCI-E Gigabit Ethernet Controller
+ pci:v000011ABd0000436Asv000011ABsd000000BA*
+- ID_MODEL_FROM_DATABASE=Imac 8,1 Wired Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=88E8058 PCI-E Gigabit Ethernet Controller (Imac 8,1 Wired Ethernet Adapter)
+ pci:v000011ABd0000436B*
+  ID_MODEL_FROM_DATABASE=88E8071 PCI-E Gigabit Ethernet Controller
+@@ -35178,7 +35178,7 @@ pci:v000011ABd00006101*
+  ID_MODEL_FROM_DATABASE=88SE6101/6102 single-port PATA133 interface
+ pci:v000011ABd00006101sv00001043sd000082E0*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=88SE6101/6102 single-port PATA133 interface (P5K PRO Motherboard)
+ pci:v000011ABd00006111*
+  ID_MODEL_FROM_DATABASE=88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers
+@@ -35217,7 +35217,7 @@ pci:v000011ABd00006480*
+  ID_MODEL_FROM_DATABASE=MV64460/64461/64462 System Controller
+ pci:v000011ABd00006480sv00001775sd0000C200*
+- ID_MODEL_FROM_DATABASE=C2K CompactPCI single board computer
++ ID_MODEL_FROM_DATABASE=MV64460/64461/64462 System Controller (C2K CompactPCI single board computer)
+ pci:v000011ABd00006485*
+  ID_MODEL_FROM_DATABASE=MV64460/64461/64462 System Controller, Revision B
+@@ -35226,7 +35226,7 @@ pci:v000011ABd00007042*
+  ID_MODEL_FROM_DATABASE=88SX7042 PCI-e 4-port SATA-II
+ pci:v000011ABd00007042sv000016B8sd0000434B*
+- ID_MODEL_FROM_DATABASE=Tempo SATA E4P
++ ID_MODEL_FROM_DATABASE=88SX7042 PCI-e 4-port SATA-II (Tempo SATA E4P)
+ pci:v000011ABd00007810*
+  ID_MODEL_FROM_DATABASE=MV78100 [Discovery Innovation] ARM SoC
+@@ -35259,19 +35259,19 @@ pci:v000011ADd00000002sv000011ADsd0000FFFF*
+  ID_MODEL_FROM_DATABASE=LNE100TX
+ pci:v000011ADd00000002sv00001385sd0000F004*
+- ID_MODEL_FROM_DATABASE=FA310TX
++ ID_MODEL_FROM_DATABASE=LNE100TX (FA310TX)
+ pci:v000011ADd00000002sv00002646sd0000F002*
+- ID_MODEL_FROM_DATABASE=KNE110TX EtheRx Fast Ethernet
++ ID_MODEL_FROM_DATABASE=LNE100TX (KNE110TX EtheRx Fast Ethernet)
+ pci:v000011ADd0000C115*
+  ID_MODEL_FROM_DATABASE=LNE100TX [Linksys EtherFast 10/100]
+ pci:v000011ADd0000C115sv000011ADsd0000C001*
+- ID_MODEL_FROM_DATABASE=LNE100TX [ver 2.0]
++ ID_MODEL_FROM_DATABASE=LNE100TX [Linksys EtherFast 10/100] (LNE100TX [ver 2.0])
+ pci:v000011ADd0000C115sv00002646sd0000000B*
+- ID_MODEL_FROM_DATABASE=KNE111TX
++ ID_MODEL_FROM_DATABASE=LNE100TX [Linksys EtherFast 10/100] (KNE111TX)
+ pci:v000011AE*
+  ID_VENDOR_FROM_DATABASE=Aztech System Ltd
+@@ -35355,28 +35355,28 @@ pci:v000011BDd00000040*
+  ID_MODEL_FROM_DATABASE=Royal TS Function 1
+ pci:v000011BDd00000040sv000011BDsd00000044*
+- ID_MODEL_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Tuner 1
++ ID_MODEL_FROM_DATABASE=Royal TS Function 1 (PCTV 2000i Dual DVB-T Pro PCI Tuner 1)
+ pci:v000011BDd00000040sv000011BDsd00000045*
+- ID_MODEL_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Tuner 1
++ ID_MODEL_FROM_DATABASE=Royal TS Function 1 (PCTV Dual Sat Pro PCI 4000i Tuner 1)
+ pci:v000011BDd00000041*
+  ID_MODEL_FROM_DATABASE=RoyalTS Function 2
+ pci:v000011BDd00000041sv000011BDsd00000044*
+- ID_MODEL_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Tuner 2
++ ID_MODEL_FROM_DATABASE=RoyalTS Function 2 (PCTV 2000i Dual DVB-T Pro PCI Tuner 2)
+ pci:v000011BDd00000041sv000011BDsd00000045*
+- ID_MODEL_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Tuner 2
++ ID_MODEL_FROM_DATABASE=RoyalTS Function 2 (PCTV Dual Sat Pro PCI 4000i Tuner 2)
+ pci:v000011BDd00000042*
+  ID_MODEL_FROM_DATABASE=Royal TS Function 3
+ pci:v000011BDd00000042sv000011BDsd00000044*
+- ID_MODEL_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Common
++ ID_MODEL_FROM_DATABASE=Royal TS Function 3 (PCTV 2000i Dual DVB-T Pro PCI Common)
+ pci:v000011BDd00000042sv000011BDsd00000045*
+- ID_MODEL_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Common
++ ID_MODEL_FROM_DATABASE=Royal TS Function 3 (PCTV Dual Sat Pro PCI 4000i Common)
+ pci:v000011BDd00000051*
+  ID_MODEL_FROM_DATABASE=PCTV HD 800i
+@@ -35400,154 +35400,154 @@ pci:v000011C1d00000440*
+  ID_MODEL_FROM_DATABASE=56k WinModem
+ pci:v000011C1d00000440sv00001033sd00008015*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv00001033sd00008047*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv00001033sd0000804F*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv000010CFsd0000102C*
+- ID_MODEL_FROM_DATABASE=LB LT Modem V.90 56k
++ ID_MODEL_FROM_DATABASE=56k WinModem (LB LT Modem V.90 56k)
+ pci:v000011C1d00000440sv000010CFsd0000104A*
+- ID_MODEL_FROM_DATABASE=BIBLO LT Modem 56k
++ ID_MODEL_FROM_DATABASE=56k WinModem (BIBLO LT Modem 56k)
+ pci:v000011C1d00000440sv000010CFsd0000105F*
+- ID_MODEL_FROM_DATABASE=LB2 LT Modem V.90 56k
++ ID_MODEL_FROM_DATABASE=56k WinModem (LB2 LT Modem V.90 56k)
+ pci:v000011C1d00000440sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Internal V.90 Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Internal V.90 Modem)
+ pci:v000011C1d00000440sv000011C1sd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv0000122Dsd00004101*
+- ID_MODEL_FROM_DATABASE=MDP7800-U Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (MDP7800-U Modem)
+ pci:v000011C1d00000440sv0000122Dsd00004102*
+- ID_MODEL_FROM_DATABASE=MDP7800SP-U Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (MDP7800SP-U Modem)
+ pci:v000011C1d00000440sv000013E0sd00000040*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv000013E0sd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv000013E0sd00000441*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv000013E0sd00000450*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv000013E0sd0000F100*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv000013E0sd0000F101*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000440sv0000144Dsd00002101*
+- ID_MODEL_FROM_DATABASE=LT56PV Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT56PV Modem)
+ pci:v000011C1d00000440sv0000149Fsd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000441*
+  ID_MODEL_FROM_DATABASE=56k WinModem
+ pci:v000011C1d00000441sv00001033sd0000804D*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv00001033sd00008065*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv00001092sd00000440*
+- ID_MODEL_FROM_DATABASE=Supra 56i
++ ID_MODEL_FROM_DATABASE=56k WinModem (Supra 56i)
+ pci:v000011C1d00000441sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Internal V.90 Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Internal V.90 Modem)
+ pci:v000011C1d00000441sv000011C1sd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv000011C1sd00000441*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv0000122Dsd00004100*
+- ID_MODEL_FROM_DATABASE=MDP7800-U Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (MDP7800-U Modem)
+ pci:v000011C1d00000441sv000013E0sd00000040*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv000013E0sd00000100*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv000013E0sd00000410*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv000013E0sd00000420*
+- ID_MODEL_FROM_DATABASE=TelePath Internet 56k WinModem
++ ID_MODEL_FROM_DATABASE=56k WinModem (TelePath Internet 56k WinModem)
+ pci:v000011C1d00000441sv000013E0sd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv000013E0sd00000443*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv000013E0sd0000F102*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv00001416sd00009804*
+- ID_MODEL_FROM_DATABASE=CommWave 56k Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (CommWave 56k Modem)
+ pci:v000011C1d00000441sv0000141Dsd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000441sv0000144Fsd00000441*
+- ID_MODEL_FROM_DATABASE=Lucent 56k V.90 DF Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Lucent 56k V.90 DF Modem)
+ pci:v000011C1d00000441sv0000144Fsd00000449*
+- ID_MODEL_FROM_DATABASE=Lucent 56k V.90 DF Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Lucent 56k V.90 DF Modem)
+ pci:v000011C1d00000441sv0000144Fsd0000110D*
+- ID_MODEL_FROM_DATABASE=Lucent Win Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Lucent Win Modem)
+ pci:v000011C1d00000441sv00001468sd00000441*
+- ID_MODEL_FROM_DATABASE=Presario 56k V.90 DF Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Presario 56k V.90 DF Modem)
+ pci:v000011C1d00000441sv00001668sd00000440*
+- ID_MODEL_FROM_DATABASE=Lucent Win Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (Lucent Win Modem)
+ pci:v000011C1d00000442*
+  ID_MODEL_FROM_DATABASE=56k WinModem
+ pci:v000011C1d00000442sv000011C1sd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv000011C1sd00000442*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv000013E0sd00000412*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv000013E0sd00000442*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv000013FCsd00002471*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv0000144Dsd00002104*
+- ID_MODEL_FROM_DATABASE=LT56PT Modem
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT56PT Modem)
+ pci:v000011C1d00000442sv0000144Fsd00001104*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv0000149Fsd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000442sv00001668sd00000440*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=56k WinModem (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d00000443*
+  ID_MODEL_FROM_DATABASE=LT WinModem
+@@ -35559,10 +35559,10 @@ pci:v000011C1d00000445*
+  ID_MODEL_FROM_DATABASE=LT WinModem
+ pci:v000011C1d00000445sv00008086sd00002203*
+- ID_MODEL_FROM_DATABASE=PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card)
++ ID_MODEL_FROM_DATABASE=LT WinModem (PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card))
+ pci:v000011C1d00000445sv00008086sd00002204*
+- ID_MODEL_FROM_DATABASE=PRO/100+ MiniPCI on Armada E500
++ ID_MODEL_FROM_DATABASE=LT WinModem (PRO/100+ MiniPCI on Armada E500)
+ pci:v000011C1d00000446*
+  ID_MODEL_FROM_DATABASE=LT WinModem
+@@ -35574,64 +35574,64 @@ pci:v000011C1d00000448*
+  ID_MODEL_FROM_DATABASE=WinModem 56k
+ pci:v000011C1d00000448sv00001014sd00000131*
+- ID_MODEL_FROM_DATABASE=Lucent Win Modem
++ ID_MODEL_FROM_DATABASE=WinModem 56k (Lucent Win Modem)
+ pci:v000011C1d00000448sv00001033sd00008066*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=WinModem 56k (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000448sv000013E0sd00000030*
+- ID_MODEL_FROM_DATABASE=56k Voice Modem
++ ID_MODEL_FROM_DATABASE=WinModem 56k (56k Voice Modem)
+ pci:v000011C1d00000448sv000013E0sd00000040*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd
++ ID_MODEL_FROM_DATABASE=WinModem 56k (LT WinModem 56k Data+Fax+Voice+Dsvd)
+ pci:v000011C1d00000448sv00001668sd00002400*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k (MiniPCI Ethernet+Modem)
++ ID_MODEL_FROM_DATABASE=WinModem 56k (LT WinModem 56k (MiniPCI Ethernet+Modem))
+ pci:v000011C1d00000449*
+  ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k
+ pci:v000011C1d00000449sv00000E11sd0000B14D*
+- ID_MODEL_FROM_DATABASE=56k V.90 Modem
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (56k V.90 Modem)
+ pci:v000011C1d00000449sv00001014sd0000018C*
+- ID_MODEL_FROM_DATABASE=ThinkPad 600X
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (ThinkPad 600X)
+ pci:v000011C1d00000449sv000013E0sd00000020*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (LT WinModem 56k Data+Fax)
+ pci:v000011C1d00000449sv000013E0sd00000041*
+- ID_MODEL_FROM_DATABASE=TelePath Internet 56k WinModem
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (TelePath Internet 56k WinModem)
+ pci:v000011C1d00000449sv00001436sd00000440*
+- ID_MODEL_FROM_DATABASE=Lucent Win Modem
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (Lucent Win Modem)
+ pci:v000011C1d00000449sv0000144Fsd00000449*
+- ID_MODEL_FROM_DATABASE=Lucent 56k V.90 DFi Modem
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (Lucent 56k V.90 DFi Modem)
+ pci:v000011C1d00000449sv00001468sd00000410*
+- ID_MODEL_FROM_DATABASE=IBM ThinkPad T23
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (IBM ThinkPad T23)
+ pci:v000011C1d00000449sv00001468sd00000440*
+- ID_MODEL_FROM_DATABASE=Lucent Win Modem
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (Lucent Win Modem)
+ pci:v000011C1d00000449sv00001468sd00000449*
+- ID_MODEL_FROM_DATABASE=Presario 56k V.90 DFi Modem
++ ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k (Presario 56k V.90 DFi Modem)
+ pci:v000011C1d0000044A*
+  ID_MODEL_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex)
+ pci:v000011C1d0000044Asv000010CFsd00001072*
+- ID_MODEL_FROM_DATABASE=LB Global LT Modem
++ ID_MODEL_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex) (LB Global LT Modem)
+ pci:v000011C1d0000044Asv000013E0sd00000012*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex) (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d0000044Asv000013E0sd00000042*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex) (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d0000044Asv0000144Fsd00001005*
+- ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd
++ ID_MODEL_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex) (LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd)
+ pci:v000011C1d0000044B*
+  ID_MODEL_FROM_DATABASE=LT WinModem
+@@ -35652,13 +35652,13 @@ pci:v000011C1d00000450*
+  ID_MODEL_FROM_DATABASE=LT WinModem
+ pci:v000011C1d00000450sv00001033sd000080A8*
+- ID_MODEL_FROM_DATABASE=Versa Note Vxi
++ ID_MODEL_FROM_DATABASE=LT WinModem (Versa Note Vxi)
+ pci:v000011C1d00000450sv0000144Fsd00004005*
+- ID_MODEL_FROM_DATABASE=Magnia SG20
++ ID_MODEL_FROM_DATABASE=LT WinModem (Magnia SG20)
+ pci:v000011C1d00000450sv00001468sd00000450*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=LT WinModem (Evo N600c)
+ pci:v000011C1d00000451*
+  ID_MODEL_FROM_DATABASE=LT WinModem
+@@ -35733,22 +35733,22 @@ pci:v000011C1d00005811*
+  ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller
+ pci:v000011C1d00005811sv0000103Csd00002A34*
+- ID_MODEL_FROM_DATABASE=Pavilion a1677c
++ ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller (Pavilion a1677c)
+ pci:v000011C1d00005811sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller (Asus IPIBL-LB Motherboard)
+ pci:v000011C1d00005811sv0000103Csd00002A9E*
+- ID_MODEL_FROM_DATABASE=Pavilion p6310f
++ ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller (Pavilion p6310f)
+ pci:v000011C1d00005811sv00001043sd00008294*
+- ID_MODEL_FROM_DATABASE=LSI FW322/323 IEEE 1394a FireWire Controller
++ ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller (LSI FW322/323 IEEE 1394a FireWire Controller)
+ pci:v000011C1d00005811sv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller (D865PERL mainboard)
+ pci:v000011C1d00005811sv0000DEADsd00000800*
+- ID_MODEL_FROM_DATABASE=FireWire Host Bus Adapter
++ ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller (FireWire Host Bus Adapter)
+ pci:v000011C1d00005901*
+  ID_MODEL_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller
+@@ -35757,10 +35757,10 @@ pci:v000011C1d00005901sv000011C1sd00005900*
+  ID_MODEL_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller
+ pci:v000011C1d00005901sv00001443sd00000643*
+- ID_MODEL_FROM_DATABASE=FireBoard800-e V.2
++ ID_MODEL_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller (FireBoard800-e V.2)
+ pci:v000011C1d00005901sv00001546sd00000643*
+- ID_MODEL_FROM_DATABASE=FWB-PCIE1X2x
++ ID_MODEL_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller (FWB-PCIE1X2x)
+ pci:v000011C1d00005903*
+  ID_MODEL_FROM_DATABASE=FW533 [TrueFire] PCIe 1394a Controller
+@@ -35769,7 +35769,7 @@ pci:v000011C1d00008110*
+  ID_MODEL_FROM_DATABASE=T8110 H.100/H.110 TDM switch
+ pci:v000011C1d00008110sv000012D9sd0000000C*
+- ID_MODEL_FROM_DATABASE=E1/T1 PMXc cPCI carrier card
++ ID_MODEL_FROM_DATABASE=T8110 H.100/H.110 TDM switch (E1/T1 PMXc cPCI carrier card)
+ pci:v000011C1d0000AB10*
+  ID_MODEL_FROM_DATABASE=WL60010 Wireless LAN MAC
+@@ -35778,16 +35778,16 @@ pci:v000011C1d0000AB11*
+  ID_MODEL_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC
+ pci:v000011C1d0000AB11sv000011C1sd0000AB12*
+- ID_MODEL_FROM_DATABASE=WaveLAN 11abg Cardbus card (Model 1102)
++ ID_MODEL_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC (WaveLAN 11abg Cardbus card (Model 1102))
+ pci:v000011C1d0000AB11sv000011C1sd0000AB13*
+- ID_MODEL_FROM_DATABASE=WaveLAN 11abg MiniPCI card (Model 0512)
++ ID_MODEL_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC (WaveLAN 11abg MiniPCI card (Model 0512))
+ pci:v000011C1d0000AB11sv000011C1sd0000AB15*
+- ID_MODEL_FROM_DATABASE=WaveLAN 11abg Cardbus card (Model 1106)
++ ID_MODEL_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC (WaveLAN 11abg Cardbus card (Model 1106))
+ pci:v000011C1d0000AB11sv000011C1sd0000AB16*
+- ID_MODEL_FROM_DATABASE=WaveLAN 11abg MiniPCI card (Model 0516)
++ ID_MODEL_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC (WaveLAN 11abg MiniPCI card (Model 0516))
+ pci:v000011C1d0000AB20*
+  ID_MODEL_FROM_DATABASE=ORiNOCO PCI Adapter
+@@ -35856,10 +35856,10 @@ pci:v000011CBd00002000*
+  ID_MODEL_FROM_DATABASE=PCI_9050
+ pci:v000011CBd00002000sv000011CBsd00000200*
+- ID_MODEL_FROM_DATABASE=SX
++ ID_MODEL_FROM_DATABASE=PCI_9050 (SX)
+ pci:v000011CBd00002000sv000011CBsd0000B008*
+- ID_MODEL_FROM_DATABASE=I/O8+
++ ID_MODEL_FROM_DATABASE=PCI_9050 (I/O8+)
+ pci:v000011CBd00004000*
+  ID_MODEL_FROM_DATABASE=SUPI_1
+@@ -35949,28 +35949,28 @@ pci:v000011DEd00006057*
+  ID_MODEL_FROM_DATABASE=ZR36057PQC Video cutting chipset
+ pci:v000011DEd00006057sv00001031sd00007EFE*
+- ID_MODEL_FROM_DATABASE=DC10 Plus
++ ID_MODEL_FROM_DATABASE=ZR36057PQC Video cutting chipset (DC10 Plus)
+ pci:v000011DEd00006057sv00001031sd0000FC00*
+- ID_MODEL_FROM_DATABASE=MiroVIDEO DC50, Motion JPEG Capture/CODEC Board
++ ID_MODEL_FROM_DATABASE=ZR36057PQC Video cutting chipset (MiroVIDEO DC50, Motion JPEG Capture/CODEC Board)
+ pci:v000011DEd00006057sv000012F8sd00008A02*
+- ID_MODEL_FROM_DATABASE=Tekram Video Kit
++ ID_MODEL_FROM_DATABASE=ZR36057PQC Video cutting chipset (Tekram Video Kit)
+ pci:v000011DEd00006057sv000013CAsd00004231*
+- ID_MODEL_FROM_DATABASE=JPEG/TV Card
++ ID_MODEL_FROM_DATABASE=ZR36057PQC Video cutting chipset (JPEG/TV Card)
+ pci:v000011DEd00006120*
+  ID_MODEL_FROM_DATABASE=ZR36120
+ pci:v000011DEd00006120sv00001328sd0000F001*
+- ID_MODEL_FROM_DATABASE=Cinemaster C DVD Decoder
++ ID_MODEL_FROM_DATABASE=ZR36120 (Cinemaster C DVD Decoder)
+ pci:v000011DEd00006120sv000013C2sd00000000*
+- ID_MODEL_FROM_DATABASE=MediaFocus Satellite TV Card
++ ID_MODEL_FROM_DATABASE=ZR36120 (MediaFocus Satellite TV Card)
+ pci:v000011DEd00006120sv00001DE1sd00009FFF*
+- ID_MODEL_FROM_DATABASE=Video Kit C210
++ ID_MODEL_FROM_DATABASE=ZR36120 (Video Kit C210)
+ pci:v000011DF*
+  ID_VENDOR_FROM_DATABASE=New Wave PDG
+@@ -36102,13 +36102,13 @@ pci:v000011F6d00002011*
+  ID_MODEL_FROM_DATABASE=RL100-ATX 10/100
+ pci:v000011F6d00002011sv000011F6sd00002011*
+- ID_MODEL_FROM_DATABASE=RL100-ATX
++ ID_MODEL_FROM_DATABASE=RL100-ATX 10/100 (RL100-ATX)
+ pci:v000011F6d00002201*
+  ID_MODEL_FROM_DATABASE=ReadyLink 100TX (Winbond W89C840)
+ pci:v000011F6d00002201sv000011F6sd00002011*
+- ID_MODEL_FROM_DATABASE=ReadyLink 100TX
++ ID_MODEL_FROM_DATABASE=ReadyLink 100TX (Winbond W89C840) (ReadyLink 100TX)
+ pci:v000011F6d00009881*
+  ID_MODEL_FROM_DATABASE=RL100TX Fast Ethernet
+@@ -36138,10 +36138,10 @@ pci:v000011F8d00008032*
+  ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN
+ pci:v000011F8d00008032sv0000117Csd0000003B*
+- ID_MODEL_FROM_DATABASE=Celerity FC-82EN Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN (Celerity FC-82EN Fibre Channel Adapter)
+ pci:v000011F8d00008032sv0000117Csd0000003C*
+- ID_MODEL_FROM_DATABASE=Celerity FC-84EN Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN (Celerity FC-84EN Fibre Channel Adapter)
+ pci:v000011F9*
+  ID_VENDOR_FROM_DATABASE=I-Cube Inc
+@@ -36285,16 +36285,16 @@ pci:v00001202d00004300*
+  ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter
+ pci:v00001202d00004300sv00001202sd00009841*
+- ID_MODEL_FROM_DATABASE=SK-9841 LX
++ ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter (SK-9841 LX)
+ pci:v00001202d00004300sv00001202sd00009842*
+- ID_MODEL_FROM_DATABASE=SK-9841 LX dual link
++ ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter (SK-9841 LX dual link)
+ pci:v00001202d00004300sv00001202sd00009843*
+- ID_MODEL_FROM_DATABASE=SK-9843 SX
++ ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter (SK-9843 SX)
+ pci:v00001202d00004300sv00001202sd00009844*
+- ID_MODEL_FROM_DATABASE=SK-9843 SX dual link
++ ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter (SK-9843 SX dual link)
+ pci:v00001203*
+  ID_VENDOR_FROM_DATABASE=Bayer Corporation, Agfa Division
+@@ -36411,7 +36411,7 @@ pci:v00001217d000000F7*
+  ID_MODEL_FROM_DATABASE=Firewire (IEEE 1394)
+ pci:v00001217d000000F7sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=Firewire (IEEE 1394) (Satellite P305D-S8995E)
+ pci:v00001217d000010F7*
+  ID_MODEL_FROM_DATABASE=1394 OHCI Compliant Host Controller
+@@ -36420,7 +36420,7 @@ pci:v00001217d000011F7*
+  ID_MODEL_FROM_DATABASE=OZ600 1394a-2000 Controller
+ pci:v00001217d000011F7sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=OZ600 1394a-2000 Controller (Precision M4600)
+ pci:v00001217d000013F7*
+  ID_MODEL_FROM_DATABASE=1394 OHCI Compliant Host Controller
+@@ -36447,31 +36447,31 @@ pci:v00001217d00006933*
+  ID_MODEL_FROM_DATABASE=OZ6933/711E1 CardBus/SmartCardBus Controller
+ pci:v00001217d00006933sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=OZ6933/711E1 CardBus/SmartCardBus Controller (Travelmate 612 TX)
+ pci:v00001217d00006972*
+  ID_MODEL_FROM_DATABASE=OZ601/6912/711E0 CardBus/SmartCardBus Controller
+ pci:v00001217d00006972sv00001014sd0000020C*
+- ID_MODEL_FROM_DATABASE=ThinkPad R30
++ ID_MODEL_FROM_DATABASE=OZ601/6912/711E0 CardBus/SmartCardBus Controller (ThinkPad R30)
+ pci:v00001217d00006972sv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=OZ601/6912/711E0 CardBus/SmartCardBus Controller (Latitude D500)
+ pci:v00001217d00006972sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=OZ601/6912/711E0 CardBus/SmartCardBus Controller (Magnia Z310)
+ pci:v00001217d00007110*
+  ID_MODEL_FROM_DATABASE=OZ711Mx 4-in-1 MemoryCardBus Accelerator
+ pci:v00001217d00007110sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=OZ711Mx 4-in-1 MemoryCardBus Accelerator (NC8000 laptop)
+ pci:v00001217d00007110sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=OZ711Mx 4-in-1 MemoryCardBus Accelerator (NC6000 laptop)
+ pci:v00001217d00007110sv00001734sd0000106C*
+- ID_MODEL_FROM_DATABASE=Amilo A1645
++ ID_MODEL_FROM_DATABASE=OZ711Mx 4-in-1 MemoryCardBus Accelerator (Amilo A1645)
+ pci:v00001217d00007112*
+  ID_MODEL_FROM_DATABASE=OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller
+@@ -36480,7 +36480,7 @@ pci:v00001217d00007113*
+  ID_MODEL_FROM_DATABASE=OZ711EC1 SmartCardBus Controller
+ pci:v00001217d00007113sv00001025sd00000035*
+- ID_MODEL_FROM_DATABASE=TravelMate 660
++ ID_MODEL_FROM_DATABASE=OZ711EC1 SmartCardBus Controller (TravelMate 660)
+ pci:v00001217d00007114*
+  ID_MODEL_FROM_DATABASE=OZ711M1/MC1 4-in-1 MemoryCardBus Controller
+@@ -36489,13 +36489,13 @@ pci:v00001217d00007120*
+  ID_MODEL_FROM_DATABASE=Integrated MMC/SD Controller
+ pci:v00001217d00007120sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=Integrated MMC/SD Controller (Satellite P305D-S8995E)
+ pci:v00001217d00007130*
+  ID_MODEL_FROM_DATABASE=Integrated MS/xD Controller
+ pci:v00001217d00007130sv00001179sd0000FF50*
+- ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E
++ ID_MODEL_FROM_DATABASE=Integrated MS/xD Controller (Satellite P305D-S8995E)
+ pci:v00001217d00007134*
+  ID_MODEL_FROM_DATABASE=OZ711MP1/MS1 MemoryCardBus Controller
+@@ -36519,13 +36519,13 @@ pci:v00001217d00007223*
+  ID_MODEL_FROM_DATABASE=OZ711M3/MC3 4-in-1 MemoryCardBus Controller
+ pci:v00001217d00007223sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=OZ711M3/MC3 4-in-1 MemoryCardBus Controller (NC8000 laptop)
+ pci:v00001217d00007223sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=OZ711M3/MC3 4-in-1 MemoryCardBus Controller (NC6000 laptop)
+ pci:v00001217d00007223sv000010CFsd000011C4*
+- ID_MODEL_FROM_DATABASE=Lifebook P5020D Laptop
++ ID_MODEL_FROM_DATABASE=OZ711M3/MC3 4-in-1 MemoryCardBus Controller (Lifebook P5020D Laptop)
+ pci:v00001217d00007233*
+  ID_MODEL_FROM_DATABASE=OZ711MP3/MS3 4-in-1 MemoryCardBus Controller
+@@ -36540,7 +36540,7 @@ pci:v00001217d00008320*
+  ID_MODEL_FROM_DATABASE=OZ600 MMC/SD Controller
+ pci:v00001217d00008320sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=OZ600 MMC/SD Controller (Precision M4600)
+ pci:v00001217d00008321*
+  ID_MODEL_FROM_DATABASE=Integrated MMC/SD controller
+@@ -36549,7 +36549,7 @@ pci:v00001217d00008330*
+  ID_MODEL_FROM_DATABASE=OZ600 MS/xD Controller
+ pci:v00001217d00008330sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=OZ600 MS/xD Controller (Precision M4600)
+ pci:v00001217d00008331*
+  ID_MODEL_FROM_DATABASE=O2 Flash Memory Card
+@@ -36576,52 +36576,52 @@ pci:v0000121Ad00000003*
+  ID_MODEL_FROM_DATABASE=Voodoo Banshee
+ pci:v0000121Ad00000003sv00001092sd00000003*
+- ID_MODEL_FROM_DATABASE=Monster Fusion
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion)
+ pci:v0000121Ad00000003sv00001092sd00004000*
+- ID_MODEL_FROM_DATABASE=Monster Fusion
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion)
+ pci:v0000121Ad00000003sv00001092sd00004002*
+- ID_MODEL_FROM_DATABASE=Monster Fusion
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion)
+ pci:v0000121Ad00000003sv00001092sd00004801*
+- ID_MODEL_FROM_DATABASE=Monster Fusion AGP
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion AGP)
+ pci:v0000121Ad00000003sv00001092sd00004803*
+- ID_MODEL_FROM_DATABASE=Monster Fusion AGP
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion AGP)
+ pci:v0000121Ad00000003sv00001092sd00008030*
+- ID_MODEL_FROM_DATABASE=Monster Fusion
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion)
+ pci:v0000121Ad00000003sv00001092sd00008035*
+- ID_MODEL_FROM_DATABASE=Monster Fusion AGP
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Monster Fusion AGP)
+ pci:v0000121Ad00000003sv000010B0sd00000001*
+- ID_MODEL_FROM_DATABASE=Dragon 4000
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Dragon 4000)
+ pci:v0000121Ad00000003sv00001102sd00001017*
+- ID_MODEL_FROM_DATABASE=3D Blaster Banshee PCI (CT6760)
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (3D Blaster Banshee PCI (CT6760))
+ pci:v0000121Ad00000003sv00001102sd00001018*
+- ID_MODEL_FROM_DATABASE=3D Blaster Banshee VE
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (3D Blaster Banshee VE)
+ pci:v0000121Ad00000003sv0000121Asd00000001*
+- ID_MODEL_FROM_DATABASE=Voodoo Banshee AGP
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (AGP)
+ pci:v0000121Ad00000003sv0000121Asd00000003*
+- ID_MODEL_FROM_DATABASE=Voodoo Banshee AGP SGRAM
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (AGP SGRAM)
+ pci:v0000121Ad00000003sv0000121Asd00000004*
+  ID_MODEL_FROM_DATABASE=Voodoo Banshee
+ pci:v0000121Ad00000003sv0000139Csd00000016*
+- ID_MODEL_FROM_DATABASE=Raven
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Raven)
+ pci:v0000121Ad00000003sv0000139Csd00000017*
+- ID_MODEL_FROM_DATABASE=Raven
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Raven)
+ pci:v0000121Ad00000003sv000014AFsd00000002*
+- ID_MODEL_FROM_DATABASE=Maxi Gamer Phoenix
++ ID_MODEL_FROM_DATABASE=Voodoo Banshee (Maxi Gamer Phoenix)
+ pci:v0000121Ad00000004*
+  ID_MODEL_FROM_DATABASE=Voodoo Banshee [Velocity 100]
+@@ -36630,70 +36630,70 @@ pci:v0000121Ad00000005*
+  ID_MODEL_FROM_DATABASE=Voodoo 3
+ pci:v0000121Ad00000005sv0000121Asd00000004*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000030*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000031*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000034*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000036*
+- ID_MODEL_FROM_DATABASE=Voodoo3 2000 PCI
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 2000 PCI)
+ pci:v0000121Ad00000005sv0000121Asd00000037*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000038*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd0000003A*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000044*
+- ID_MODEL_FROM_DATABASE=Voodoo3
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3)
+ pci:v0000121Ad00000005sv0000121Asd0000004B*
+- ID_MODEL_FROM_DATABASE=Velocity 100
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Velocity 100)
+ pci:v0000121Ad00000005sv0000121Asd0000004C*
+- ID_MODEL_FROM_DATABASE=Velocity 200
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Velocity 200)
+ pci:v0000121Ad00000005sv0000121Asd0000004D*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd0000004E*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000051*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000052*
+- ID_MODEL_FROM_DATABASE=Voodoo3 AGP
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 AGP)
+ pci:v0000121Ad00000005sv0000121Asd00000057*
+- ID_MODEL_FROM_DATABASE=Voodoo3 3000 PCI
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 3000 PCI)
+ pci:v0000121Ad00000005sv0000121Asd00000060*
+- ID_MODEL_FROM_DATABASE=Voodoo3 3500 TV (NTSC)
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 3500 TV (NTSC))
+ pci:v0000121Ad00000005sv0000121Asd00000061*
+- ID_MODEL_FROM_DATABASE=Voodoo3 3500 TV (PAL)
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 3500 TV (PAL))
+ pci:v0000121Ad00000005sv0000121Asd00000062*
+- ID_MODEL_FROM_DATABASE=Voodoo3 3500 TV (SECAM)
++ ID_MODEL_FROM_DATABASE=Voodoo 3 (Voodoo3 3500 TV (SECAM))
+ pci:v0000121Ad00000009*
+  ID_MODEL_FROM_DATABASE=Voodoo 4 / Voodoo 5
+ pci:v0000121Ad00000009sv0000121Asd00000003*
+- ID_MODEL_FROM_DATABASE=Voodoo5 PCI 5500
++ ID_MODEL_FROM_DATABASE=Voodoo 4 / Voodoo 5 (Voodoo5 PCI 5500)
+ pci:v0000121Ad00000009sv0000121Asd00000009*
+- ID_MODEL_FROM_DATABASE=Voodoo5 AGP 5500/6000
++ ID_MODEL_FROM_DATABASE=Voodoo 4 / Voodoo 5 (Voodoo5 AGP 5500/6000)
+ pci:v0000121Ad00000057*
+  ID_MODEL_FROM_DATABASE=Voodoo 3/3000 [Avenger]
+@@ -36930,31 +36930,31 @@ pci:v0000123Fd00008120*
+  ID_MODEL_FROM_DATABASE=DVxplore Codec
+ pci:v0000123Fd00008120sv000010DEsd000001E1*
+- ID_MODEL_FROM_DATABASE=NVTV PAL
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (NVTV PAL)
+ pci:v0000123Fd00008120sv000010DEsd000001E2*
+- ID_MODEL_FROM_DATABASE=NVTV NTSC
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (NVTV NTSC)
+ pci:v0000123Fd00008120sv000010DEsd000001E3*
+- ID_MODEL_FROM_DATABASE=NVTV PAL
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (NVTV PAL)
+ pci:v0000123Fd00008120sv000010DEsd00000248*
+- ID_MODEL_FROM_DATABASE=NVTV NTSC
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (NVTV NTSC)
+ pci:v0000123Fd00008120sv000010DEsd00000249*
+- ID_MODEL_FROM_DATABASE=NVTV PAL
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (NVTV PAL)
+ pci:v0000123Fd00008120sv000011BDsd00000006*
+- ID_MODEL_FROM_DATABASE=DV500 E4
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (DV500 E4)
+ pci:v0000123Fd00008120sv000011BDsd0000000A*
+- ID_MODEL_FROM_DATABASE=DV500 E4
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (DV500 E4)
+ pci:v0000123Fd00008120sv000011BDsd0000000F*
+- ID_MODEL_FROM_DATABASE=DV500 E4
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (DV500 E4)
+ pci:v0000123Fd00008120sv00001809sd00000016*
+- ID_MODEL_FROM_DATABASE=Emuzed MAUI-III PCI PVR FM TV
++ ID_MODEL_FROM_DATABASE=DVxplore Codec (Emuzed MAUI-III PCI PVR FM TV)
+ pci:v0000123Fd00008888*
+  ID_MODEL_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder
+@@ -36981,10 +36981,10 @@ pci:v00001242d00001560*
+  ID_MODEL_FROM_DATABASE=JNIC-1560 PCI-X Fibre Channel Controller
+ pci:v00001242d00001560sv00001242sd00006562*
+- ID_MODEL_FROM_DATABASE=FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=JNIC-1560 PCI-X Fibre Channel Controller (FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter)
+ pci:v00001242d00001560sv00001242sd0000656A*
+- ID_MODEL_FROM_DATABASE=FCX-6562 PCI-X Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=JNIC-1560 PCI-X Fibre Channel Controller (FCX-6562 PCI-X Fibre Channel Adapter)
+ pci:v00001242d00004643*
+  ID_MODEL_FROM_DATABASE=FCI-1063 Fibre Channel Adapter
+@@ -37011,7 +37011,7 @@ pci:v00001244d00000A00*
+  ID_MODEL_FROM_DATABASE=A1 ISDN [Fritz]
+ pci:v00001244d00000A00sv00001244sd00000A00*
+- ID_MODEL_FROM_DATABASE=FRITZ!Card ISDN Controller
++ ID_MODEL_FROM_DATABASE=A1 ISDN [Fritz] (FRITZ!Card ISDN Controller)
+ pci:v00001244d00000E00*
+  ID_MODEL_FROM_DATABASE=Fritz!PCI v2.0 ISDN
+@@ -37053,7 +37053,7 @@ pci:v0000124Bd00000040*
+  ID_MODEL_FROM_DATABASE=PCI-40A or cPCI-200 Quad IndustryPack carrier
+ pci:v0000124Bd00000040sv0000124Bsd00009080*
+- ID_MODEL_FROM_DATABASE=PCI9080 Bridge
++ ID_MODEL_FROM_DATABASE=PCI-40A or cPCI-200 Quad IndustryPack carrier (PCI9080 Bridge)
+ pci:v0000124C*
+  ID_VENDOR_FROM_DATABASE=Solitron Technologies, Inc.
+@@ -37164,7 +37164,7 @@ pci:v0000125Bd00001400*
+  ID_MODEL_FROM_DATABASE=AX88141 Fast Ethernet Controller
+ pci:v0000125Bd00001400sv00001186sd00001100*
+- ID_MODEL_FROM_DATABASE=AX8814X Based PCI Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=AX88141 Fast Ethernet Controller (AX8814X Based PCI Fast Ethernet Adapter)
+ pci:v0000125C*
+  ID_VENDOR_FROM_DATABASE=Aurora Technologies, Inc.
+@@ -37188,61 +37188,61 @@ pci:v0000125Dd00001968*
+  ID_MODEL_FROM_DATABASE=ES1968 Maestro 2
+ pci:v0000125Dd00001968sv00001028sd00000085*
+- ID_MODEL_FROM_DATABASE=ES1968 Maestro-2 PCI
++ ID_MODEL_FROM_DATABASE=ES1968 Maestro 2 (ES1968 Maestro-2 PCI)
+ pci:v0000125Dd00001968sv00001033sd00008051*
+- ID_MODEL_FROM_DATABASE=ES1968 Maestro-2 Audiodrive
++ ID_MODEL_FROM_DATABASE=ES1968 Maestro 2 (ES1968 Maestro-2 Audiodrive)
+ pci:v0000125Dd00001969*
+  ID_MODEL_FROM_DATABASE=ES1938/ES1946/ES1969 Solo-1 Audiodrive
+ pci:v0000125Dd00001969sv00001014sd00000166*
+- ID_MODEL_FROM_DATABASE=ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard
++ ID_MODEL_FROM_DATABASE=ES1938/ES1946/ES1969 Solo-1 Audiodrive (ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard)
+ pci:v0000125Dd00001969sv0000125Dsd00008888*
+- ID_MODEL_FROM_DATABASE=Solo-1 Audio Adapter
++ ID_MODEL_FROM_DATABASE=ES1938/ES1946/ES1969 Solo-1 Audiodrive (Solo-1 Audio Adapter)
+ pci:v0000125Dd00001969sv0000153Bsd0000111B*
+- ID_MODEL_FROM_DATABASE=Terratec 128i PCI
++ ID_MODEL_FROM_DATABASE=ES1938/ES1946/ES1969 Solo-1 Audiodrive (Terratec 128i PCI)
+ pci:v0000125Dd00001978*
+  ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E
+ pci:v0000125Dd00001978sv00000E11sd0000B112*
+- ID_MODEL_FROM_DATABASE=Armada M700/E500
++ ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E (Armada M700/E500)
+ pci:v0000125Dd00001978sv00001033sd0000803C*
+- ID_MODEL_FROM_DATABASE=ES1978 Maestro-2E Audiodrive
++ ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E (ES1978 Maestro-2E Audiodrive)
+ pci:v0000125Dd00001978sv00001033sd00008058*
+- ID_MODEL_FROM_DATABASE=ES1978 Maestro-2E Audiodrive
++ ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E (ES1978 Maestro-2E Audiodrive)
+ pci:v0000125Dd00001978sv00001092sd00004000*
+- ID_MODEL_FROM_DATABASE=Monster Sound MX400
++ ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E (Monster Sound MX400)
+ pci:v0000125Dd00001978sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=ES1978 Maestro-2E Audiodrive
++ ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E (ES1978 Maestro-2E Audiodrive)
+ pci:v0000125Dd00001988*
+  ID_MODEL_FROM_DATABASE=ES1988 Allegro-1
+ pci:v0000125Dd00001988sv00000E11sd00000098*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 (Evo N600c)
+ pci:v0000125Dd00001988sv00001092sd00004100*
+- ID_MODEL_FROM_DATABASE=Sonic Impact S100
++ ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 (Sonic Impact S100)
+ pci:v0000125Dd00001988sv0000125Dsd00000431*
+- ID_MODEL_FROM_DATABASE=Allegro AudioDrive
++ ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 (Allegro AudioDrive)
+ pci:v0000125Dd00001988sv0000125Dsd00001988*
+- ID_MODEL_FROM_DATABASE=ESS Allegro-1 Audiodrive
++ ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 (ESS Allegro-1 Audiodrive)
+ pci:v0000125Dd00001988sv0000125Dsd00001998*
+- ID_MODEL_FROM_DATABASE=Allegro AudioDrive
++ ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 (Allegro AudioDrive)
+ pci:v0000125Dd00001988sv0000125Dsd00001999*
+- ID_MODEL_FROM_DATABASE=Allegro-1 AudioDrive
++ ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 (Allegro-1 AudioDrive)
+ pci:v0000125Dd00001989*
+  ID_MODEL_FROM_DATABASE=ESS Modem
+@@ -37254,13 +37254,13 @@ pci:v0000125Dd00001998*
+  ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator
+ pci:v0000125Dd00001998sv00001028sd000000B1*
+- ID_MODEL_FROM_DATABASE=Latitude C600
++ ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator (Latitude C600)
+ pci:v0000125Dd00001998sv00001028sd000000E5*
+- ID_MODEL_FROM_DATABASE=Latitude C810
++ ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator (Latitude C810)
+ pci:v0000125Dd00001998sv00001028sd000000E6*
+- ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i (Dell Inspiron 8100)
++ ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator (ES1983S Maestro-3i (Dell Inspiron 8100))
+ pci:v0000125Dd00001999*
+  ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Modem Accelerator
+@@ -37281,34 +37281,34 @@ pci:v0000125Dd00002898*
+  ID_MODEL_FROM_DATABASE=ES2898 Modem
+ pci:v0000125Dd00002898sv0000125Dsd00000424*
+- ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000125Dsd00000425*
+- ID_MODEL_FROM_DATABASE=ES56T-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56T-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000125Dsd00000426*
+- ID_MODEL_FROM_DATABASE=ES56V-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56V-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000125Dsd00000427*
+- ID_MODEL_FROM_DATABASE=VW-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (VW-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000125Dsd00000428*
+- ID_MODEL_FROM_DATABASE=ES56ST-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56ST-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000125Dsd00000429*
+- ID_MODEL_FROM_DATABASE=ES56SV-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56SV-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000147Asd0000C001*
+- ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv0000148Dsd00001030*
+- ID_MODEL_FROM_DATABASE=HCF WV-PI56 [ESS ES56-PI Data Fax Modem]
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (HCF WV-PI56 [ESS ES56-PI Data Fax Modem])
+ pci:v0000125Dd00002898sv000014FEsd00000428*
+- ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56-PI Data Fax Modem)
+ pci:v0000125Dd00002898sv000014FEsd00000429*
+- ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem
++ ID_MODEL_FROM_DATABASE=ES2898 Modem (ES56-PI Data Fax Modem)
+ pci:v0000125E*
+  ID_VENDOR_FROM_DATABASE=Specialvideo Engineering SRL
+@@ -37323,40 +37323,40 @@ pci:v00001260d00003872*
+  ID_MODEL_FROM_DATABASE=ISL3872 [Prism 3]
+ pci:v00001260d00003872sv00001468sd00000202*
+- ID_MODEL_FROM_DATABASE=LAN-Express IEEE 802.11b Wireless LAN
++ ID_MODEL_FROM_DATABASE=ISL3872 [Prism 3] (LAN-Express IEEE 802.11b Wireless LAN)
+ pci:v00001260d00003873*
+  ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3]
+ pci:v00001260d00003873sv000010CFsd00001169*
+- ID_MODEL_FROM_DATABASE=MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874]
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874])
+ pci:v00001260d00003873sv00001186sd00003501*
+- ID_MODEL_FROM_DATABASE=DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874]
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874])
+ pci:v00001260d00003873sv00001186sd00003700*
+- ID_MODEL_FROM_DATABASE=DWL-520 Wireless PCI Adapter (rev E1) [ISL3872]
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (DWL-520 Wireless PCI Adapter (rev E1) [ISL3872])
+ pci:v00001260d00003873sv00001385sd00004105*
+- ID_MODEL_FROM_DATABASE=MA311 802.11b wireless adapter [ISL3874]
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (MA311 802.11b wireless adapter [ISL3874])
+ pci:v00001260d00003873sv00001668sd00000414*
+- ID_MODEL_FROM_DATABASE=HWP01170-01 802.11b PCI Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (HWP01170-01 802.11b PCI Wireless Adapter)
+ pci:v00001260d00003873sv000016A5sd00001601*
+- ID_MODEL_FROM_DATABASE=AIR.mate PC-400 PCI Wireless LAN Adapter
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (AIR.mate PC-400 PCI Wireless LAN Adapter)
+ pci:v00001260d00003873sv00001737sd00003874*
+- ID_MODEL_FROM_DATABASE=WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874]
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874])
+ pci:v00001260d00003873sv00004033sd00007033*
+- ID_MODEL_FROM_DATABASE=PCW200 802.11b Wireless PCI Adapter [ISL3874]
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (PCW200 802.11b Wireless PCI Adapter [ISL3874])
+ pci:v00001260d00003873sv00008086sd00002510*
+- ID_MODEL_FROM_DATABASE=M3AWEB Wireless 802.11b MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (M3AWEB Wireless 802.11b MiniPCI Adapter)
+ pci:v00001260d00003873sv00008086sd00002513*
+- ID_MODEL_FROM_DATABASE=Wireless 802.11b MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] (Wireless 802.11b MiniPCI Adapter)
+ pci:v00001260d00003877*
+  ID_MODEL_FROM_DATABASE=ISL3877 [Prism Indigo]
+@@ -37365,58 +37365,58 @@ pci:v00001260d00003886*
+  ID_MODEL_FROM_DATABASE=ISL3886 [Prism Javelin/Prism Xbow]
+ pci:v00001260d00003886sv000017CFsd00000037*
+- ID_MODEL_FROM_DATABASE=XG-901 and clones Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ISL3886 [Prism Javelin/Prism Xbow] (XG-901 and clones Wireless Adapter)
+ pci:v00001260d00003890*
+  ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow]
+ pci:v00001260d00003890sv000010B8sd00002802*
+- ID_MODEL_FROM_DATABASE=SMC2802W V1 Wireless PCI Adapter [ISL3890]
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (SMC2802W V1 Wireless PCI Adapter [ISL3890])
+ pci:v00001260d00003890sv000010B8sd00002835*
+- ID_MODEL_FROM_DATABASE=SMC2835W Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (SMC2835W Wireless Cardbus Adapter)
+ pci:v00001260d00003890sv000010B8sd0000A835*
+- ID_MODEL_FROM_DATABASE=SMC2835W V2 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (SMC2835W V2 Wireless Cardbus Adapter)
+ pci:v00001260d00003890sv00001113sd00004203*
+- ID_MODEL_FROM_DATABASE=WN4201B
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (WN4201B)
+ pci:v00001260d00003890sv00001113sd00008201*
+- ID_MODEL_FROM_DATABASE=T-Com T-Sinus 154pcicard Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (T-Com T-Sinus 154pcicard Wireless PCI Adapter)
+ pci:v00001260d00003890sv00001113sd0000B301*
+- ID_MODEL_FROM_DATABASE=T-Sinus 154card Cardbus
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (T-Sinus 154card Cardbus)
+ pci:v00001260d00003890sv00001113sd0000EE03*
+- ID_MODEL_FROM_DATABASE=SMC2802W V2 Wireless PCI Adapter [ISL3886]
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (SMC2802W V2 Wireless PCI Adapter [ISL3886])
+ pci:v00001260d00003890sv00001113sd0000EE08*
+- ID_MODEL_FROM_DATABASE=SMC2835W V3 EU Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (SMC2835W V3 EU Wireless Cardbus Adapter)
+ pci:v00001260d00003890sv00001186sd00003202*
+- ID_MODEL_FROM_DATABASE=DWL-G650 A1 Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (DWL-G650 A1 Wireless Adapter)
+ pci:v00001260d00003890sv00001259sd0000C104*
+- ID_MODEL_FROM_DATABASE=CG-WLCB54GT Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (CG-WLCB54GT Wireless Adapter)
+ pci:v00001260d00003890sv00001260sd00000000*
+- ID_MODEL_FROM_DATABASE=WG511 v1 54 Mbps Wireless PC Card
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (WG511 v1 54 Mbps Wireless PC Card)
+ pci:v00001260d00003890sv00001385sd00004800*
+- ID_MODEL_FROM_DATABASE=WG511 v2/v3 54 Mbps Wireless PC Card
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (WG511 v2/v3 54 Mbps Wireless PC Card)
+ pci:v00001260d00003890sv000016A5sd00001605*
+- ID_MODEL_FROM_DATABASE=ALLNET ALL0271 Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (ALLNET ALL0271 Wireless PCI Adapter)
+ pci:v00001260d00003890sv000017CFsd00000014*
+- ID_MODEL_FROM_DATABASE=XG-600 and clones Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (XG-600 and clones Wireless Adapter)
+ pci:v00001260d00003890sv000017CFsd00000020*
+- ID_MODEL_FROM_DATABASE=XG-900 and clones Wireless Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (XG-900 and clones Wireless Adapter)
+ pci:v00001260d00003890sv0000187Esd00003403*
+- ID_MODEL_FROM_DATABASE=G-110 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] (G-110 802.11g Wireless Cardbus Adapter)
+ pci:v00001260d00008130*
+  ID_MODEL_FROM_DATABASE=HMP8130 NTSC/PAL Video Decoder
+@@ -37428,7 +37428,7 @@ pci:v00001260d0000FFFF*
+  ID_MODEL_FROM_DATABASE=ISL3886IK
+ pci:v00001260d0000FFFFsv00001260sd00000000*
+- ID_MODEL_FROM_DATABASE=Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter
++ ID_MODEL_FROM_DATABASE=ISL3886IK (Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter)
+ pci:v00001261*
+  ID_VENDOR_FROM_DATABASE=Matsushita-Kotobuki Electronics Industries, Ltd.
+@@ -37455,7 +37455,7 @@ pci:v00001266d00001910*
+  ID_MODEL_FROM_DATABASE=NE2000Plus (RT8029) Ethernet Adapter
+ pci:v00001266d00001910sv00001266sd00001910*
+- ID_MODEL_FROM_DATABASE=NE2000Plus Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=NE2000Plus (RT8029) Ethernet Adapter (NE2000Plus Ethernet Adapter)
+ pci:v00001267*
+  ID_VENDOR_FROM_DATABASE=S. A. Telecommunications
+@@ -37554,169 +37554,169 @@ pci:v00001274d00001371*
+  ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97]
+ pci:v00001274d00001371sv00000E11sd00000024*
+- ID_MODEL_FROM_DATABASE=AudioPCI on Motherboard Compaq Deskpro
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (AudioPCI on Motherboard Compaq Deskpro)
+ pci:v00001274d00001371sv00000E11sd0000B1A7*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI)
+ pci:v00001274d00001371sv00001033sd000080AC*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI)
+ pci:v00001274d00001371sv00001042sd00001854*
+- ID_MODEL_FROM_DATABASE=Tazer
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (Tazer)
+ pci:v00001274d00001371sv0000107Bsd00008054*
+- ID_MODEL_FROM_DATABASE=Tabor2
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (Tabor2)
+ pci:v00001274d00001371sv00001274sd00001371*
+- ID_MODEL_FROM_DATABASE=AudioPCI 64V/128 / Creative Sound Blaster CT4810
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (AudioPCI 64V/128 / Creative Sound Blaster CT4810)
+ pci:v00001274d00001371sv00001274sd00008001*
+- ID_MODEL_FROM_DATABASE=CT4751 board
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (CT4751 board)
+ pci:v00001274d00001371sv00001462sd00006470*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A)
+ pci:v00001274d00001371sv00001462sd00006560*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10)
+ pci:v00001274d00001371sv00001462sd00006630*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A)
+ pci:v00001274d00001371sv00001462sd00006631*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A)
+ pci:v00001274d00001371sv00001462sd00006632*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A)
+ pci:v00001274d00001371sv00001462sd00006633*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A)
+ pci:v00001274d00001371sv00001462sd00006820*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00)
+ pci:v00001274d00001371sv00001462sd00006822*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A)
+ pci:v00001274d00001371sv00001462sd00006830*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00)
+ pci:v00001274d00001371sv00001462sd00006880*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00)
+ pci:v00001274d00001371sv00001462sd00006900*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00)
+ pci:v00001274d00001371sv00001462sd00006910*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6191
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6191)
+ pci:v00001274d00001371sv00001462sd00006930*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6193
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6193)
+ pci:v00001274d00001371sv00001462sd00006990*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A)
+ pci:v00001274d00001371sv00001462sd00006991*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A)
+ pci:v00001274d00001371sv000014A4sd00002077*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KR639
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard KR639)
+ pci:v00001274d00001371sv000014A4sd00002105*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MR800
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MR800)
+ pci:v00001274d00001371sv000014A4sd00002107*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MR801
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard MR801)
+ pci:v00001274d00001371sv000014A4sd00002172*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard DR739
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard DR739)
+ pci:v00001274d00001371sv00001509sd00009902*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KW11
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard KW11)
+ pci:v00001274d00001371sv00001509sd00009903*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KW31
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard KW31)
+ pci:v00001274d00001371sv00001509sd00009904*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KA11
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard KA11)
+ pci:v00001274d00001371sv00001509sd00009905*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KC13
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard KC13)
+ pci:v00001274d00001371sv0000152Dsd00008801*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard CP810E
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard CP810E)
+ pci:v00001274d00001371sv0000152Dsd00008802*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard CP810
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard CP810)
+ pci:v00001274d00001371sv0000152Dsd00008803*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3810E
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard P3810E)
+ pci:v00001274d00001371sv0000152Dsd00008804*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3810-S
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard P3810-S)
+ pci:v00001274d00001371sv0000152Dsd00008805*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3820-S
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard P3820-S)
+ pci:v00001274d00001371sv0000270Fsd00002001*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6CTR
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard 6CTR)
+ pci:v00001274d00001371sv0000270Fsd00002200*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WTX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard 6WTX)
+ pci:v00001274d00001371sv0000270Fsd00003000*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WSV
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard 6WSV)
+ pci:v00001274d00001371sv0000270Fsd00003100*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WIV2
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard 6WIV2)
+ pci:v00001274d00001371sv0000270Fsd00003102*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WIV
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard 6WIV)
+ pci:v00001274d00001371sv0000270Fsd00007060*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6ASA2
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard 6ASA2)
+ pci:v00001274d00001371sv00008086sd00004249*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BI440ZX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard BI440ZX)
+ pci:v00001274d00001371sv00008086sd0000424C*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BL440ZX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard BL440ZX)
+ pci:v00001274d00001371sv00008086sd0000425A*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BZ440ZX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard BZ440ZX)
+ pci:v00001274d00001371sv00008086sd00004341*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Cayman
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard Cayman)
+ pci:v00001274d00001371sv00008086sd00004343*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Cape Cod
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard Cape Cod)
+ pci:v00001274d00001371sv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=D815EEA Motherboard
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (D815EEA Motherboard)
+ pci:v00001274d00001371sv00008086sd00004649*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Fire Island
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard Fire Island)
+ pci:v00001274d00001371sv00008086sd0000464A*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard FJ440ZX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard FJ440ZX)
+ pci:v00001274d00001371sv00008086sd00004D4F*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Montreal
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard Montreal)
+ pci:v00001274d00001371sv00008086sd00004F43*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard OC440LX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard OC440LX)
+ pci:v00001274d00001371sv00008086sd00005243*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard RC440BX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard RC440BX)
+ pci:v00001274d00001371sv00008086sd00005352*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard SunRiver
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard SunRiver)
+ pci:v00001274d00001371sv00008086sd00005643*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Vancouver
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard Vancouver)
+ pci:v00001274d00001371sv00008086sd00005753*
+- ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard WS440BX
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97] (ES1371, ES1373 AudioPCI On Motherboard WS440BX)
+ pci:v00001274d00005000*
+  ID_MODEL_FROM_DATABASE=ES1370 [AudioPCI]
+@@ -37725,31 +37725,31 @@ pci:v00001274d00005880*
+  ID_MODEL_FROM_DATABASE=5880B [AudioPCI]
+ pci:v00001274d00005880sv00001274sd00002000*
+- ID_MODEL_FROM_DATABASE=Creative Sound Blaster AudioPCI128
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (Creative Sound Blaster AudioPCI128)
+ pci:v00001274d00005880sv00001274sd00002003*
+- ID_MODEL_FROM_DATABASE=Creative SoundBlaster AudioPCI 128
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (Creative SoundBlaster AudioPCI 128)
+ pci:v00001274d00005880sv00001274sd00005880*
+- ID_MODEL_FROM_DATABASE=Creative Sound Blaster AudioPCI128
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (Creative Sound Blaster AudioPCI128)
+ pci:v00001274d00005880sv00001274sd00008001*
+- ID_MODEL_FROM_DATABASE=Sound Blaster 16PCI 4.1ch
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (Sound Blaster 16PCI 4.1ch)
+ pci:v00001274d00005880sv00001458sd0000A000*
+- ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6OXET
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (5880 AudioPCI On Motherboard 6OXET)
+ pci:v00001274d00005880sv00001462sd00006880*
+- ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard MS-6188 1.00
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (5880 AudioPCI On Motherboard MS-6188 1.00)
+ pci:v00001274d00005880sv0000270Fsd00002001*
+- ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6CTR
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (5880 AudioPCI On Motherboard 6CTR)
+ pci:v00001274d00005880sv0000270Fsd00002200*
+- ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6WTX
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (5880 AudioPCI On Motherboard 6WTX)
+ pci:v00001274d00005880sv0000270Fsd00007040*
+- ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6ATA4
++ ID_MODEL_FROM_DATABASE=5880B [AudioPCI] (5880 AudioPCI On Motherboard 6ATA4)
+ pci:v00001274d00008001*
+  ID_MODEL_FROM_DATABASE=CT5880 [AudioPCI]
+@@ -37809,181 +37809,181 @@ pci:v0000127Ad00001002*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem
+ pci:v0000127Ad00001002sv00001092sd0000094C*
+- ID_MODEL_FROM_DATABASE=SupraExpress 56i PRO [Diamond SUP2380]
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (SupraExpress 56i PRO [Diamond SUP2380])
+ pci:v0000127Ad00001002sv0000122Dsd00004002*
+- ID_MODEL_FROM_DATABASE=HPG / MDP3858-U
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (HPG / MDP3858-U)
+ pci:v0000127Ad00001002sv0000122Dsd00004005*
+- ID_MODEL_FROM_DATABASE=MDP3858-E
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (MDP3858-E)
+ pci:v0000127Ad00001002sv0000122Dsd00004007*
+- ID_MODEL_FROM_DATABASE=MDP3858-A/-NZ
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (MDP3858-A/-NZ)
+ pci:v0000127Ad00001002sv0000122Dsd00004012*
+- ID_MODEL_FROM_DATABASE=MDP3858-SA
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (MDP3858-SA)
+ pci:v0000127Ad00001002sv0000122Dsd00004017*
+- ID_MODEL_FROM_DATABASE=MDP3858-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (MDP3858-W)
+ pci:v0000127Ad00001002sv0000122Dsd00004018*
+- ID_MODEL_FROM_DATABASE=MDP3858-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (MDP3858-W)
+ pci:v0000127Ad00001002sv0000127Asd00001002*
+- ID_MODEL_FROM_DATABASE=Rockwell 56K D/F HCF Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Rockwell 56K D/F HCF Modem)
+ pci:v0000127Ad00001003*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem
+ pci:v0000127Ad00001003sv00000E11sd0000B0BC*
+- ID_MODEL_FROM_DATABASE=229-DF Zephyr
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (229-DF Zephyr)
+ pci:v0000127Ad00001003sv00000E11sd0000B114*
+- ID_MODEL_FROM_DATABASE=229-DF Cheetah
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (229-DF Cheetah)
+ pci:v0000127Ad00001003sv00001033sd0000802B*
+- ID_MODEL_FROM_DATABASE=229-DF
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (229-DF)
+ pci:v0000127Ad00001003sv000013DFsd00001003*
+- ID_MODEL_FROM_DATABASE=PCI56RX Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (PCI56RX Modem)
+ pci:v0000127Ad00001003sv000013E0sd00000117*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001003sv000013E0sd00000147*
+- ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R3 Spain V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM F-1156IV+/R3 Spain V.90 Modem)
+ pci:v0000127Ad00001003sv000013E0sd00000197*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001003sv000013E0sd000001C7*
+- ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R3 WW V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM F-1156IV+/R3 WW V.90 Modem)
+ pci:v0000127Ad00001003sv000013E0sd000001F7*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001003sv00001436sd00001003*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001003sv00001436sd00001103*
+- ID_MODEL_FROM_DATABASE=IBM 5614PM3G V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM 5614PM3G V.90 Modem)
+ pci:v0000127Ad00001003sv00001436sd00001602*
+- ID_MODEL_FROM_DATABASE=Compaq 229-DF Ducati
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Compaq 229-DF Ducati)
+ pci:v0000127Ad00001004*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem
+ pci:v0000127Ad00001004sv00001048sd00001500*
+- ID_MODEL_FROM_DATABASE=MicroLink 56k Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem (MicroLink 56k Modem)
+ pci:v0000127Ad00001004sv000010CFsd00001059*
+- ID_MODEL_FROM_DATABASE=Fujitsu 229-DFRT
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem (Fujitsu 229-DFRT)
+ pci:v0000127Ad00001005*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ pci:v0000127Ad00001005sv00001005sd0000127A*
+- ID_MODEL_FROM_DATABASE=AOpen FM56-P
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (AOpen FM56-P)
+ pci:v0000127Ad00001005sv00001033sd00008029*
+- ID_MODEL_FROM_DATABASE=229-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (229-DFSV)
+ pci:v0000127Ad00001005sv00001033sd00008054*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Modem)
+ pci:v0000127Ad00001005sv000010CFsd0000103C*
+- ID_MODEL_FROM_DATABASE=Fujitsu
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu)
+ pci:v0000127Ad00001005sv000010CFsd00001055*
+- ID_MODEL_FROM_DATABASE=Fujitsu 229-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu 229-DFSV)
+ pci:v0000127Ad00001005sv000010CFsd00001056*
+- ID_MODEL_FROM_DATABASE=Fujitsu 229-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu 229-DFSV)
+ pci:v0000127Ad00001005sv0000122Dsd00004003*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-U
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-U)
+ pci:v0000127Ad00001005sv0000122Dsd00004006*
+- ID_MODEL_FROM_DATABASE=Packard Bell MDP3858V-E
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Packard Bell MDP3858V-E)
+ pci:v0000127Ad00001005sv0000122Dsd00004008*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-A/SP-NZ
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-A/SP-NZ)
+ pci:v0000127Ad00001005sv0000122Dsd00004009*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-E
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-E)
+ pci:v0000127Ad00001005sv0000122Dsd00004010*
+- ID_MODEL_FROM_DATABASE=MDP3858V-U
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858V-U)
+ pci:v0000127Ad00001005sv0000122Dsd00004011*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-SA
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-SA)
+ pci:v0000127Ad00001005sv0000122Dsd00004013*
+- ID_MODEL_FROM_DATABASE=MDP3858V-A/V-NZ
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858V-A/V-NZ)
+ pci:v0000127Ad00001005sv0000122Dsd00004015*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-W)
+ pci:v0000127Ad00001005sv0000122Dsd00004016*
+- ID_MODEL_FROM_DATABASE=MDP3858V-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858V-W)
+ pci:v0000127Ad00001005sv0000122Dsd00004019*
+- ID_MODEL_FROM_DATABASE=MDP3858V-SA
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858V-SA)
+ pci:v0000127Ad00001005sv000013DFsd00001005*
+- ID_MODEL_FROM_DATABASE=PCI56RVP Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (PCI56RVP Modem)
+ pci:v0000127Ad00001005sv000013E0sd00000187*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM)
+ pci:v0000127Ad00001005sv000013E0sd000001A7*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM)
+ pci:v0000127Ad00001005sv000013E0sd000001B7*
+- ID_MODEL_FROM_DATABASE=IBM DF-1156IV+/R3 Spain V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM DF-1156IV+/R3 Spain V.90 Modem)
+ pci:v0000127Ad00001005sv000013E0sd000001D7*
+- ID_MODEL_FROM_DATABASE=IBM DF-1156IV+/R3 WW V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM DF-1156IV+/R3 WW V.90 Modem)
+ pci:v0000127Ad00001005sv00001436sd00001005*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM)
+ pci:v0000127Ad00001005sv00001436sd00001105*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM)
+ pci:v0000127Ad00001005sv00001437sd00001105*
+- ID_MODEL_FROM_DATABASE=IBM 5614PS3G V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (IBM 5614PS3G V.90 Modem)
+ pci:v0000127Ad00001022*
+  ID_MODEL_FROM_DATABASE=HCF 56k Modem
+ pci:v0000127Ad00001022sv00001436sd00001303*
+- ID_MODEL_FROM_DATABASE=M3-5614PM3G V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Modem (M3-5614PM3G V.90 Modem)
+ pci:v0000127Ad00001023*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem
+ pci:v0000127Ad00001023sv0000122Dsd00004020*
+- ID_MODEL_FROM_DATABASE=Packard Bell MDP3858-WE
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Packard Bell MDP3858-WE)
+ pci:v0000127Ad00001023sv0000122Dsd00004023*
+- ID_MODEL_FROM_DATABASE=MDP3858-UE
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (MDP3858-UE)
+ pci:v0000127Ad00001023sv000013E0sd00000247*
+- ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R6 Spain V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM F-1156IV+/R6 Spain V.90 Modem)
+ pci:v0000127Ad00001023sv000013E0sd00000297*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001023sv000013E0sd000002C7*
+- ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R6 WW V.90 Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM F-1156IV+/R6 WW V.90 Modem)
+ pci:v0000127Ad00001023sv00001436sd00001203*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001023sv00001436sd00001303*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v0000127Ad00001024*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem
+@@ -37992,19 +37992,19 @@ pci:v0000127Ad00001025*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ pci:v0000127Ad00001025sv000010CFsd0000106A*
+- ID_MODEL_FROM_DATABASE=Fujitsu 235-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu 235-DFSV)
+ pci:v0000127Ad00001025sv0000122Dsd00004021*
+- ID_MODEL_FROM_DATABASE=Packard Bell MDP3858V-WE
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Packard Bell MDP3858V-WE)
+ pci:v0000127Ad00001025sv0000122Dsd00004022*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-WE
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-WE)
+ pci:v0000127Ad00001025sv0000122Dsd00004024*
+- ID_MODEL_FROM_DATABASE=MDP3858V-UE
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858V-UE)
+ pci:v0000127Ad00001025sv0000122Dsd00004025*
+- ID_MODEL_FROM_DATABASE=MDP3858SP-UE
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (MDP3858SP-UE)
+ pci:v0000127Ad00001026*
+  ID_MODEL_FROM_DATABASE=HCF 56k PCI Speakerphone Modem
+@@ -38034,85 +38034,85 @@ pci:v0000127Ad00002005*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem
+ pci:v0000127Ad00002005sv0000104Dsd00008044*
+- ID_MODEL_FROM_DATABASE=229-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (229-DFSV)
+ pci:v0000127Ad00002005sv0000104Dsd00008045*
+- ID_MODEL_FROM_DATABASE=229-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (229-DFSV)
+ pci:v0000127Ad00002005sv0000104Dsd00008055*
+- ID_MODEL_FROM_DATABASE=PBE/Aztech 235W-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (PBE/Aztech 235W-DFSV)
+ pci:v0000127Ad00002005sv0000104Dsd00008056*
+- ID_MODEL_FROM_DATABASE=235-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (235-DFSV)
+ pci:v0000127Ad00002005sv0000104Dsd0000805A*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Modem)
+ pci:v0000127Ad00002005sv0000104Dsd0000805F*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Modem)
+ pci:v0000127Ad00002005sv0000104Dsd00008074*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Modem)
+ pci:v0000127Ad00002013*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem
+ pci:v0000127Ad00002013sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Modem)
+ pci:v0000127Ad00002013sv00001179sd0000FF00*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Modem)
+ pci:v0000127Ad00002014*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem
+ pci:v0000127Ad00002014sv000010CFsd00001057*
+- ID_MODEL_FROM_DATABASE=Fujitsu Citicorp III
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (Fujitsu Citicorp III)
+ pci:v0000127Ad00002014sv0000122Dsd00004050*
+- ID_MODEL_FROM_DATABASE=MSP3880-U
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (MSP3880-U)
+ pci:v0000127Ad00002014sv0000122Dsd00004055*
+- ID_MODEL_FROM_DATABASE=MSP3880-W
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (MSP3880-W)
+ pci:v0000127Ad00002015*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ pci:v0000127Ad00002015sv000010CFsd00001063*
+- ID_MODEL_FROM_DATABASE=Fujitsu
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu)
+ pci:v0000127Ad00002015sv000010CFsd00001064*
+- ID_MODEL_FROM_DATABASE=Fujitsu
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu)
+ pci:v0000127Ad00002015sv00001468sd00002015*
+- ID_MODEL_FROM_DATABASE=Fujitsu
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu)
+ pci:v0000127Ad00002016*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem
+ pci:v0000127Ad00002016sv0000122Dsd00004051*
+- ID_MODEL_FROM_DATABASE=MSP3880V-W
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (MSP3880V-W)
+ pci:v0000127Ad00002016sv0000122Dsd00004052*
+- ID_MODEL_FROM_DATABASE=MSP3880SP-W
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (MSP3880SP-W)
+ pci:v0000127Ad00002016sv0000122Dsd00004054*
+- ID_MODEL_FROM_DATABASE=MSP3880V-U
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (MSP3880V-U)
+ pci:v0000127Ad00002016sv0000122Dsd00004056*
+- ID_MODEL_FROM_DATABASE=MSP3880SP-U
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (MSP3880SP-U)
+ pci:v0000127Ad00002016sv0000122Dsd00004057*
+- ID_MODEL_FROM_DATABASE=MSP3880SP-A
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (MSP3880SP-A)
+ pci:v0000127Ad00004311*
+  ID_MODEL_FROM_DATABASE=Riptide HSF 56k PCI Modem
+ pci:v0000127Ad00004311sv0000127Asd00004311*
+- ID_MODEL_FROM_DATABASE=Ring Modular? Riptide HSF RT HP Dom
++ ID_MODEL_FROM_DATABASE=Riptide HSF 56k PCI Modem (Ring Modular? Riptide HSF RT HP Dom)
+ pci:v0000127Ad00004311sv000013E0sd00000210*
+- ID_MODEL_FROM_DATABASE=HP-GVC
++ ID_MODEL_FROM_DATABASE=Riptide HSF 56k PCI Modem (HP-GVC)
+ pci:v0000127Ad00004320*
+  ID_MODEL_FROM_DATABASE=Riptide PCI Audio Controller
+@@ -38124,16 +38124,16 @@ pci:v0000127Ad00004321*
+  ID_MODEL_FROM_DATABASE=Riptide HCF 56k PCI Modem
+ pci:v0000127Ad00004321sv00001235sd00004321*
+- ID_MODEL_FROM_DATABASE=Hewlett Packard DF
++ ID_MODEL_FROM_DATABASE=Riptide HCF 56k PCI Modem (Hewlett Packard DF)
+ pci:v0000127Ad00004321sv00001235sd00004324*
+- ID_MODEL_FROM_DATABASE=Hewlett Packard DF
++ ID_MODEL_FROM_DATABASE=Riptide HCF 56k PCI Modem (Hewlett Packard DF)
+ pci:v0000127Ad00004321sv000013E0sd00000210*
+- ID_MODEL_FROM_DATABASE=Hewlett Packard DF
++ ID_MODEL_FROM_DATABASE=Riptide HCF 56k PCI Modem (Hewlett Packard DF)
+ pci:v0000127Ad00004321sv0000144Dsd00002321*
+- ID_MODEL_FROM_DATABASE=Riptide
++ ID_MODEL_FROM_DATABASE=Riptide HCF 56k PCI Modem (Riptide)
+ pci:v0000127Ad00004322*
+  ID_MODEL_FROM_DATABASE=Riptide PCI Game Controller
+@@ -38190,7 +38190,7 @@ pci:v00001282d00009102*
+  ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet
+ pci:v00001282d00009102sv00000291sd00008212*
+- ID_MODEL_FROM_DATABASE=DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit
++ ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet (DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit)
+ pci:v00001282d00009132*
+  ID_MODEL_FROM_DATABASE=Ethernet 100/10 MBit
+@@ -38208,19 +38208,19 @@ pci:v00001283d00008211*
+  ID_MODEL_FROM_DATABASE=ITE 8211F Single Channel UDMA 133
+ pci:v00001283d00008211sv00001043sd00008138*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=ITE 8211F Single Channel UDMA 133 (P5GD1-VW Mainboard)
+ pci:v00001283d00008212*
+  ID_MODEL_FROM_DATABASE=IT8212 Dual channel ATA RAID controller
+ pci:v00001283d00008212sv00001283sd00000001*
+- ID_MODEL_FROM_DATABASE=IT/ITE8212 Dual channel ATA RAID controller
++ ID_MODEL_FROM_DATABASE=IT8212 Dual channel ATA RAID controller (IT/ITE8212 Dual channel ATA RAID controller)
+ pci:v00001283d00008213*
+  ID_MODEL_FROM_DATABASE=IT8213 IDE Controller
+ pci:v00001283d00008213sv00001458sd0000B000*
+- ID_MODEL_FROM_DATABASE=GA-EG45M-DS2H Mainboard
++ ID_MODEL_FROM_DATABASE=IT8213 IDE Controller (GA-EG45M-DS2H Mainboard)
+ pci:v00001283d00008330*
+  ID_MODEL_FROM_DATABASE=IT8330G
+@@ -38451,19 +38451,19 @@ pci:v000012AEd00000001*
+  ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet
+ pci:v000012AEd00000001sv00001014sd00000104*
+- ID_MODEL_FROM_DATABASE=Gigabit Ethernet-SX PCI Adapter
++ ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet (Gigabit Ethernet-SX PCI Adapter)
+ pci:v000012AEd00000001sv000012AEsd00000001*
+- ID_MODEL_FROM_DATABASE=Gigabit Ethernet-SX (Universal)
++ ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet (Gigabit Ethernet-SX (Universal))
+ pci:v000012AEd00000002*
+  ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet (Copper)
+ pci:v000012AEd00000002sv000010A9sd00008002*
+- ID_MODEL_FROM_DATABASE=Acenic Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet (Copper) (Acenic Gigabit Ethernet)
+ pci:v000012AEd00000002sv000012AEsd00000002*
+- ID_MODEL_FROM_DATABASE=Gigabit Ethernet-T (3C986-T)
++ ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet (Copper) (Gigabit Ethernet-T (3C986-T))
+ pci:v000012AEd000000FA*
+  ID_MODEL_FROM_DATABASE=Farallon PN9100-T Gigabit Ethernet
+@@ -38505,64 +38505,64 @@ pci:v000012B9d00001006*
+  ID_MODEL_FROM_DATABASE=WinModem
+ pci:v000012B9d00001006sv000012B9sd0000005C*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 3472)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal Voice WinModem (Model 3472))
+ pci:v000012B9d00001006sv000012B9sd0000005E*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Models 662975)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal WinModem (Models 662975))
+ pci:v000012B9d00001006sv000012B9sd00000062*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 662978)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal Voice WinModem (Model 662978))
+ pci:v000012B9d00001006sv000012B9sd00000068*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 5690)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal Voice WinModem (Model 5690))
+ pci:v000012B9d00001006sv000012B9sd0000007A*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 662974)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal Voice WinModem (Model 662974))
+ pci:v000012B9d00001006sv000012B9sd0000007F*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Models 5698, 5699)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal WinModem (Models 5698, 5699))
+ pci:v000012B9d00001006sv000012B9sd00000080*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Models 2975, 3528)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal WinModem (Models 2975, 3528))
+ pci:v000012B9d00001006sv000012B9sd00000081*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Models 2974, 3529)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal Voice WinModem (Models 2974, 3529))
+ pci:v000012B9d00001006sv000012B9sd00000091*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 2978)
++ ID_MODEL_FROM_DATABASE=WinModem (USR 56k Internal Voice WinModem (Model 2978))
+ pci:v000012B9d00001007*
+  ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem
+ pci:v000012B9d00001007sv000012B9sd000000A3*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Model 3595)
++ ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem ((Model 3595))
+ pci:v000012B9d00001007sv000012B9sd000000C4*
+- ID_MODEL_FROM_DATABASE=U.S. Robotics V.92 Voice Faxmodem (2884A/B/C)
++ ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (U.S. Robotics V.92 Voice Faxmodem (2884A/B/C))
+ pci:v000012B9d00001008*
+  ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610
+ pci:v000012B9d00001008sv000012B9sd000000A2*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal FAX Modem (Model 2977)
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56k Internal FAX Modem (Model 2977))
+ pci:v000012B9d00001008sv000012B9sd000000AA*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice Modem (Model 2976)
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56k Internal Voice Modem (Model 2976))
+ pci:v000012B9d00001008sv000012B9sd000000AB*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice Modem (Model 5609)
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56k Internal Voice Modem (Model 5609))
+ pci:v000012B9d00001008sv000012B9sd000000AC*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal Voice Modem (Model 3298)
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56k Internal Voice Modem (Model 3298))
+ pci:v000012B9d00001008sv000012B9sd000000AD*
+- ID_MODEL_FROM_DATABASE=USR 56k Internal FAX Modem (Model 5610)
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56k Internal FAX Modem (Model 5610))
+ pci:v000012B9d00001008sv000012B9sd000000D3*
+- ID_MODEL_FROM_DATABASE=USR 56K Internal V92 FAX Modem (Model 5610)
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56K Internal V92 FAX Modem (Model 5610))
+ pci:v000012B9d00001008sv000012B9sd0000BABA*
+- ID_MODEL_FROM_DATABASE=USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk]
++ ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 (USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk])
+ pci:v000012BA*
+  ID_VENDOR_FROM_DATABASE=BittWare, Inc.
+@@ -38586,7 +38586,7 @@ pci:v000012BEd00003042*
+  ID_MODEL_FROM_DATABASE=AN3042Q CO-MEM Lite
+ pci:v000012BEd00003042sv000012BEsd00003042*
+- ID_MODEL_FROM_DATABASE=Anchor Chips Lite Evaluation Board
++ ID_MODEL_FROM_DATABASE=AN3042Q CO-MEM Lite (Anchor Chips Lite Evaluation Board)
+ pci:v000012BF*
+  ID_VENDOR_FROM_DATABASE=Fujifilm Microdevices
+@@ -38781,58 +38781,58 @@ pci:v000012D2d00000018*
+  ID_MODEL_FROM_DATABASE=Riva128
+ pci:v000012D2d00000018sv00001048sd00000C10*
+- ID_MODEL_FROM_DATABASE=VICTORY Erazor
++ ID_MODEL_FROM_DATABASE=Riva128 (VICTORY Erazor)
+ pci:v000012D2d00000018sv0000107Bsd00008030*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128)
+ pci:v000012D2d00000018sv00001092sd00000350*
+- ID_MODEL_FROM_DATABASE=Viper V330
++ ID_MODEL_FROM_DATABASE=Riva128 (Viper V330)
+ pci:v000012D2d00000018sv00001092sd00001092*
+- ID_MODEL_FROM_DATABASE=Viper V330
++ ID_MODEL_FROM_DATABASE=Riva128 (Viper V330)
+ pci:v000012D2d00000018sv000010B4sd00001B1B*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128)
+ pci:v000012D2d00000018sv000010B4sd00001B1D*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128)
+ pci:v000012D2d00000018sv000010B4sd00001B1E*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128, PAL TV-Out
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128, PAL TV-Out)
+ pci:v000012D2d00000018sv000010B4sd00001B20*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128 Sapphire
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128 Sapphire)
+ pci:v000012D2d00000018sv000010B4sd00001B21*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128)
+ pci:v000012D2d00000018sv000010B4sd00001B22*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP, NTSC TV-Out
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128 AGP, NTSC TV-Out)
+ pci:v000012D2d00000018sv000010B4sd00001B23*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP, PAL TV-Out
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128 AGP, PAL TV-Out)
+ pci:v000012D2d00000018sv000010B4sd00001B27*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128 DVD
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128 DVD)
+ pci:v000012D2d00000018sv000010B4sd00001B88*
+- ID_MODEL_FROM_DATABASE=MVP Pro 128
++ ID_MODEL_FROM_DATABASE=Riva128 (MVP Pro 128)
+ pci:v000012D2d00000018sv000010B4sd0000222A*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128 AGP)
+ pci:v000012D2d00000018sv000010B4sd00002230*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128)
+ pci:v000012D2d00000018sv000010B4sd00002232*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128)
+ pci:v000012D2d00000018sv000010B4sd00002235*
+- ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP
++ ID_MODEL_FROM_DATABASE=Riva128 (STB Velocity 128 AGP)
+ pci:v000012D2d00000018sv00002A15sd000054A3*
+- ID_MODEL_FROM_DATABASE=3DVision-SAGP / 3DexPlorer 3000
++ ID_MODEL_FROM_DATABASE=Riva128 (3DVision-SAGP / 3DexPlorer 3000)
+ pci:v000012D2d00000019*
+  ID_MODEL_FROM_DATABASE=Riva128ZX
+@@ -38916,7 +38916,7 @@ pci:v000012D8d0000E110*
+  ID_MODEL_FROM_DATABASE=PI7C9X110 PCI Express to PCI bridge
+ pci:v000012D8d0000E110sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11 CompactPCI Bridge
++ ID_MODEL_FROM_DATABASE=PI7C9X110 PCI Express to PCI bridge (CC11/CL11 CompactPCI Bridge)
+ pci:v000012D8d0000E111*
+  ID_MODEL_FROM_DATABASE=PI7C9X111SL PCIe-to-PCI Reversible Bridge
+@@ -38940,10 +38940,10 @@ pci:v000012D9d00001078*
+  ID_MODEL_FROM_DATABASE=Prosody X class e1000 device
+ pci:v000012D9d00001078sv000012D9sd0000000D*
+- ID_MODEL_FROM_DATABASE=Prosody X PCI
++ ID_MODEL_FROM_DATABASE=Prosody X class e1000 device (Prosody X PCI)
+ pci:v000012D9d00001078sv000012D9sd0000000E*
+- ID_MODEL_FROM_DATABASE=Prosody X cPCI
++ ID_MODEL_FROM_DATABASE=Prosody X class e1000 device (Prosody X cPCI)
+ pci:v000012DA*
+  ID_VENDOR_FROM_DATABASE=True Time Inc.
+@@ -39015,67 +39015,67 @@ pci:v000012EBd00000001*
+  ID_MODEL_FROM_DATABASE=Vortex 1
+ pci:v000012EBd00000001sv0000104Dsd00008036*
+- ID_MODEL_FROM_DATABASE=AU8820 Vortex Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 1 (AU8820 Vortex Digital Audio Processor)
+ pci:v000012EBd00000001sv00001092sd00002000*
+- ID_MODEL_FROM_DATABASE=Sonic Impact A3D
++ ID_MODEL_FROM_DATABASE=Vortex 1 (Sonic Impact A3D)
+ pci:v000012EBd00000001sv00001092sd00002100*
+- ID_MODEL_FROM_DATABASE=Sonic Impact A3D
++ ID_MODEL_FROM_DATABASE=Vortex 1 (Sonic Impact A3D)
+ pci:v000012EBd00000001sv00001092sd00002110*
+- ID_MODEL_FROM_DATABASE=Sonic Impact A3D
++ ID_MODEL_FROM_DATABASE=Vortex 1 (Sonic Impact A3D)
+ pci:v000012EBd00000001sv00001092sd00002200*
+- ID_MODEL_FROM_DATABASE=Sonic Impact A3D
++ ID_MODEL_FROM_DATABASE=Vortex 1 (Sonic Impact A3D)
+ pci:v000012EBd00000001sv0000122Dsd00001002*
+- ID_MODEL_FROM_DATABASE=AU8820 Vortex Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 1 (AU8820 Vortex Digital Audio Processor)
+ pci:v000012EBd00000001sv000012EBsd00000001*
+- ID_MODEL_FROM_DATABASE=AU8820 Vortex Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 1 (AU8820 Vortex Digital Audio Processor)
+ pci:v000012EBd00000001sv00005053sd00003355*
+- ID_MODEL_FROM_DATABASE=Montego
++ ID_MODEL_FROM_DATABASE=Vortex 1 (Montego)
+ pci:v000012EBd00000001sv000050B2sd00001111*
+- ID_MODEL_FROM_DATABASE=XLerate
++ ID_MODEL_FROM_DATABASE=Vortex 1 (XLerate)
+ pci:v000012EBd00000002*
+  ID_MODEL_FROM_DATABASE=Vortex 2
+ pci:v000012EBd00000002sv0000104Dsd00008049*
+- ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 2 (AU8830 Vortex 3D Digital Audio Processor)
+ pci:v000012EBd00000002sv0000104Dsd0000807B*
+- ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 2 (AU8830 Vortex 3D Digital Audio Processor)
+ pci:v000012EBd00000002sv00001092sd00003000*
+- ID_MODEL_FROM_DATABASE=Monster Sound II
++ ID_MODEL_FROM_DATABASE=Vortex 2 (Monster Sound II)
+ pci:v000012EBd00000002sv00001092sd00003001*
+- ID_MODEL_FROM_DATABASE=Monster Sound II
++ ID_MODEL_FROM_DATABASE=Vortex 2 (Monster Sound II)
+ pci:v000012EBd00000002sv00001092sd00003002*
+- ID_MODEL_FROM_DATABASE=Monster Sound II
++ ID_MODEL_FROM_DATABASE=Vortex 2 (Monster Sound II)
+ pci:v000012EBd00000002sv00001092sd00003003*
+- ID_MODEL_FROM_DATABASE=Monster Sound II
++ ID_MODEL_FROM_DATABASE=Vortex 2 (Monster Sound II)
+ pci:v000012EBd00000002sv00001092sd00003004*
+- ID_MODEL_FROM_DATABASE=Monster Sound II
++ ID_MODEL_FROM_DATABASE=Vortex 2 (Monster Sound II)
+ pci:v000012EBd00000002sv000012EBsd00000002*
+- ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 2 (AU8830 Vortex 3D Digital Audio Processor)
+ pci:v000012EBd00000002sv000012EBsd00000088*
+- ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 2 (AU8830 Vortex 3D Digital Audio Processor)
+ pci:v000012EBd00000002sv0000144Dsd00003510*
+- ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor
++ ID_MODEL_FROM_DATABASE=Vortex 2 (AU8830 Vortex 3D Digital Audio Processor)
+ pci:v000012EBd00000002sv00005053sd00003356*
+- ID_MODEL_FROM_DATABASE=Montego II
++ ID_MODEL_FROM_DATABASE=Vortex 2 (Montego II)
+ pci:v000012EBd00000003*
+  ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor
+@@ -39465,16 +39465,16 @@ pci:v00001317d00000985*
+  ID_MODEL_FROM_DATABASE=NC100 Network Everywhere Fast Ethernet 10/100
+ pci:v00001317d00000985sv00001734sd0000100C*
+- ID_MODEL_FROM_DATABASE=Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter
++ ID_MODEL_FROM_DATABASE=NC100 Network Everywhere Fast Ethernet 10/100 (Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter)
+ pci:v00001317d00001985*
+  ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet
+ pci:v00001317d00001985sv00001385sd0000511A*
+- ID_MODEL_FROM_DATABASE=FA511
++ ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet (FA511)
+ pci:v00001317d00001985sv00001395sd00002103*
+- ID_MODEL_FROM_DATABASE=CB100-EZ (4-LED version)
++ ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet (CB100-EZ (4-LED version))
+ pci:v00001317d00002850*
+  ID_MODEL_FROM_DATABASE=HSP MicroModem 56
+@@ -39486,10 +39486,10 @@ pci:v00001317d00008201*
+  ID_MODEL_FROM_DATABASE=ADM8211 802.11b Wireless Interface
+ pci:v00001317d00008201sv000010B8sd00002635*
+- ID_MODEL_FROM_DATABASE=SMC2635W v1 802.11b Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ADM8211 802.11b Wireless Interface (SMC2635W v1 802.11b Wireless Cardbus Adapter)
+ pci:v00001317d00008201sv00001317sd00008201*
+- ID_MODEL_FROM_DATABASE=SMC2635W v2 802.11b Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=ADM8211 802.11b Wireless Interface (SMC2635W v2 802.11b Wireless Cardbus Adapter)
+ pci:v00001317d00008211*
+  ID_MODEL_FROM_DATABASE=ADM8211 802.11b Wireless Interface
+@@ -39510,13 +39510,13 @@ pci:v00001319d00000801*
+  ID_MODEL_FROM_DATABASE=Xwave QS3000A [FM801]
+ pci:v00001319d00000801sv00001319sd00001319*
+- ID_MODEL_FROM_DATABASE=FM801 PCI Audio
++ ID_MODEL_FROM_DATABASE=Xwave QS3000A [FM801] (FM801 PCI Audio)
+ pci:v00001319d00000802*
+  ID_MODEL_FROM_DATABASE=Xwave QS3000A [FM801 game port]
+ pci:v00001319d00000802sv00001319sd00001319*
+- ID_MODEL_FROM_DATABASE=FM801 PCI Joystick
++ ID_MODEL_FROM_DATABASE=Xwave QS3000A [FM801 game port] (FM801 PCI Joystick)
+ pci:v00001319d00001000*
+  ID_MODEL_FROM_DATABASE=FM801 PCI Audio
+@@ -39618,7 +39618,7 @@ pci:v0000131Fd00002030*
+  ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16550
+ pci:v0000131Fd00002030sv0000131Fsd00002030*
+- ID_MODEL_FROM_DATABASE=PCI Serial Card
++ ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16550 (PCI Serial Card)
+ pci:v0000131Fd00002031*
+  ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16650
+@@ -39834,7 +39834,7 @@ pci:v0000134Dd00007890*
+  ID_MODEL_FROM_DATABASE=HSP MicroModem 56
+ pci:v0000134Dd00007890sv0000134Dsd00000001*
+- ID_MODEL_FROM_DATABASE=PCT789 adapter
++ ID_MODEL_FROM_DATABASE=HSP MicroModem 56 (PCT789 adapter)
+ pci:v0000134Dd00007891*
+  ID_MODEL_FROM_DATABASE=HSP MicroModem 56
+@@ -40119,7 +40119,7 @@ pci:v00001371d0000434E*
+  ID_MODEL_FROM_DATABASE=GigaCard Network Adapter
+ pci:v00001371d0000434Esv00001371sd0000434E*
+- ID_MODEL_FROM_DATABASE=N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)
++ ID_MODEL_FROM_DATABASE=GigaCard Network Adapter (N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L))
+ pci:v00001373*
+  ID_VENDOR_FROM_DATABASE=Silicon Vision Inc
+@@ -40515,10 +40515,10 @@ pci:v00001394d00000001*
+  ID_MODEL_FROM_DATABASE=LXT1001 Gigabit Ethernet
+ pci:v00001394d00000001sv00001186sd00004800*
+- ID_MODEL_FROM_DATABASE=DGE-500SX
++ ID_MODEL_FROM_DATABASE=LXT1001 Gigabit Ethernet (DGE-500SX)
+ pci:v00001394d00000001sv00001394sd00000001*
+- ID_MODEL_FROM_DATABASE=NetCelerator Adapter
++ ID_MODEL_FROM_DATABASE=LXT1001 Gigabit Ethernet (NetCelerator Adapter)
+ pci:v00001395*
+  ID_VENDOR_FROM_DATABASE=Ambicom Inc
+@@ -40533,40 +40533,40 @@ pci:v00001397d000008B4*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S]
+ pci:v00001397d000008B4sv00001397sd0000B520*
+- ID_MODEL_FROM_DATABASE=HFC-4S [IOB4ST]
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [IOB4ST])
+ pci:v00001397d000008B4sv00001397sd0000B540*
+- ID_MODEL_FROM_DATABASE=HFC-4S [Swyx 4xS0 SX2 QuadBri]
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Swyx 4xS0 SX2 QuadBri])
+ pci:v00001397d000008B4sv00001397sd0000B550*
+- ID_MODEL_FROM_DATABASE=HFC-4S [Junghanns quadBRI]
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns quadBRI])
+ pci:v00001397d000008B4sv00001397sd0000B556*
+- ID_MODEL_FROM_DATABASE=HFC-4S [Junghanns DuoDBRI]
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns DuoDBRI])
+ pci:v00001397d000008B4sv00001397sd0000E888*
+- ID_MODEL_FROM_DATABASE=HFC-4S [OpenVox B200P / B400P]
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [OpenVox B200P / B400P])
+ pci:v00001397d000016B8*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S]
+ pci:v00001397d000016B8sv00001397sd0000B562*
+- ID_MODEL_FROM_DATABASE=HFC-8S [IOB8ST]
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [IOB8ST])
+ pci:v00001397d00002BD0*
+  ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI]
+ pci:v00001397d00002BD0sv00000675sd00001704*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C)
++ ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI] (ISDN Adapter (PCI Bus, D, C))
+ pci:v00001397d00002BD0sv00000675sd00001708*
+- ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C, ACPI)
++ ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI] (ISDN Adapter (PCI Bus, D, C, ACPI))
+ pci:v00001397d00002BD0sv00001397sd00002BD0*
+- ID_MODEL_FROM_DATABASE=ISDN Board
++ ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI] (ISDN Board)
+ pci:v00001397d00002BD0sv0000E4BFsd00001000*
+- ID_MODEL_FROM_DATABASE=CI1-1-Harp
++ ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI] (CI1-1-Harp)
+ pci:v00001397d000030B1*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1]
+@@ -40665,46 +40665,46 @@ pci:v000013A3d0000002F*
+  ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor
+ pci:v000013A3d0000002Fsv000013A3sd00001600*
+- ID_MODEL_FROM_DATABASE=DR1600 Acceleration Card
++ ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor (DR1600 Acceleration Card)
+ pci:v000013A3d0000002Fsv000013A3sd00001605*
+- ID_MODEL_FROM_DATABASE=DR1605 Acceleration Card
++ ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor (DR1605 Acceleration Card)
+ pci:v000013A3d0000002Fsv000013A3sd00001610*
+- ID_MODEL_FROM_DATABASE=DR1610 Acceleration Card
++ ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor (DR1610 Acceleration Card)
+ pci:v000013A3d0000002Fsv000013A3sd00001615*
+- ID_MODEL_FROM_DATABASE=DR1615 Acceleration Card
++ ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor (DR1615 Acceleration Card)
+ pci:v000013A3d0000002Fsv000013A3sd00001620*
+- ID_MODEL_FROM_DATABASE=DR1620 Acceleration Card
++ ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor (DR1620 Acceleration Card)
+ pci:v000013A3d0000002Fsv000013A3sd00001625*
+- ID_MODEL_FROM_DATABASE=DR1625 Acceleration Card
++ ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor (DR1625 Acceleration Card)
+ pci:v000013A3d00000033*
+  ID_MODEL_FROM_DATABASE=8201 Acceleration Processor
+ pci:v000013A3d00000033sv000013A3sd00000036*
+- ID_MODEL_FROM_DATABASE=DX1710 Acceleration Card
++ ID_MODEL_FROM_DATABASE=8201 Acceleration Processor (DX1710 Acceleration Card)
+ pci:v000013A3d00000034*
+  ID_MODEL_FROM_DATABASE=8202 Acceleration Processor
+ pci:v000013A3d00000034sv000013A3sd00000036*
+- ID_MODEL_FROM_DATABASE=DX1720 Acceleration Card
++ ID_MODEL_FROM_DATABASE=8202 Acceleration Processor (DX1720 Acceleration Card)
+ pci:v000013A3d00000035*
+  ID_MODEL_FROM_DATABASE=8203 Acceleration Processor
+ pci:v000013A3d00000035sv000013A3sd00000036*
+- ID_MODEL_FROM_DATABASE=DX1730 Acceleration Card
++ ID_MODEL_FROM_DATABASE=8203 Acceleration Processor (DX1730 Acceleration Card)
+ pci:v000013A3d00000037*
+  ID_MODEL_FROM_DATABASE=8204 Acceleration Processor
+ pci:v000013A3d00000037sv000013A3sd00000036*
+- ID_MODEL_FROM_DATABASE=DX1740 Acceleration Card
++ ID_MODEL_FROM_DATABASE=8204 Acceleration Processor (DX1740 Acceleration Card)
+ pci:v000013A4*
+  ID_VENDOR_FROM_DATABASE=Rascom Inc
+@@ -41067,7 +41067,7 @@ pci:v000013F0d00000200*
+  ID_MODEL_FROM_DATABASE=IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY
+ pci:v000013F0d00000200sv00001043sd00008213*
+- ID_MODEL_FROM_DATABASE=NX1001
++ ID_MODEL_FROM_DATABASE=IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY (NX1001)
+ pci:v000013F0d00000201*
+  ID_MODEL_FROM_DATABASE=ST201 Sundance Ethernet
+@@ -41079,7 +41079,7 @@ pci:v000013F0d00001023*
+  ID_MODEL_FROM_DATABASE=IP1000 Family Gigabit Ethernet
+ pci:v000013F0d00001023sv00001043sd00008180*
+- ID_MODEL_FROM_DATABASE=NX1101
++ ID_MODEL_FROM_DATABASE=IP1000 Family Gigabit Ethernet (NX1101)
+ pci:v000013F1*
+  ID_VENDOR_FROM_DATABASE=Oce' - Technologies B.V.
+@@ -41109,76 +41109,76 @@ pci:v000013F6d00000100*
+  ID_MODEL_FROM_DATABASE=CM8338A
+ pci:v000013F6d00000100sv000013F6sd0000FFFF*
+- ID_MODEL_FROM_DATABASE=CMI8338/C3DX PCI Audio Device
++ ID_MODEL_FROM_DATABASE=CM8338A (CMI8338/C3DX PCI Audio Device)
+ pci:v000013F6d00000101*
+  ID_MODEL_FROM_DATABASE=CM8338B
+ pci:v000013F6d00000101sv000013F6sd00000101*
+- ID_MODEL_FROM_DATABASE=CMI8338-031 PCI Audio Device
++ ID_MODEL_FROM_DATABASE=CM8338B (CMI8338-031 PCI Audio Device)
+ pci:v000013F6d00000111*
+  ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio
+ pci:v000013F6d00000111sv00001019sd00000970*
+- ID_MODEL_FROM_DATABASE=P6STP-FL motherboard
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (P6STP-FL motherboard)
+ pci:v000013F6d00000111sv00001043sd00008035*
+- ID_MODEL_FROM_DATABASE=CUSI-FX motherboard
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (CUSI-FX motherboard)
+ pci:v000013F6d00000111sv00001043sd00008077*
+- ID_MODEL_FROM_DATABASE=CMI8738 6-channel audio controller
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (CMI8738 6-channel audio controller)
+ pci:v000013F6d00000111sv00001043sd000080E2*
+- ID_MODEL_FROM_DATABASE=CMI8738 6ch-MX
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (CMI8738 6ch-MX)
+ pci:v000013F6d00000111sv000013F6sd00000111*
+- ID_MODEL_FROM_DATABASE=CMI8738/C3DX PCI Audio Device
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (CMI8738/C3DX PCI Audio Device)
+ pci:v000013F6d00000111sv000013F6sd00009761*
+- ID_MODEL_FROM_DATABASE=Theatron Agrippa
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (Theatron Agrippa)
+ pci:v000013F6d00000111sv0000153Bsd00001144*
+- ID_MODEL_FROM_DATABASE=Aureon 5.1
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (Aureon 5.1)
+ pci:v000013F6d00000111sv0000153Bsd00001170*
+- ID_MODEL_FROM_DATABASE=Aureon 7.1
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (Aureon 7.1)
+ pci:v000013F6d00000111sv00001681sd0000A000*
+- ID_MODEL_FROM_DATABASE=Gamesurround MUSE XL
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (Gamesurround MUSE XL)
+ pci:v000013F6d00000111sv000017ABsd00000604*
+- ID_MODEL_FROM_DATABASE=PSC604 Dynamic Edge
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (PSC604 Dynamic Edge)
+ pci:v000013F6d00000111sv000017ABsd00000605*
+- ID_MODEL_FROM_DATABASE=PSC605 Sonic Edge
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (PSC605 Sonic Edge)
+ pci:v000013F6d00000111sv000017ABsd00007777*
+- ID_MODEL_FROM_DATABASE=PSC605 Sonic Edge
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (PSC605 Sonic Edge)
+ pci:v000013F6d00000111sv0000270Fsd00001103*
+- ID_MODEL_FROM_DATABASE=CT-7NJS Ultra motherboard
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (CT-7NJS Ultra motherboard)
+ pci:v000013F6d00000111sv0000270Fsd0000F462*
+- ID_MODEL_FROM_DATABASE=7NJL1 motherboard
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (7NJL1 motherboard)
+ pci:v000013F6d00000111sv0000584Dsd00003731*
+- ID_MODEL_FROM_DATABASE=Digital X-Mystique
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (Digital X-Mystique)
+ pci:v000013F6d00000111sv0000584Dsd00003741*
+- ID_MODEL_FROM_DATABASE=X-Plosion 7.1
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (X-Plosion 7.1)
+ pci:v000013F6d00000111sv0000584Dsd00003751*
+- ID_MODEL_FROM_DATABASE=X-Raider 7.1
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (X-Raider 7.1)
+ pci:v000013F6d00000111sv0000584Dsd00003761*
+- ID_MODEL_FROM_DATABASE=X-Mystique 7.1 LP
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (X-Mystique 7.1 LP)
+ pci:v000013F6d00000111sv0000584Dsd00003771*
+- ID_MODEL_FROM_DATABASE=X-Mystique 7.1 LP Value
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (X-Mystique 7.1 LP Value)
+ pci:v000013F6d00000111sv00007284sd00008384*
+- ID_MODEL_FROM_DATABASE=Striker 7.1
++ ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio (Striker 7.1)
+ pci:v000013F6d00000211*
+  ID_MODEL_FROM_DATABASE=CM8738
+@@ -41187,85 +41187,85 @@ pci:v000013F6d00005011*
+  ID_MODEL_FROM_DATABASE=CM8888 [Oxygen Express]
+ pci:v000013F6d00005011sv000013F6sd00005011*
+- ID_MODEL_FROM_DATABASE=HDA Controller
++ ID_MODEL_FROM_DATABASE=CM8888 [Oxygen Express] (HDA Controller)
+ pci:v000013F6d00008788*
+  ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio]
+ pci:v000013F6d00008788sv00001043sd00008269*
+- ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar D2)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 200 (Xonar D2))
+ pci:v000013F6d00008788sv00001043sd00008275*
+- ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar DX)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar DX))
+ pci:v000013F6d00008788sv00001043sd000082B7*
+- ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar D2X)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 200 (Xonar D2X))
+ pci:v000013F6d00008788sv00001043sd00008314*
+- ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar HDAV1.3)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 200 (Xonar HDAV1.3))
+ pci:v000013F6d00008788sv00001043sd00008327*
+- ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar DX)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar DX))
+ pci:v000013F6d00008788sv00001043sd0000834F*
+- ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar D1)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar D1))
+ pci:v000013F6d00008788sv00001043sd0000835C*
+- ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar Essence STX)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar Essence STX))
+ pci:v000013F6d00008788sv00001043sd0000835D*
+- ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar ST)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar ST))
+ pci:v000013F6d00008788sv00001043sd0000835E*
+- ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar HDAV1.3 Slim)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 200 (Xonar HDAV1.3 Slim))
+ pci:v000013F6d00008788sv00001043sd0000838E*
+- ID_MODEL_FROM_DATABASE=Virtuoso 66 (Xonar DS)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 66 (Xonar DS))
+ pci:v000013F6d00008788sv00001043sd00008428*
+- ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar Xense)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Virtuoso 100 (Xonar Xense))
+ pci:v000013F6d00008788sv00001043sd00008467*
+- ID_MODEL_FROM_DATABASE=CMI8786 (Xonar DG)
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (CMI8786 (Xonar DG))
+ pci:v000013F6d00008788sv000013F6sd00008782*
+- ID_MODEL_FROM_DATABASE=PCI 2.0 HD Audio
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (PCI 2.0 HD Audio)
+ pci:v000013F6d00008788sv000013F6sd0000FFFF*
+- ID_MODEL_FROM_DATABASE=CMI8787-HG2PCI
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (CMI8787-HG2PCI)
+ pci:v000013F6d00008788sv000014C3sd00001710*
+- ID_MODEL_FROM_DATABASE=HiFier Fantasia
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (HiFier Fantasia)
+ pci:v000013F6d00008788sv000014C3sd00001711*
+- ID_MODEL_FROM_DATABASE=HiFier Serenade
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (HiFier Serenade)
+ pci:v000013F6d00008788sv000014C3sd00001713*
+- ID_MODEL_FROM_DATABASE=HiFier Serenade III
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (HiFier Serenade III)
+ pci:v000013F6d00008788sv00001A58sd00000910*
+- ID_MODEL_FROM_DATABASE=Barracuda AC-1
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (Barracuda AC-1)
+ pci:v000013F6d00008788sv0000415Asd00005431*
+- ID_MODEL_FROM_DATABASE=X-Meridian 7.1
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (X-Meridian 7.1)
+ pci:v000013F6d00008788sv00005431sd0000017A*
+- ID_MODEL_FROM_DATABASE=X-Meridian 7.1 2G
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (X-Meridian 7.1 2G)
+ pci:v000013F6d00008788sv0000584Dsd00003781*
+- ID_MODEL_FROM_DATABASE=HDA X-Purity 7.1 Platinum
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (HDA X-Purity 7.1 Platinum)
+ pci:v000013F6d00008788sv00007284sd00009761*
+- ID_MODEL_FROM_DATABASE=CLARO
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (CLARO)
+ pci:v000013F6d00008788sv00007284sd00009781*
+- ID_MODEL_FROM_DATABASE=CLARO halo
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (CLARO halo)
+ pci:v000013F6d00008788sv00007284sd00009783*
+- ID_MODEL_FROM_DATABASE=eCLARO
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (eCLARO)
+ pci:v000013F6d00008788sv00007284sd00009787*
+- ID_MODEL_FROM_DATABASE=CLARO II
++ ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] (CLARO II)
+ pci:v000013F7*
+  ID_VENDOR_FROM_DATABASE=Wildfire Communications
+@@ -41298,13 +41298,13 @@ pci:v000013FEd00001600*
+  ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 0)
+ pci:v000013FEd00001600sv00001601sd00000002*
+- ID_MODEL_FROM_DATABASE=PCI-1601 2-port unisolated RS-422/485
++ ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 0) (PCI-1601 2-port unisolated RS-422/485)
+ pci:v000013FEd00001600sv00001602sd00000002*
+- ID_MODEL_FROM_DATABASE=PCI-1602 2-port isolated RS-422/485
++ ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 0) (PCI-1602 2-port isolated RS-422/485)
+ pci:v000013FEd00001600sv00001612sd00000004*
+- ID_MODEL_FROM_DATABASE=PCI-1612 4-port RS-232/422/485
++ ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 0) (PCI-1612 4-port RS-232/422/485)
+ pci:v000013FEd00001603*
+  ID_MODEL_FROM_DATABASE=PCI-1603 2-port isolated RS-232/current loop
+@@ -41316,13 +41316,13 @@ pci:v000013FEd000016FF*
+  ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)
+ pci:v000013FEd000016FFsv00001601sd00000000*
+- ID_MODEL_FROM_DATABASE=PCI-1601 2-port unisolated RS-422/485 PCI communications card
++ ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) (PCI-1601 2-port unisolated RS-422/485 PCI communications card)
+ pci:v000013FEd000016FFsv00001602sd00000000*
+- ID_MODEL_FROM_DATABASE=PCI-1602 2-port isolated RS-422/485
++ ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) (PCI-1602 2-port isolated RS-422/485)
+ pci:v000013FEd000016FFsv00001612sd00000000*
+- ID_MODEL_FROM_DATABASE=PCI-1612 4-port RS-232/422/485
++ ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) (PCI-1612 4-port RS-232/422/485)
+ pci:v000013FEd00001711*
+  ID_MODEL_FROM_DATABASE=PCI-1711 16-channel data acquisition card 12-bit, 100kS/s
+@@ -41676,37 +41676,37 @@ pci:v00001409d00007168*
+  ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART)
+ pci:v00001409d00007168sv00001409sd00000002*
+- ID_MODEL_FROM_DATABASE=SER4036A3V (2x RS232 port)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4036A3V (2x RS232 port))
+ pci:v00001409d00007168sv00001409sd00004027*
+- ID_MODEL_FROM_DATABASE=SER4027A (1x RS232 port)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4027A (1x RS232 port))
+ pci:v00001409d00007168sv00001409sd00004037*
+- ID_MODEL_FROM_DATABASE=SER4037A (2x RS232 port)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4037A (2x RS232 port))
+ pci:v00001409d00007168sv00001409sd00004056*
+- ID_MODEL_FROM_DATABASE=SER4056A (4x RS232)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4056A (4x RS232))
+ pci:v00001409d00007168sv00001409sd00005027*
+- ID_MODEL_FROM_DATABASE=SER4027D
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4027D)
+ pci:v00001409d00007168sv00001409sd00005037*
+- ID_MODEL_FROM_DATABASE=SER4037D (2x RS232 port)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4037D (2x RS232 port))
+ pci:v00001409d00007168sv00001409sd00005066*
+- ID_MODEL_FROM_DATABASE=SER4066R (8x RS232)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4066R (8x RS232))
+ pci:v00001409d00007168sv00001409sd00006056*
+- ID_MODEL_FROM_DATABASE=SER4056D (4x RS232 port)
++ ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) (SER4056D (4x RS232 port))
+ pci:v00001409d00007268*
+  ID_MODEL_FROM_DATABASE=SUN1888 (Dual IEEE1284 parallel port)
+ pci:v00001409d00007268sv00001409sd00000103*
+- ID_MODEL_FROM_DATABASE=PAR4008A
++ ID_MODEL_FROM_DATABASE=SUN1888 (Dual IEEE1284 parallel port) (PAR4008A)
+ pci:v00001409d00007268sv00001409sd00000104*
+- ID_MODEL_FROM_DATABASE=PAR4018A
++ ID_MODEL_FROM_DATABASE=SUN1888 (Dual IEEE1284 parallel port) (PAR4018A)
+ pci:v0000140A*
+  ID_VENDOR_FROM_DATABASE=DSP Research Inc
+@@ -41739,106 +41739,106 @@ pci:v00001412d00001712*
+  ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller
+ pci:v00001412d00001712sv00001412sd00001712*
+- ID_MODEL_FROM_DATABASE=Hoontech ST Audio DSP 24
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (Hoontech ST Audio DSP 24)
+ pci:v00001412d00001712sv00001412sd00003632*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta Audiophile 192
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta Audiophile 192)
+ pci:v00001412d00001712sv00001412sd0000D630*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta 1010
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta 1010)
+ pci:v00001412d00001712sv00001412sd0000D631*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta DiO
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta DiO)
+ pci:v00001412d00001712sv00001412sd0000D632*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta 66
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta 66)
+ pci:v00001412d00001712sv00001412sd0000D633*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta 44
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta 44)
+ pci:v00001412d00001712sv00001412sd0000D634*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta Audiophile 2496
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta Audiophile 2496)
+ pci:v00001412d00001712sv00001412sd0000D635*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta TDIF
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta TDIF)
+ pci:v00001412d00001712sv00001412sd0000D637*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta RBUS
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta RBUS)
+ pci:v00001412d00001712sv00001412sd0000D638*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta 410
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta 410)
+ pci:v00001412d00001712sv00001412sd0000D63B*
+- ID_MODEL_FROM_DATABASE=M-Audio Delta 1010LT
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (M-Audio Delta 1010LT)
+ pci:v00001412d00001712sv00001412sd0000D63C*
+- ID_MODEL_FROM_DATABASE=Digigram VX442
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (Digigram VX442)
+ pci:v00001412d00001712sv00001416sd00001712*
+- ID_MODEL_FROM_DATABASE=Hoontech ST Audio DSP 24 Media 7.1
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (Hoontech ST Audio DSP 24 Media 7.1)
+ pci:v00001412d00001712sv0000153Bsd00001115*
+- ID_MODEL_FROM_DATABASE=EWS88 MT
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (EWS88 MT)
+ pci:v00001412d00001712sv0000153Bsd00001125*
+- ID_MODEL_FROM_DATABASE=EWS88 MT (Master)
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (EWS88 MT (Master))
+ pci:v00001412d00001712sv0000153Bsd0000112B*
+- ID_MODEL_FROM_DATABASE=EWS88 D
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (EWS88 D)
+ pci:v00001412d00001712sv0000153Bsd0000112C*
+- ID_MODEL_FROM_DATABASE=EWS88 D (Master)
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (EWS88 D (Master))
+ pci:v00001412d00001712sv0000153Bsd00001130*
+- ID_MODEL_FROM_DATABASE=EWX 24/96
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (EWX 24/96)
+ pci:v00001412d00001712sv0000153Bsd00001138*
+- ID_MODEL_FROM_DATABASE=DMX 6fire 24/96
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (DMX 6fire 24/96)
+ pci:v00001412d00001712sv0000153Bsd00001151*
+- ID_MODEL_FROM_DATABASE=PHASE88
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (PHASE88)
+ pci:v00001412d00001712sv000016CEsd00001040*
+- ID_MODEL_FROM_DATABASE=Edirol DA-2496
++ ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller (Edirol DA-2496)
+ pci:v00001412d00001724*
+  ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller
+ pci:v00001412d00001724sv000010B0sd00000200*
+- ID_MODEL_FROM_DATABASE=Hollywood@Home 7.1
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (Hollywood@Home 7.1)
+ pci:v00001412d00001724sv00001412sd00001724*
+- ID_MODEL_FROM_DATABASE=Albatron PX865PE 7.1
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (Albatron PX865PE 7.1)
+ pci:v00001412d00001724sv00001412sd00003630*
+- ID_MODEL_FROM_DATABASE=M-Audio Revolution 7.1
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (M-Audio Revolution 7.1)
+ pci:v00001412d00001724sv00001412sd00003631*
+- ID_MODEL_FROM_DATABASE=M-Audio Revolution 5.1
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (M-Audio Revolution 5.1)
+ pci:v00001412d00001724sv0000153Bsd00001145*
+- ID_MODEL_FROM_DATABASE=Aureon 7.1 Space
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (Aureon 7.1 Space)
+ pci:v00001412d00001724sv0000153Bsd00001147*
+- ID_MODEL_FROM_DATABASE=Aureon 5.1 Sky
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (Aureon 5.1 Sky)
+ pci:v00001412d00001724sv0000153Bsd00001150*
+- ID_MODEL_FROM_DATABASE=PHASE 22
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (PHASE 22)
+ pci:v00001412d00001724sv0000153Bsd00001153*
+- ID_MODEL_FROM_DATABASE=Aureon 7.1 Universe
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (Aureon 7.1 Universe)
+ pci:v00001412d00001724sv000017ABsd00001906*
+- ID_MODEL_FROM_DATABASE=PSC 724 [Ultimate Edge]
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (PSC 724 [Ultimate Edge])
+ pci:v00001412d00001724sv0000270Fsd0000F641*
+- ID_MODEL_FROM_DATABASE=ZNF3-150
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (ZNF3-150)
+ pci:v00001412d00001724sv0000270Fsd0000F645*
+- ID_MODEL_FROM_DATABASE=ZNF3-250
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (ZNF3-250)
+ pci:v00001412d00001724sv00003130sd00004154*
+- ID_MODEL_FROM_DATABASE=MAYA 44 MKII
++ ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller (MAYA 44 MKII)
+ pci:v00001413*
+  ID_VENDOR_FROM_DATABASE=Addonics
+@@ -41904,28 +41904,28 @@ pci:v00001415d00009501*
+  ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart)
+ pci:v00001415d00009501sv000012C4sd00000201*
+- ID_MODEL_FROM_DATABASE=Titan/cPCI (2 port)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (Titan/cPCI (2 port))
+ pci:v00001415d00009501sv000012C4sd00000202*
+- ID_MODEL_FROM_DATABASE=Titan/cPCI (4 port)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (Titan/cPCI (4 port))
+ pci:v00001415d00009501sv000012C4sd00000203*
+- ID_MODEL_FROM_DATABASE=Titan/cPCI (8 port)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (Titan/cPCI (8 port))
+ pci:v00001415d00009501sv000012C4sd00000210*
+- ID_MODEL_FROM_DATABASE=Titan/104-Plus (8 port, p1-4)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (Titan/104-Plus (8 port, p1-4))
+ pci:v00001415d00009501sv0000131Fsd00002050*
+- ID_MODEL_FROM_DATABASE=CyberPro (4-port)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (CyberPro (4-port))
+ pci:v00001415d00009501sv0000131Fsd00002051*
+- ID_MODEL_FROM_DATABASE=CyberSerial 4S Plus
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (CyberSerial 4S Plus)
+ pci:v00001415d00009501sv000015EDsd00002000*
+- ID_MODEL_FROM_DATABASE=MCCR Serial p0-3 of 8
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (MCCR Serial p0-3 of 8)
+ pci:v00001415d00009501sv000015EDsd00002001*
+- ID_MODEL_FROM_DATABASE=MCCR Serial p0-3 of 16
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) (MCCR Serial p0-3 of 16)
+ pci:v00001415d00009505*
+  ID_MODEL_FROM_DATABASE=OXuPCI952 (Dual 16C950 UART)
+@@ -41940,19 +41940,19 @@ pci:v00001415d00009510*
+  ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (Disabled)
+ pci:v00001415d00009510sv000012C4sd00000200*
+- ID_MODEL_FROM_DATABASE=Titan/cPCI (Unused)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (Disabled) (Titan/cPCI (Unused))
+ pci:v00001415d00009511*
+  ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (8bit bus)
+ pci:v00001415d00009511sv000012C4sd00000211*
+- ID_MODEL_FROM_DATABASE=Titan/104-Plus (8 port, p5-8)
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) (Titan/104-Plus (8 port, p5-8))
+ pci:v00001415d00009511sv000015EDsd00002000*
+- ID_MODEL_FROM_DATABASE=MCCR Serial p4-7 of 8
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) (MCCR Serial p4-7 of 8)
+ pci:v00001415d00009511sv000015EDsd00002001*
+- ID_MODEL_FROM_DATABASE=MCCR Serial p4-15 of 16
++ ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) (MCCR Serial p4-15 of 16)
+ pci:v00001415d00009512*
+  ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (32bit bus)
+@@ -41970,10 +41970,10 @@ pci:v00001415d0000C158*
+  ID_MODEL_FROM_DATABASE=OXPCIe952 Dual 16C950 UART
+ pci:v00001415d0000C158sv0000E4BFsd0000C504*
+- ID_MODEL_FROM_DATABASE=CP4-SCAT Wireless Technologies Carrier Board
++ ID_MODEL_FROM_DATABASE=OXPCIe952 Dual 16C950 UART (CP4-SCAT Wireless Technologies Carrier Board)
+ pci:v00001415d0000C158sv0000E4BFsd0000D551*
+- ID_MODEL_FROM_DATABASE=DU1-MUSTANG Dual-Port RS-485 Interface
++ ID_MODEL_FROM_DATABASE=OXPCIe952 Dual 16C950 UART (DU1-MUSTANG Dual-Port RS-485 Interface)
+ pci:v00001415d0000C308*
+  ID_MODEL_FROM_DATABASE=EX-44016 16-port serial
+@@ -42042,7 +42042,7 @@ pci:v00001425d00000030*
+  ID_MODEL_FROM_DATABASE=T310 10GbE Single Port Adapter
+ pci:v00001425d00000030sv0000103Csd0000705E*
+- ID_MODEL_FROM_DATABASE=PCIe 10GBase-SR [AD386A]
++ ID_MODEL_FROM_DATABASE=T310 10GbE Single Port Adapter (PCIe 10GBase-SR [AD386A])
+ pci:v00001425d00000031*
+  ID_MODEL_FROM_DATABASE=T320 10GbE Dual Port Adapter
+@@ -43170,13 +43170,13 @@ pci:v0000144Dd0000A820*
+  ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X
+ pci:v0000144Dd0000A820sv00001028sd00001F95*
+- ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 400GB
++ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X (Express Flash NVMe XS1715 SSD 400GB)
+ pci:v0000144Dd0000A820sv00001028sd00001F96*
+- ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 800GB
++ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X (Express Flash NVMe XS1715 SSD 800GB)
+ pci:v0000144Dd0000A820sv00001028sd00001F97*
+- ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 1600GB
++ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X (Express Flash NVMe XS1715 SSD 1600GB)
+ pci:v0000144E*
+  ID_VENDOR_FROM_DATABASE=OLITEC
+@@ -43656,19 +43656,19 @@ pci:v000014C1d00000008*
+  ID_MODEL_FROM_DATABASE=Myri-10G Dual-Protocol NIC
+ pci:v000014C1d00000008sv000014C1sd00000008*
+- ID_MODEL_FROM_DATABASE=10G-PCIE-8A
++ ID_MODEL_FROM_DATABASE=Myri-10G Dual-Protocol NIC (10G-PCIE-8A)
+ pci:v000014C1d00000008sv000014C1sd00000009*
+- ID_MODEL_FROM_DATABASE=10G-PCIE-8A (MSI-X firmware)
++ ID_MODEL_FROM_DATABASE=Myri-10G Dual-Protocol NIC (10G-PCIE-8A (MSI-X firmware))
+ pci:v000014C1d00000008sv000014C1sd0000000A*
+- ID_MODEL_FROM_DATABASE=10G-PCIE-8B
++ ID_MODEL_FROM_DATABASE=Myri-10G Dual-Protocol NIC (10G-PCIE-8B)
+ pci:v000014C1d00008043*
+  ID_MODEL_FROM_DATABASE=Myrinet 2000 Scalable Cluster Interconnect
+ pci:v000014C1d00008043sv0000103Csd00001240*
+- ID_MODEL_FROM_DATABASE=Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM)
++ ID_MODEL_FROM_DATABASE=Myrinet 2000 Scalable Cluster Interconnect (Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM))
+ pci:v000014C2*
+  ID_VENDOR_FROM_DATABASE=DTK Computer
+@@ -43929,19 +43929,19 @@ pci:v000014E4d00001600*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express
+ pci:v000014E4d00001600sv00001028sd000001C1*
+- ID_MODEL_FROM_DATABASE=Precision 490
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express (Precision 490)
+ pci:v000014E4d00001600sv00001028sd000001C2*
+- ID_MODEL_FROM_DATABASE=Latitude D620
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express (Latitude D620)
+ pci:v000014E4d00001600sv0000103Csd00003015*
+- ID_MODEL_FROM_DATABASE=PCIe LAN on Motherboard
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express (PCIe LAN on Motherboard)
+ pci:v000014E4d00001600sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500 Onboard
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express (E4500 Onboard)
+ pci:v000014E4d00001600sv00001259sd00002705*
+- ID_MODEL_FROM_DATABASE=AT-2711FX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express (AT-2711FX)
+ pci:v000014E4d00001601*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5752M Gigabit Ethernet PCI Express
+@@ -43956,52 +43956,52 @@ pci:v000014E4d00001639*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet
+ pci:v000014E4d00001639sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 BCM5709 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet (PowerEdge R710 BCM5709 Gigabit Ethernet)
+ pci:v000014E4d00001639sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 BCM5709 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet (PowerEdge R610 BCM5709 Gigabit Ethernet)
+ pci:v000014E4d00001639sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 BCM5709 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet (PowerEdge T610 BCM5709 Gigabit Ethernet)
+ pci:v000014E4d00001639sv0000103Csd00007055*
+- ID_MODEL_FROM_DATABASE=NC382i Integrated Multi-port PCI Express Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet (NC382i Integrated Multi-port PCI Express Gigabit Server Adapter)
+ pci:v000014E4d00001639sv0000103Csd00007059*
+- ID_MODEL_FROM_DATABASE=NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet (NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter)
+ pci:v000014E4d00001639sv000010A9sd00008027*
+- ID_MODEL_FROM_DATABASE=Quad port Gigabit Ethernet Controller
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet (Quad port Gigabit Ethernet Controller)
+ pci:v000014E4d0000163A*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet
+ pci:v000014E4d0000163Asv00001028sd0000027B*
+- ID_MODEL_FROM_DATABASE=PowerEdge M805 Broadcom NetXtreme II BCM5709S
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet (PowerEdge M805 Broadcom NetXtreme II BCM5709S)
+ pci:v000014E4d0000163Asv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 BCM5709S Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet (PowerEdge M710 BCM5709S Gigabit Ethernet)
+ pci:v000014E4d0000163Asv0000103Csd0000171D*
+- ID_MODEL_FROM_DATABASE=NC382m Dual Port 1GbE Multifunction BL-c Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet (NC382m Dual Port 1GbE Multifunction BL-c Adapter)
+ pci:v000014E4d0000163Asv0000103Csd00007056*
+- ID_MODEL_FROM_DATABASE=NC382i Integrated Quad Port PCI Express Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet (NC382i Integrated Quad Port PCI Express Gigabit Server Adapter)
+ pci:v000014E4d0000163Asv00001259sd00002984*
+- ID_MODEL_FROM_DATABASE=AT-2973SX
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet (AT-2973SX)
+ pci:v000014E4d0000163B*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716 Gigabit Ethernet
+ pci:v000014E4d0000163Bsv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 BCM5716 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716 Gigabit Ethernet (PowerEdge R410 BCM5716 Gigabit Ethernet)
+ pci:v000014E4d0000163Bsv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 BCM5716 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716 Gigabit Ethernet (PowerEdge T410 BCM5716 Gigabit Ethernet)
+ pci:v000014E4d0000163Bsv00001028sd000002F1*
+- ID_MODEL_FROM_DATABASE=PowerEdge R510 BCM5716 Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716 Gigabit Ethernet (PowerEdge R510 BCM5716 Gigabit Ethernet)
+ pci:v000014E4d0000163C*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716S Gigabit Ethernet
+@@ -44028,220 +44028,220 @@ pci:v000014E4d00001644*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet
+ pci:v000014E4d00001644sv00001014sd00000277*
+- ID_MODEL_FROM_DATABASE=Broadcom Vigil B5700 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (Broadcom Vigil B5700 1000Base-T)
+ pci:v000014E4d00001644sv00001028sd000000D1*
+- ID_MODEL_FROM_DATABASE=Broadcom BCM5700
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (Broadcom BCM5700)
+ pci:v000014E4d00001644sv00001028sd00000106*
+- ID_MODEL_FROM_DATABASE=Broadcom BCM5700
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (Broadcom BCM5700)
+ pci:v000014E4d00001644sv00001028sd00000109*
+- ID_MODEL_FROM_DATABASE=Broadcom BCM5700 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (Broadcom BCM5700 1000Base-T)
+ pci:v000014E4d00001644sv00001028sd0000010A*
+- ID_MODEL_FROM_DATABASE=Broadcom BCM5700 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (Broadcom BCM5700 1000BaseTX)
+ pci:v000014E4d00001644sv000010B7sd00001000*
+- ID_MODEL_FROM_DATABASE=3C996-T 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C996-T 1000Base-T)
+ pci:v000014E4d00001644sv000010B7sd00001001*
+- ID_MODEL_FROM_DATABASE=3C996B-T 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C996B-T 1000Base-T)
+ pci:v000014E4d00001644sv000010B7sd00001002*
+- ID_MODEL_FROM_DATABASE=3C996C-T 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C996C-T 1000Base-T)
+ pci:v000014E4d00001644sv000010B7sd00001003*
+- ID_MODEL_FROM_DATABASE=3C997-T 1000Base-T Dual Port
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C997-T 1000Base-T Dual Port)
+ pci:v000014E4d00001644sv000010B7sd00001004*
+- ID_MODEL_FROM_DATABASE=3C996-SX 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C996-SX 1000Base-SX)
+ pci:v000014E4d00001644sv000010B7sd00001005*
+- ID_MODEL_FROM_DATABASE=3C997-SX 1000Base-SX Dual Port
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C997-SX 1000Base-SX Dual Port)
+ pci:v000014E4d00001644sv000010B7sd00001008*
+- ID_MODEL_FROM_DATABASE=3C942 Gigabit LOM (31X31)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (3C942 Gigabit LOM (31X31))
+ pci:v000014E4d00001644sv000014E4sd00000002*
+- ID_MODEL_FROM_DATABASE=NetXtreme 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (NetXtreme 1000Base-SX)
+ pci:v000014E4d00001644sv000014E4sd00000003*
+- ID_MODEL_FROM_DATABASE=NetXtreme 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (NetXtreme 1000Base-SX)
+ pci:v000014E4d00001644sv000014E4sd00000004*
+- ID_MODEL_FROM_DATABASE=NetXtreme 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (NetXtreme 1000Base-T)
+ pci:v000014E4d00001644sv000014E4sd00001028*
+- ID_MODEL_FROM_DATABASE=NetXtreme 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (NetXtreme 1000BaseTX)
+ pci:v000014E4d00001644sv000014E4sd00001644*
+- ID_MODEL_FROM_DATABASE=BCM5700 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet (BCM5700 1000Base-T)
+ pci:v000014E4d00001645*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet
+ pci:v000014E4d00001645sv00000E11sd0000007C*
+- ID_MODEL_FROM_DATABASE=NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T))
+ pci:v000014E4d00001645sv00000E11sd0000007D*
+- ID_MODEL_FROM_DATABASE=NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (NC6770 Gigabit Server Adapter (PCI-X, 1000-SX))
+ pci:v000014E4d00001645sv00000E11sd00000085*
+- ID_MODEL_FROM_DATABASE=NC7780 Gigabit Server Adapter (embedded, WOL)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (NC7780 Gigabit Server Adapter (embedded, WOL))
+ pci:v000014E4d00001645sv00000E11sd00000099*
+- ID_MODEL_FROM_DATABASE=NC7780 Gigabit Server Adapter (embedded, WOL)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (NC7780 Gigabit Server Adapter (embedded, WOL))
+ pci:v000014E4d00001645sv00000E11sd0000009A*
+- ID_MODEL_FROM_DATABASE=NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T))
+ pci:v000014E4d00001645sv00000E11sd000000C1*
+- ID_MODEL_FROM_DATABASE=NC6770 Gigabit Server Adapter (PCI-X, 1000-SX)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (NC6770 Gigabit Server Adapter (PCI-X, 1000-SX))
+ pci:v000014E4d00001645sv00001028sd00000121*
+- ID_MODEL_FROM_DATABASE=Broadcom BCM5701 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (Broadcom BCM5701 1000Base-T)
+ pci:v000014E4d00001645sv0000103Csd0000128A*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T (HP, OEM 3COM)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-T (HP, OEM 3COM))
+ pci:v000014E4d00001645sv0000103Csd0000128B*
+- ID_MODEL_FROM_DATABASE=1000Base-SX (PCI) [A7073A]
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (1000Base-SX (PCI) [A7073A])
+ pci:v000014E4d00001645sv0000103Csd000012A4*
+- ID_MODEL_FROM_DATABASE=Core Lan 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (Core Lan 1000Base-T)
+ pci:v000014E4d00001645sv0000103Csd000012C1*
+- ID_MODEL_FROM_DATABASE=IOX Core Lan 1000Base-T [A7109AX]
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (IOX Core Lan 1000Base-T [A7109AX])
+ pci:v000014E4d00001645sv0000103Csd00001300*
+- ID_MODEL_FROM_DATABASE=Core LAN/SCSI Combo [A6794A]
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (Core LAN/SCSI Combo [A6794A])
+ pci:v000014E4d00001645sv000010A9sd00008010*
+- ID_MODEL_FROM_DATABASE=IO9/IO10 Gigabit Ethernet (Copper)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (IO9/IO10 Gigabit Ethernet (Copper))
+ pci:v000014E4d00001645sv000010A9sd00008011*
+- ID_MODEL_FROM_DATABASE=Gigabit Ethernet (Copper)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (Gigabit Ethernet (Copper))
+ pci:v000014E4d00001645sv000010A9sd00008012*
+- ID_MODEL_FROM_DATABASE=Gigabit Ethernet (Fiber)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (Gigabit Ethernet (Fiber))
+ pci:v000014E4d00001645sv000010B7sd00001004*
+- ID_MODEL_FROM_DATABASE=3C996-SX 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (3C996-SX 1000Base-SX)
+ pci:v000014E4d00001645sv000010B7sd00001006*
+- ID_MODEL_FROM_DATABASE=3C996B-T 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (3C996B-T 1000Base-T)
+ pci:v000014E4d00001645sv000010B7sd00001007*
+- ID_MODEL_FROM_DATABASE=3C1000-T 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (3C1000-T 1000Base-T)
+ pci:v000014E4d00001645sv000010B7sd00001008*
+- ID_MODEL_FROM_DATABASE=3C940-BR01 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (3C940-BR01 1000Base-T)
+ pci:v000014E4d00001645sv000014E4sd00000001*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-T)
+ pci:v000014E4d00001645sv000014E4sd00000005*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-T)
+ pci:v000014E4d00001645sv000014E4sd00000006*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-T)
+ pci:v000014E4d00001645sv000014E4sd00000007*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-SX)
+ pci:v000014E4d00001645sv000014E4sd00000008*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-T)
+ pci:v000014E4d00001645sv000014E4sd00001645*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet
+ pci:v000014E4d00001645sv000014E4sd00008008*
+- ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet (BCM5701 1000Base-T)
+ pci:v000014E4d00001646*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5702 Gigabit Ethernet
+ pci:v000014E4d00001646sv00000E11sd000000BB*
+- ID_MODEL_FROM_DATABASE=NC7760 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702 Gigabit Ethernet (NC7760 1000BaseTX)
+ pci:v000014E4d00001646sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Broadcom BCM5702 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702 Gigabit Ethernet (Broadcom BCM5702 1000BaseTX)
+ pci:v000014E4d00001646sv000014E4sd00008009*
+- ID_MODEL_FROM_DATABASE=BCM5702 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702 Gigabit Ethernet (BCM5702 1000BaseTX)
+ pci:v000014E4d00001647*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet
+ pci:v000014E4d00001647sv00000E11sd00000099*
+- ID_MODEL_FROM_DATABASE=NC7780 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NC7780 1000BaseTX)
+ pci:v000014E4d00001647sv00000E11sd0000009A*
+- ID_MODEL_FROM_DATABASE=NC7770 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NC7770 1000BaseTX)
+ pci:v000014E4d00001647sv000010A9sd00008010*
+- ID_MODEL_FROM_DATABASE=SGI IO9 Gigabit Ethernet (Copper)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (SGI IO9 Gigabit Ethernet (Copper))
+ pci:v000014E4d00001647sv000014E4sd00000009*
+- ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (BCM5703 1000BaseTX)
+ pci:v000014E4d00001647sv000014E4sd0000000A*
+- ID_MODEL_FROM_DATABASE=BCM5703 1000BaseSX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (BCM5703 1000BaseSX)
+ pci:v000014E4d00001647sv000014E4sd0000000B*
+- ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (BCM5703 1000BaseTX)
+ pci:v000014E4d00001647sv000014E4sd00008009*
+- ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (BCM5703 1000BaseTX)
+ pci:v000014E4d00001647sv000014E4sd0000800A*
+- ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (BCM5703 1000BaseTX)
+ pci:v000014E4d00001648*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet
+ pci:v000014E4d00001648sv00000E11sd000000CF*
+- ID_MODEL_FROM_DATABASE=NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d00001648sv00000E11sd000000D0*
+- ID_MODEL_FROM_DATABASE=NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d00001648sv00000E11sd000000D1*
+- ID_MODEL_FROM_DATABASE=NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d00001648sv00001028sd0000014A*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1750
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (PowerEdge 1750)
+ pci:v000014E4d00001648sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Broadcom NetXtreme BCM5704
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (PowerEdge 6850 Broadcom NetXtreme BCM5704)
+ pci:v000014E4d00001648sv0000103Csd0000310F*
+- ID_MODEL_FROM_DATABASE=NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d00001648sv000010A9sd00008013*
+- ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (PCI-X,Copper)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (Dual Port Gigabit Ethernet (PCI-X,Copper))
+ pci:v000014E4d00001648sv000010A9sd00008018*
+- ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (A330)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (Dual Port Gigabit Ethernet (A330))
+ pci:v000014E4d00001648sv000010A9sd0000801A*
+- ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (IA-blade)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (Dual Port Gigabit Ethernet (IA-blade))
+ pci:v000014E4d00001648sv000010A9sd0000801B*
+- ID_MODEL_FROM_DATABASE=Quad Port Gigabit Ethernet (PCI-E,Copper)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (Quad Port Gigabit Ethernet (PCI-E,Copper))
+ pci:v000014E4d00001648sv000010B7sd00002000*
+- ID_MODEL_FROM_DATABASE=3C998-T Dual Port 10/100/1000 PCI-X
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (3C998-T Dual Port 10/100/1000 PCI-X)
+ pci:v000014E4d00001648sv000010B7sd00003000*
+- ID_MODEL_FROM_DATABASE=3C999-T Quad Port 10/100/1000 PCI-X
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (3C999-T Quad Port 10/100/1000 PCI-X)
+ pci:v000014E4d00001648sv00001166sd00001648*
+- ID_MODEL_FROM_DATABASE=NetXtreme CIOB-E 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (NetXtreme CIOB-E 1000Base-T)
+ pci:v000014E4d00001648sv00001734sd0000100B*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard LAN
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet (PRIMERGY RX/TX series onboard LAN)
+ pci:v000014E4d00001649*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S_2 Gigabit Ethernet
+@@ -44250,46 +44250,46 @@ pci:v000014E4d0000164A*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet
+ pci:v000014E4d0000164Asv0000103Csd00001709*
+- ID_MODEL_FROM_DATABASE=NC371i Integrated PCI-X Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet (NC371i Integrated PCI-X Multifunction Gigabit Server Adapter)
+ pci:v000014E4d0000164Asv0000103Csd00003070*
+- ID_MODEL_FROM_DATABASE=NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet (NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter)
+ pci:v000014E4d0000164Asv0000103Csd00003101*
+- ID_MODEL_FROM_DATABASE=NC370T MultifuNCtion Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet (NC370T MultifuNCtion Gigabit Server Adapter)
+ pci:v000014E4d0000164Asv0000103Csd00003106*
+- ID_MODEL_FROM_DATABASE=NC370i Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet (NC370i Multifunction Gigabit Server Adapter)
+ pci:v000014E4d0000164C*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet
+ pci:v000014E4d0000164Csv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 Broadcom NetXtreme II BCM5708
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (PowerEdge R900 Broadcom NetXtreme II BCM5708)
+ pci:v000014E4d0000164Csv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2970 Broadcom NetXtreme II BCM5708
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (PowerEdge 2970 Broadcom NetXtreme II BCM5708)
+ pci:v000014E4d0000164Csv00001028sd0000020B*
+- ID_MODEL_FROM_DATABASE=PowerEdge T605 Broadcom NetXtreme II BCM5708
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (PowerEdge T605 Broadcom NetXtreme II BCM5708)
+ pci:v000014E4d0000164Csv00001028sd00000221*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805 Broadcom NetXtreme II BCM5708
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (PowerEdge R805 Broadcom NetXtreme II BCM5708)
+ pci:v000014E4d0000164Csv00001028sd00000223*
+- ID_MODEL_FROM_DATABASE=PowerEdge R905 Broadcom NetXtreme II BCM5708
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (PowerEdge R905 Broadcom NetXtreme II BCM5708)
+ pci:v000014E4d0000164Csv00001028sd00001F12*
+- ID_MODEL_FROM_DATABASE=PowerEdge R805/R905 Broadcom NetXtreme II BCM5708
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (PowerEdge R805/R905 Broadcom NetXtreme II BCM5708)
+ pci:v000014E4d0000164Csv0000103Csd00007037*
+- ID_MODEL_FROM_DATABASE=NC373T PCI Express Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (NC373T PCI Express Multifunction Gigabit Server Adapter)
+ pci:v000014E4d0000164Csv0000103Csd00007038*
+- ID_MODEL_FROM_DATABASE=NC373i Integrated Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (NC373i Integrated Multifunction Gigabit Server Adapter)
+ pci:v000014E4d0000164Csv0000103Csd00007045*
+- ID_MODEL_FROM_DATABASE=NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet (NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter)
+ pci:v000014E4d0000164D*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5702FE Gigabit Ethernet
+@@ -44298,10 +44298,10 @@ pci:v000014E4d0000164E*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57710 10-Gigabit PCIe [Everest]
+ pci:v000014E4d0000164Esv0000103Csd0000171C*
+- ID_MODEL_FROM_DATABASE=NC532m Dual Port 10GbE Multifunction BL-C Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57710 10-Gigabit PCIe [Everest] (NC532m Dual Port 10GbE Multifunction BL-C Adapter)
+ pci:v000014E4d0000164Esv0000103Csd00007058*
+- ID_MODEL_FROM_DATABASE=NC532i Dual Port 10GbE Multifunction BL-C Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57710 10-Gigabit PCIe [Everest] (NC532i Dual Port 10GbE Multifunction BL-C Adapter)
+ pci:v000014E4d0000164F*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57711 10-Gigabit PCIe
+@@ -44310,31 +44310,31 @@ pci:v000014E4d00001650*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57711E 10-Gigabit PCIe
+ pci:v000014E4d00001650sv0000103Csd0000171C*
+- ID_MODEL_FROM_DATABASE=NC532m Dual Port 10GbE Multifunction BL-C Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57711E 10-Gigabit PCIe (NC532m Dual Port 10GbE Multifunction BL-C Adapter)
+ pci:v000014E4d00001650sv0000103Csd00007058*
+- ID_MODEL_FROM_DATABASE=NC532i Dual Port 10GbE Multifunction BL-C Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57711E 10-Gigabit PCIe (NC532i Dual Port 10GbE Multifunction BL-C Adapter)
+ pci:v000014E4d00001653*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5705 Gigabit Ethernet
+ pci:v000014E4d00001653sv00000E11sd000000E3*
+- ID_MODEL_FROM_DATABASE=NC7761 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705 Gigabit Ethernet (NC7761 Gigabit Server Adapter)
+ pci:v000014E4d00001653sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705 Gigabit Ethernet (Primergy Econel 200 D2020 mainboard)
+ pci:v000014E4d00001654*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet
+ pci:v000014E4d00001654sv00000E11sd000000E3*
+- ID_MODEL_FROM_DATABASE=NC7761 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet (NC7761 Gigabit Server Adapter)
+ pci:v000014E4d00001654sv0000103Csd00003100*
+- ID_MODEL_FROM_DATABASE=NC1020 ProLiant Gigabit Server Adapter 32 PCI
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet (NC1020 ProLiant Gigabit Server Adapter 32 PCI)
+ pci:v000014E4d00001654sv0000103Csd00003226*
+- ID_MODEL_FROM_DATABASE=NC150T 4-port Gigabit Combo Switch & Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet (NC150T 4-port Gigabit Combo Switch & Adapter)
+ pci:v000014E4d00001655*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5717 Gigabit Ethernet PCIe
+@@ -44349,52 +44349,52 @@ pci:v000014E4d00001659*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express
+ pci:v000014E4d00001659sv00001014sd000002C6*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (eServer xSeries server mainboard)
+ pci:v000014E4d00001659sv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (PowerEdge 860)
+ pci:v000014E4d00001659sv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 Broadcom NetXtreme BCM5721
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (PowerEdge R200 Broadcom NetXtreme BCM5721)
+ pci:v000014E4d00001659sv0000103Csd0000170B*
+- ID_MODEL_FROM_DATABASE=NC320m PCI Express Dual Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (NC320m PCI Express Dual Port Gigabit Server Adapter)
+ pci:v000014E4d00001659sv0000103Csd00007031*
+- ID_MODEL_FROM_DATABASE=NC320T PCIe Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (NC320T PCIe Gigabit Server Adapter)
+ pci:v000014E4d00001659sv0000103Csd00007032*
+- ID_MODEL_FROM_DATABASE=NC320i PCIe Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (NC320i PCIe Gigabit Server Adapter)
+ pci:v000014E4d00001659sv00001734sd00001061*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard LAN
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express (PRIMERGY RX/TX S2 series onboard LAN)
+ pci:v000014E4d0000165A*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express
+ pci:v000014E4d0000165Asv00001014sd00000378*
+- ID_MODEL_FROM_DATABASE=IBM System x3350 (Machine type 4192)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express (IBM System x3350 (Machine type 4192))
+ pci:v000014E4d0000165Asv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 Broadcom NetXtreme 5722
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express (PowerEdge R300 Broadcom NetXtreme 5722)
+ pci:v000014E4d0000165Asv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 Broadcom NetXtreme 5722
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express (PowerEdge T300 Broadcom NetXtreme 5722)
+ pci:v000014E4d0000165Asv00001028sd00000225*
+- ID_MODEL_FROM_DATABASE=PowerEdge T105 Broadcom NetXtreme 5722
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express (PowerEdge T105 Broadcom NetXtreme 5722)
+ pci:v000014E4d0000165Asv0000103Csd00007051*
+- ID_MODEL_FROM_DATABASE=NC105i PCIe Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express (NC105i PCIe Gigabit Server Adapter)
+ pci:v000014E4d0000165Asv0000103Csd00007052*
+- ID_MODEL_FROM_DATABASE=NC105T PCIe Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express (NC105T PCIe Gigabit Server Adapter)
+ pci:v000014E4d0000165B*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5723 Gigabit Ethernet PCIe
+ pci:v000014E4d0000165Bsv0000103Csd0000705D*
+- ID_MODEL_FROM_DATABASE=NC107i Integrated PCI Express Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5723 Gigabit Ethernet PCIe (NC107i Integrated PCI Express Gigabit Server Adapter)
+ pci:v000014E4d0000165C*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5724 Gigabit Ethernet PCIe
+@@ -44403,25 +44403,25 @@ pci:v000014E4d0000165D*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M Gigabit Ethernet
+ pci:v000014E4d0000165Dsv00001028sd0000865D*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M Gigabit Ethernet (Latitude D400)
+ pci:v000014E4d0000165Dsv000014E4sd0000165D*
+- ID_MODEL_FROM_DATABASE=Dell Latitude D600
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M Gigabit Ethernet (Dell Latitude D600)
+ pci:v000014E4d0000165E*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet
+ pci:v000014E4d0000165Esv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet (NC8000 laptop)
+ pci:v000014E4d0000165Esv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet (NC6000 laptop)
+ pci:v000014E4d0000165Esv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet (NX6110/NC6120)
+ pci:v000014E4d0000165Esv000010CFsd00001279*
+- ID_MODEL_FROM_DATABASE=LifeBook E8010D
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet (LifeBook E8010D)
+ pci:v000014E4d0000165F*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5720 Gigabit Ethernet PCIe
+@@ -44439,7 +44439,7 @@ pci:v000014E4d00001668*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5714 Gigabit Ethernet
+ pci:v000014E4d00001668sv0000103Csd00007039*
+- ID_MODEL_FROM_DATABASE=NC324i PCIe Dual Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5714 Gigabit Ethernet (NC324i PCIe Dual Port Gigabit Server Adapter)
+ pci:v000014E4d00001669*
+  ID_MODEL_FROM_DATABASE=NetXtreme 5714S Gigabit Ethernet
+@@ -44448,7 +44448,7 @@ pci:v000014E4d0000166A*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5780 Gigabit Ethernet
+ pci:v000014E4d0000166Asv0000103Csd00007035*
+- ID_MODEL_FROM_DATABASE=NC325i Integrated Dual port PCIe Express Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5780 Gigabit Ethernet (NC325i Integrated Dual port PCIe Express Gigabit Server Adapter)
+ pci:v000014E4d0000166B*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5780S Gigabit Ethernet
+@@ -44472,91 +44472,91 @@ pci:v000014E4d00001677*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express
+ pci:v000014E4d00001677sv00001028sd00000176*
+- ID_MODEL_FROM_DATABASE=Dimension XPS Gen 4
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Dimension XPS Gen 4)
+ pci:v000014E4d00001677sv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Dimension 8400)
+ pci:v000014E4d00001677sv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Optiplex GX280)
+ pci:v000014E4d00001677sv00001028sd00000182*
+- ID_MODEL_FROM_DATABASE=Latitude D610
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Latitude D610)
+ pci:v000014E4d00001677sv00001028sd00000187*
+- ID_MODEL_FROM_DATABASE=Precision M70
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Precision M70)
+ pci:v000014E4d00001677sv00001028sd000001A8*
+- ID_MODEL_FROM_DATABASE=Precision 380
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Precision 380)
+ pci:v000014E4d00001677sv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (OptiPlex GX620)
+ pci:v000014E4d00001677sv0000103Csd00003006*
+- ID_MODEL_FROM_DATABASE=DC7100 SFF(DX878AV)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (DC7100 SFF(DX878AV))
+ pci:v000014E4d00001677sv00001462sd0000028C*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (915P/G Neo2)
+ pci:v000014E4d00001677sv00001734sd0000105D*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express (Scenic W620)
+ pci:v000014E4d00001678*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5715 Gigabit Ethernet
+ pci:v000014E4d00001678sv0000103Csd0000703E*
+- ID_MODEL_FROM_DATABASE=NC326i PCIe Dual Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5715 Gigabit Ethernet (NC326i PCIe Dual Port Gigabit Server Adapter)
+ pci:v000014E4d00001679*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5715S Gigabit Ethernet
+ pci:v000014E4d00001679sv0000103Csd00001707*
+- ID_MODEL_FROM_DATABASE=NC326m PCIe Dual Port Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5715S Gigabit Ethernet (NC326m PCIe Dual Port Adapter)
+ pci:v000014E4d00001679sv0000103Csd0000170C*
+- ID_MODEL_FROM_DATABASE=NC325m PCIe Quad Port Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5715S Gigabit Ethernet (NC325m PCIe Quad Port Adapter)
+ pci:v000014E4d00001679sv0000103Csd0000703C*
+- ID_MODEL_FROM_DATABASE=NC326i PCIe Dual Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5715S Gigabit Ethernet (NC326i PCIe Dual Port Gigabit Server Adapter)
+ pci:v000014E4d0000167A*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express
+ pci:v000014E4d0000167Asv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express (OptiPlex 745)
+ pci:v000014E4d0000167Asv00001028sd000001DE*
+- ID_MODEL_FROM_DATABASE=Precision 390
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express (Precision 390)
+ pci:v000014E4d0000167Asv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express (PowerEdge SC440)
+ pci:v000014E4d0000167Asv00001028sd00000214*
+- ID_MODEL_FROM_DATABASE=Precision T3400
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express (Precision T3400)
+ pci:v000014E4d0000167Asv00001028sd0000021E*
+- ID_MODEL_FROM_DATABASE=Precision T5400
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express (Precision T5400)
+ pci:v000014E4d0000167B*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5755 Gigabit Ethernet PCI Express
+ pci:v000014E4d0000167Bsv0000103Csd0000280A*
+- ID_MODEL_FROM_DATABASE=DC5750 Microtower
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5755 Gigabit Ethernet PCI Express (DC5750 Microtower)
+ pci:v000014E4d0000167D*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express
+ pci:v000014E4d0000167Dsv00001014sd00000577*
+- ID_MODEL_FROM_DATABASE=ThinkPad Z60t
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express (ThinkPad Z60t)
+ pci:v000014E4d0000167Dsv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=HP nx8220
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express (HP nx8220)
+ pci:v000014E4d0000167Dsv0000103Csd00000940*
+- ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express (HP Compaq nw8240 Mobile Workstation)
+ pci:v000014E4d0000167Dsv000017AAsd00002081*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60e
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express (ThinkPad R60e)
+ pci:v000014E4d0000167E*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5751F Fast Ethernet PCI Express
+@@ -44592,22 +44592,22 @@ pci:v000014E4d00001688*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5761 10/100/1000BASE-T Ethernet
+ pci:v000014E4d00001688sv00001259sd00002708*
+- ID_MODEL_FROM_DATABASE=AT-2712 FX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5761 10/100/1000BASE-T Ethernet (AT-2712 FX)
+ pci:v000014E4d0000168A*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet
+ pci:v000014E4d0000168Asv00001028sd00001F5C*
+- ID_MODEL_FROM_DATABASE=BCM57800 10-Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (BCM57800 10-Gigabit Ethernet)
+ pci:v000014E4d0000168Asv00001028sd00001F5D*
+- ID_MODEL_FROM_DATABASE=BCM57800 10-Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (BCM57800 10-Gigabit Ethernet)
+ pci:v000014E4d0000168Asv00001028sd00001F67*
+- ID_MODEL_FROM_DATABASE=BCM57800 1-Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (BCM57800 1-Gigabit Ethernet)
+ pci:v000014E4d0000168Asv00001028sd00001F68*
+- ID_MODEL_FROM_DATABASE=BCM57800 1-Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet (BCM57800 1-Gigabit Ethernet)
+ pci:v000014E4d0000168D*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet
+@@ -44616,34 +44616,34 @@ pci:v000014E4d0000168E*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet
+ pci:v000014E4d0000168Esv0000103Csd00001798*
+- ID_MODEL_FROM_DATABASE=Flex-10 10Gb 2-port 530FLB Adapter [Meru]
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (Flex-10 10Gb 2-port 530FLB Adapter [Meru])
+ pci:v000014E4d0000168Esv0000103Csd000017A5*
+- ID_MODEL_FROM_DATABASE=HP Flex-10 10Gb 2-port 530M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP Flex-10 10Gb 2-port 530M Adapter)
+ pci:v000014E4d0000168Esv0000103Csd000018D3*
+- ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530T Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP Ethernet 10Gb 2-port 530T Adapter)
+ pci:v000014E4d0000168Esv0000103Csd00001930*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter)
+ pci:v000014E4d0000168Esv0000103Csd00001931*
+- ID_MODEL_FROM_DATABASE=HP StoreFabric CN1100R Dual Port Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP StoreFabric CN1100R Dual Port Converged Network Adapter)
+ pci:v000014E4d0000168Esv0000103Csd00001932*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLB Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP FlexFabric 10Gb 2-port 534FLB Adapter)
+ pci:v000014E4d0000168Esv0000103Csd00001933*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP FlexFabric 10Gb 2-port 534M Adapter)
+ pci:v000014E4d0000168Esv0000103Csd0000193A*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 533FLR-T Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP FlexFabric 10Gb 2-port 533FLR-T Adapter)
+ pci:v000014E4d0000168Esv0000103Csd00003382*
+- ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter)
+ pci:v000014E4d0000168Esv0000103Csd0000339D*
+- ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet (HP Ethernet 10Gb 2-port 530SFP+ Adapter)
+ pci:v000014E4d00001690*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM57760 Gigabit Ethernet PCIe
+@@ -44652,22 +44652,22 @@ pci:v000014E4d00001691*
+  ID_MODEL_FROM_DATABASE=NetLink BCM57788 Gigabit Ethernet PCIe
+ pci:v000014E4d00001691sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=NetLink BCM57788 Gigabit Ethernet PCIe (XPS 8300)
+ pci:v000014E4d00001692*
+  ID_MODEL_FROM_DATABASE=NetLink BCM57780 Gigabit Ethernet PCIe
+ pci:v000014E4d00001692sv00001025sd0000033D*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=NetLink BCM57780 Gigabit Ethernet PCIe (Aspire 7740G)
+ pci:v000014E4d00001693*
+  ID_MODEL_FROM_DATABASE=NetLink BCM5787M Gigabit Ethernet PCI Express
+ pci:v000014E4d00001693sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=NetLink BCM5787M Gigabit Ethernet PCI Express (Aspire 5920G)
+ pci:v000014E4d00001693sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=6710b
++ ID_MODEL_FROM_DATABASE=NetLink BCM5787M Gigabit Ethernet PCI Express (6710b)
+ pci:v000014E4d00001694*
+  ID_MODEL_FROM_DATABASE=NetLink BCM57790 Gigabit Ethernet PCIe
+@@ -44676,10 +44676,10 @@ pci:v000014E4d00001696*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5782 Gigabit Ethernet
+ pci:v000014E4d00001696sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5782 Gigabit Ethernet (d530 CMT (DG746A))
+ pci:v000014E4d00001696sv000014E4sd0000000D*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5782 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5782 Gigabit Ethernet (NetXtreme BCM5782 1000Base-T)
+ pci:v000014E4d00001698*
+  ID_MODEL_FROM_DATABASE=NetLink BCM5784M Gigabit Ethernet PCIe
+@@ -44697,16 +44697,16 @@ pci:v000014E4d0000169C*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet
+ pci:v000014E4d0000169Csv0000103Csd0000308B*
+- ID_MODEL_FROM_DATABASE=MX6125
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet (MX6125)
+ pci:v000014E4d0000169Csv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet (NC2400)
+ pci:v000014E4d0000169Csv0000144Dsd0000C018*
+- ID_MODEL_FROM_DATABASE=X20
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet (X20)
+ pci:v000014E4d0000169Csv00001462sd0000590C*
+- ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet (KT6 Delta-FIS2R (MS-6590))
+ pci:v000014E4d0000169D*
+  ID_MODEL_FROM_DATABASE=NetLink BCM5789 Gigabit Ethernet PCI Express
+@@ -44721,112 +44721,112 @@ pci:v000014E4d000016A2*
+  ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet
+ pci:v000014E4d000016A2sv0000103Csd00001916*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630FLB Adapter
++ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (HP FlexFabric 20Gb 2-port 630FLB Adapter)
+ pci:v000014E4d000016A2sv0000103Csd00001917*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630M Adapter
++ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet (HP FlexFabric 20Gb 2-port 630M Adapter)
+ pci:v000014E4d000016A4*
+  ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function
+ pci:v000014E4d000016A4sv0000103Csd00001916*
+- ID_MODEL_FROM_DATABASE=HP NPAR 20Gb 2-port 630FLB Adapter
++ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (HP NPAR 20Gb 2-port 630FLB Adapter)
+ pci:v000014E4d000016A4sv0000103Csd00001917*
+- ID_MODEL_FROM_DATABASE=HP NPAR 20Gb 2-port 630M Adapter
++ ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function (HP NPAR 20Gb 2-port 630M Adapter)
+ pci:v000014E4d000016A5*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function
+ pci:v000014E4d000016A5sv00001028sd00001F5C*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function (NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function)
+ pci:v000014E4d000016A5sv00001028sd00001F5D*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function (NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function)
+ pci:v000014E4d000016A5sv00001028sd00001F67*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function (NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function)
+ pci:v000014E4d000016A5sv00001028sd00001F68*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function (NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function)
+ pci:v000014E4d000016A6*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet
+ pci:v000014E4d000016A6sv00000E11sd000000BB*
+- ID_MODEL_FROM_DATABASE=NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet (NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T))
+ pci:v000014E4d000016A6sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet (BCM5702 1000Base-T)
+ pci:v000014E4d000016A6sv000014E4sd0000000C*
+- ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet (BCM5702 1000Base-T)
+ pci:v000014E4d000016A6sv000014E4sd00008009*
+- ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet (BCM5702 1000Base-T)
+ pci:v000014E4d000016A7*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet
+ pci:v000014E4d000016A7sv00000E11sd000000CA*
+- ID_MODEL_FROM_DATABASE=NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d000016A7sv00000E11sd000000CB*
+- ID_MODEL_FROM_DATABASE=NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d000016A7sv00001014sd0000026F*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (eServer xSeries server mainboard)
+ pci:v000014E4d000016A7sv000014E4sd00000009*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (NetXtreme BCM5703 1000Base-T)
+ pci:v000014E4d000016A7sv000014E4sd0000000A*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (NetXtreme BCM5703 1000Base-SX)
+ pci:v000014E4d000016A7sv000014E4sd0000000B*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (NetXtreme BCM5703 1000Base-T)
+ pci:v000014E4d000016A7sv000014E4sd0000800A*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet (NetXtreme BCM5703 1000Base-T)
+ pci:v000014E4d000016A8*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet
+ pci:v000014E4d000016A8sv0000103Csd0000132B*
+- ID_MODEL_FROM_DATABASE=PCI-X 1000Mbps Dual-port Built-in
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet (PCI-X 1000Mbps Dual-port Built-in)
+ pci:v000014E4d000016A8sv000010A9sd00008014*
+- ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (PCI-X,Fiber)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet (Dual Port Gigabit Ethernet (PCI-X,Fiber))
+ pci:v000014E4d000016A8sv000010A9sd0000801C*
+- ID_MODEL_FROM_DATABASE=Quad Port Gigabit Ethernet (PCI-E,Fiber)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet (Quad Port Gigabit Ethernet (PCI-E,Fiber))
+ pci:v000014E4d000016A8sv000010B7sd00002001*
+- ID_MODEL_FROM_DATABASE=3C998-SX Dual Port 1000-SX PCI-X
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet (3C998-SX Dual Port 1000-SX PCI-X)
+ pci:v000014E4d000016A9*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function
+ pci:v000014E4d000016A9sv00001028sd00001F5C*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function (NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function)
+ pci:v000014E4d000016A9sv00001028sd00001F5D*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function (NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function)
+ pci:v000014E4d000016A9sv00001028sd00001F67*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function (NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function)
+ pci:v000014E4d000016A9sv00001028sd00001F68*
+- ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function (NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function)
+ pci:v000014E4d000016AA*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706S Gigabit Ethernet
+ pci:v000014E4d000016AAsv0000103Csd00003102*
+- ID_MODEL_FROM_DATABASE=NC370F MultifuNCtion Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706S Gigabit Ethernet (NC370F MultifuNCtion Gigabit Server Adapter)
+ pci:v000014E4d000016AAsv0000103Csd0000310C*
+- ID_MODEL_FROM_DATABASE=NC370i Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706S Gigabit Ethernet (NC370i Multifunction Gigabit Server Adapter)
+ pci:v000014E4d000016AB*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function
+@@ -44838,97 +44838,97 @@ pci:v000014E4d000016ACsv00001014sd00000304*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet
+ pci:v000014E4d000016ACsv00001028sd000001BB*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1955 Broadcom NetXtreme II BCM5708S
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet (PowerEdge 1955 Broadcom NetXtreme II BCM5708S)
+ pci:v000014E4d000016ACsv00001028sd0000020C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M605 Broadcom NetXtreme II BCM5708S
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet (PowerEdge M605 Broadcom NetXtreme II BCM5708S)
+ pci:v000014E4d000016ACsv0000103Csd00001706*
+- ID_MODEL_FROM_DATABASE=NC373m Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet (NC373m Multifunction Gigabit Server Adapter)
+ pci:v000014E4d000016ACsv0000103Csd00007038*
+- ID_MODEL_FROM_DATABASE=NC373i PCI Express Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet (NC373i PCI Express Multifunction Gigabit Server Adapter)
+ pci:v000014E4d000016ACsv0000103Csd0000703B*
+- ID_MODEL_FROM_DATABASE=NC373i Integrated Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet (NC373i Integrated Multifunction Gigabit Server Adapter)
+ pci:v000014E4d000016ACsv0000103Csd0000703D*
+- ID_MODEL_FROM_DATABASE=NC373F PCI Express Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet (NC373F PCI Express Multifunction Gigabit Server Adapter)
+ pci:v000014E4d000016AD*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function
+ pci:v000014E4d000016ADsv0000103Csd00001916*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630FLB Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (HP FlexFabric 20Gb 2-port 630FLB Adapter)
+ pci:v000014E4d000016ADsv0000103Csd00001917*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function (HP FlexFabric 20Gb 2-port 630M Adapter)
+ pci:v000014E4d000016AE*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function
+ pci:v000014E4d000016AEsv0000103Csd00001798*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530FLB Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 530FLB Adapter)
+ pci:v000014E4d000016AEsv0000103Csd000017A5*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 530M Adapter)
+ pci:v000014E4d000016AEsv0000103Csd000018D3*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530T Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 530T Adapter)
+ pci:v000014E4d000016AEsv0000103Csd00001930*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 534FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 534FLR-SFP+ Adapter)
+ pci:v000014E4d000016AEsv0000103Csd00001931*
+- ID_MODEL_FROM_DATABASE=HP NPAR CN1100R Dual Port Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR CN1100R Dual Port Converged Network Adapter)
+ pci:v000014E4d000016AEsv0000103Csd00001932*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 534FLB Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 534FLB Adapter)
+ pci:v000014E4d000016AEsv0000103Csd00001933*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 534M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 534M Adapter)
+ pci:v000014E4d000016AEsv0000103Csd0000193A*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 533FLR-T Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 533FLR-T Adapter)
+ pci:v000014E4d000016AEsv0000103Csd00003382*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 530FLR-SFP+ Adapter)
+ pci:v000014E4d000016AEsv0000103Csd0000339D*
+- ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function (HP NPAR 10Gb 2-port 530SFP+ Adapter)
+ pci:v000014E4d000016AF*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function
+ pci:v000014E4d000016AFsv0000103Csd00001798*
+- ID_MODEL_FROM_DATABASE=HP Flex-10 10Gb 2-port 530FLB Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP Flex-10 10Gb 2-port 530FLB Adapter)
+ pci:v000014E4d000016AFsv0000103Csd000017A5*
+- ID_MODEL_FROM_DATABASE=HP Flex-10 10Gb 2-port 530M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP Flex-10 10Gb 2-port 530M Adapter)
+ pci:v000014E4d000016AFsv0000103Csd000018D3*
+- ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530T Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP Ethernet 10Gb 2-port 530T Adapter)
+ pci:v000014E4d000016AFsv0000103Csd00001930*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter)
+ pci:v000014E4d000016AFsv0000103Csd00001931*
+- ID_MODEL_FROM_DATABASE=HP StoreFabric CN1100R Dual Port Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP StoreFabric CN1100R Dual Port Converged Network Adapter)
+ pci:v000014E4d000016AFsv0000103Csd00001932*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLB Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP FlexFabric 10Gb 2-port 534FLB Adapter)
+ pci:v000014E4d000016AFsv0000103Csd00001933*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534M Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP FlexFabric 10Gb 2-port 534M Adapter)
+ pci:v000014E4d000016AFsv0000103Csd0000193A*
+- ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 533FLR-T Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP FlexFabric 10Gb 2-port 533FLR-T Adapter)
+ pci:v000014E4d000016AFsv0000103Csd00003382*
+- ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter)
+ pci:v000014E4d000016AFsv0000103Csd0000339D*
+- ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function (HP Ethernet 10Gb 2-port 530SFP+ Adapter)
+ pci:v000014E4d000016B0*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM57761 Gigabit Ethernet PCIe
+@@ -44937,7 +44937,7 @@ pci:v000014E4d000016B1*
+  ID_MODEL_FROM_DATABASE=NetLink BCM57781 Gigabit Ethernet PCIe
+ pci:v000014E4d000016B1sv00001849sd000096B1*
+- ID_MODEL_FROM_DATABASE=Z77 Extreme4 motherboard
++ ID_MODEL_FROM_DATABASE=NetLink BCM57781 Gigabit Ethernet PCIe (Z77 Extreme4 motherboard)
+ pci:v000014E4d000016B2*
+  ID_MODEL_FROM_DATABASE=NetLink BCM57791 Gigabit Ethernet PCIe
+@@ -44970,37 +44970,37 @@ pci:v000014E4d000016C6*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet
+ pci:v000014E4d000016C6sv000010B7sd00001100*
+- ID_MODEL_FROM_DATABASE=3C1000B-T 10/100/1000 PCI
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet (3C1000B-T 10/100/1000 PCI)
+ pci:v000014E4d000016C6sv000014E4sd0000000C*
+- ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet (BCM5702 1000Base-T)
+ pci:v000014E4d000016C6sv000014E4sd00008009*
+- ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet (BCM5702 1000Base-T)
+ pci:v000014E4d000016C7*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet
+ pci:v000014E4d000016C7sv00000E11sd000000CA*
+- ID_MODEL_FROM_DATABASE=NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d000016C7sv00000E11sd000000CB*
+- ID_MODEL_FROM_DATABASE=NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T)
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T))
+ pci:v000014E4d000016C7sv0000103Csd000012C3*
+- ID_MODEL_FROM_DATABASE=Combo FC/GigE-SX [A9782A]
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (Combo FC/GigE-SX [A9782A])
+ pci:v000014E4d000016C7sv0000103Csd000012CA*
+- ID_MODEL_FROM_DATABASE=Combo FC/GigE-T [A9784A]
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (Combo FC/GigE-T [A9784A])
+ pci:v000014E4d000016C7sv0000103Csd00001321*
+- ID_MODEL_FROM_DATABASE=Core I/O LAN/SCSI Combo [AB314A]
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (Core I/O LAN/SCSI Combo [AB314A])
+ pci:v000014E4d000016C7sv000014E4sd00000009*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NetXtreme BCM5703 1000Base-T)
+ pci:v000014E4d000016C7sv000014E4sd0000000A*
+- ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-SX
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet (NetXtreme BCM5703 1000Base-SX)
+ pci:v000014E4d000016DD*
+  ID_MODEL_FROM_DATABASE=NetLink BCM5781 Gigabit Ethernet PCI Express
+@@ -45015,10 +45015,10 @@ pci:v000014E4d000016FD*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express
+ pci:v000014E4d000016FDsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express (Compaq nx9420 Notebook)
+ pci:v000014E4d000016FDsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express (Compaq nw8440)
+ pci:v000014E4d000016FE*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5753F Fast Ethernet PCI Express
+@@ -45027,40 +45027,40 @@ pci:v000014E4d0000170C*
+  ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX
+ pci:v000014E4d0000170Csv00001028sd00000188*
+- ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (Inspiron 6000 laptop)
+ pci:v000014E4d0000170Csv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (Inspiron 700m/710m)
+ pci:v000014E4d0000170Csv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (Inspiron 5160)
+ pci:v000014E4d0000170Csv00001028sd000001AF*
+- ID_MODEL_FROM_DATABASE=Inspiron 6400
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (Inspiron 6400)
+ pci:v000014E4d0000170Csv00001028sd000001CD*
+- ID_MODEL_FROM_DATABASE=Inspiron 9400 Laptop
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (Inspiron 9400 Laptop)
+ pci:v000014E4d0000170Csv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (XPS M1210)
+ pci:v000014E4d0000170Csv00001028sd000001D8*
+- ID_MODEL_FROM_DATABASE=Inspiron E1405
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (Inspiron E1405)
+ pci:v000014E4d0000170Csv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (NX6110/NC6120)
+ pci:v000014E4d0000170Csv0000103Csd000030A2*
+- ID_MODEL_FROM_DATABASE=NX7300 laptop
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (NX7300 laptop)
+ pci:v000014E4d0000170Csv000014E4sd0000170C*
+- ID_MODEL_FROM_DATABASE=HP Compaq 6720t Mobile Thin Client
++ ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX (HP Compaq 6720t Mobile Thin Client)
+ pci:v000014E4d0000170D*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5901 100Base-TX
+ pci:v000014E4d0000170Dsv00001014sd00000545*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40e
++ ID_MODEL_FROM_DATABASE=NetXtreme BCM5901 100Base-TX (ThinkPad R40e)
+ pci:v000014E4d0000170E*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM5901 100Base-TX
+@@ -45072,16 +45072,16 @@ pci:v000014E4d00001713*
+  ID_MODEL_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express
+ pci:v000014E4d00001713sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express (Inspiron 1420)
+ pci:v000014E4d00001713sv00001028sd00000209*
+- ID_MODEL_FROM_DATABASE=XPS M1330
++ ID_MODEL_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express (XPS M1330)
+ pci:v000014E4d00001713sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express (Compaq 6710b)
+ pci:v000014E4d00001713sv000017AAsd00003A23*
+- ID_MODEL_FROM_DATABASE=IdeaPad S10e
++ ID_MODEL_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express (IdeaPad S10e)
+ pci:v000014E4d00003352*
+  ID_MODEL_FROM_DATABASE=BCM3352
+@@ -45108,16 +45108,16 @@ pci:v000014E4d00004301*
+  ID_MODEL_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller
+ pci:v000014E4d00004301sv00001028sd00000407*
+- ID_MODEL_FROM_DATABASE=TrueMobile 1180 Onboard WLAN
++ ID_MODEL_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller (TrueMobile 1180 Onboard WLAN)
+ pci:v000014E4d00004301sv00001043sd00000120*
+- ID_MODEL_FROM_DATABASE=WL-103b Wireless LAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller (WL-103b Wireless LAN PC Card)
+ pci:v000014E4d00004301sv000016A5sd00001602*
+- ID_MODEL_FROM_DATABASE=B-300 802.11b Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller (B-300 802.11b Wireless CardBus Adapter)
+ pci:v000014E4d00004301sv00001737sd00004301*
+- ID_MODEL_FROM_DATABASE=WMP11 v2.7 802.11b Wireless-B PCI Adapter
++ ID_MODEL_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller (WMP11 v2.7 802.11b Wireless-B PCI Adapter)
+ pci:v000014E4d00004305*
+  ID_MODEL_FROM_DATABASE=BCM4307 V.90 56k Modem
+@@ -45135,85 +45135,85 @@ pci:v000014E4d00004311*
+  ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN
+ pci:v000014E4d00004311sv00001028sd00000007*
+- ID_MODEL_FROM_DATABASE=Wireless 1390 WLAN Mini-Card
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (Wireless 1390 WLAN Mini-Card)
+ pci:v000014E4d00004311sv00001028sd00000008*
+- ID_MODEL_FROM_DATABASE=Wireless 1390 WLAN ExpressCard
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (Wireless 1390 WLAN ExpressCard)
+ pci:v000014E4d00004311sv0000103Csd00001363*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001364*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001365*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001374*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001375*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001376*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001377*
+- ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4311 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd0000137F*
+- ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4322 802.11a/b/g/n Wireless LAN Controller)
+ pci:v000014E4d00004311sv0000103Csd00001380*
+- ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM4322 802.11a/b/g/n Wireless LAN Controller)
+ pci:v000014E4d00004311sv000014E4sd00004311*
+- ID_MODEL_FROM_DATABASE=BCM94311MCG
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN (BCM94311MCG)
+ pci:v000014E4d00004312*
+  ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g
+ pci:v000014E4d00004312sv00001028sd00000007*
+- ID_MODEL_FROM_DATABASE=Wireless 1490 Dual Band WLAN Mini-Card
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Wireless 1490 Dual Band WLAN Mini-Card)
+ pci:v000014E4d00004312sv00001028sd00000008*
+- ID_MODEL_FROM_DATABASE=Wireless 1490 Dual Band WLAN ExpressCard
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Wireless 1490 Dual Band WLAN ExpressCard)
+ pci:v000014E4d00004312sv0000103Csd0000135A*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd0000135F*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001360*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001361*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001362*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001370*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001371*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001372*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd00001373*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004312sv0000103Csd000030B5*
+- ID_MODEL_FROM_DATABASE=Presario V3242AU
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Presario V3242AU)
+ pci:v000014E4d00004312sv0000106Bsd00000089*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (AirPort Extreme)
+ pci:v000014E4d00004312sv00001371sd0000103C*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11 Multiband-netwerkadapter(6715s)
++ ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g (Broadcom 802.11 Multiband-netwerkadapter(6715s))
+ pci:v000014E4d00004313*
+  ID_MODEL_FROM_DATABASE=BCM4311 802.11a
+@@ -45222,175 +45222,175 @@ pci:v000014E4d00004315*
+  ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY
+ pci:v000014E4d00004315sv00001028sd0000000B*
+- ID_MODEL_FROM_DATABASE=Wireless 1395 WLAN Mini-Card
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (Wireless 1395 WLAN Mini-Card)
+ pci:v000014E4d00004315sv00001028sd0000000C*
+- ID_MODEL_FROM_DATABASE=Wireless 1397 WLAN Mini-Card
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (Wireless 1397 WLAN Mini-Card)
+ pci:v000014E4d00004315sv0000103Csd0000137C*
+- ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (BCM4312 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004315sv0000103Csd0000137D*
+- ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (BCM4312 802.11b/g Wireless LAN Controller)
+ pci:v000014E4d00004315sv0000103Csd00001507*
+- ID_MODEL_FROM_DATABASE=U98Z049.00 Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (U98Z049.00 Wireless Mini PCIe Card)
+ pci:v000014E4d00004315sv0000105Bsd0000E003*
+- ID_MODEL_FROM_DATABASE=T77H030.00 Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (T77H030.00 Wireless Mini PCIe Card)
+ pci:v000014E4d00004315sv0000105Bsd0000E01B*
+- ID_MODEL_FROM_DATABASE=T77H106.00 Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY (T77H106.00 Wireless Half-size Mini PCIe Card)
+ pci:v000014E4d00004318*
+  ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller
+ pci:v000014E4d00004318sv00001028sd00000005*
+- ID_MODEL_FROM_DATABASE=Wireless 1370 WLAN Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Wireless 1370 WLAN Mini-PCI Card)
+ pci:v000014E4d00004318sv00001028sd00000006*
+- ID_MODEL_FROM_DATABASE=Wireless 1370 WLAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Wireless 1370 WLAN PC Card)
+ pci:v000014E4d00004318sv0000103Csd00001355*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004318sv0000103Csd00001356*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004318sv0000103Csd00001357*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004318sv00001043sd0000100F*
+- ID_MODEL_FROM_DATABASE=WL-138G v2 / WL-138gE / WL-100gE
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (WL-138G v2 / WL-138gE / WL-100gE)
+ pci:v000014E4d00004318sv00001043sd0000120F*
+- ID_MODEL_FROM_DATABASE=A6U notebook embedded card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (A6U notebook embedded card)
+ pci:v000014E4d00004318sv00001154sd00000355*
+- ID_MODEL_FROM_DATABASE=Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter)
+ pci:v000014E4d00004318sv00001468sd00000311*
+- ID_MODEL_FROM_DATABASE=Aspire 3022WLMi, 5024WLMi, 5020
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Aspire 3022WLMi, 5024WLMi, 5020)
+ pci:v000014E4d00004318sv00001468sd00000312*
+- ID_MODEL_FROM_DATABASE=TravelMate 2410
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (TravelMate 2410)
+ pci:v000014E4d00004318sv000014E4sd00000449*
+- ID_MODEL_FROM_DATABASE=Gateway 7510GX
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (Gateway 7510GX)
+ pci:v000014E4d00004318sv000016ECsd00000119*
+- ID_MODEL_FROM_DATABASE=U.S.Robotics Wireless MAXg PC Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (U.S.Robotics Wireless MAXg PC Card)
+ pci:v000014E4d00004318sv00001737sd00000042*
+- ID_MODEL_FROM_DATABASE=WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster)
+ pci:v000014E4d00004318sv00001737sd00000048*
+- ID_MODEL_FROM_DATABASE=WPC54G v3 802.11g Wireless-G Notebook Adapter
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (WPC54G v3 802.11g Wireless-G Notebook Adapter)
+ pci:v000014E4d00004318sv00001737sd00000049*
+- ID_MODEL_FROM_DATABASE=WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster)
+ pci:v000014E4d00004318sv00001799sd00007000*
+- ID_MODEL_FROM_DATABASE=F5D7000 v4000 Wireless G Desktop Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (F5D7000 v4000 Wireless G Desktop Card)
+ pci:v000014E4d00004318sv00001799sd00007001*
+- ID_MODEL_FROM_DATABASE=F5D7001 v2000 Wireless G Plus Desktop Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (F5D7001 v2000 Wireless G Plus Desktop Card)
+ pci:v000014E4d00004318sv00001799sd00007010*
+- ID_MODEL_FROM_DATABASE=F5D7010 v4000 Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (F5D7010 v4000 Wireless G Notebook Card)
+ pci:v000014E4d00004318sv00001799sd00007011*
+- ID_MODEL_FROM_DATABASE=F5D7011 v2000 High-Speed Mode Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (F5D7011 v2000 High-Speed Mode Wireless G Notebook Card)
+ pci:v000014E4d00004319*
+  ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver
+ pci:v000014E4d00004319sv00001028sd00000005*
+- ID_MODEL_FROM_DATABASE=Wireless 1470 Dual Band WLAN Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver (Wireless 1470 Dual Band WLAN Mini-PCI Card)
+ pci:v000014E4d00004319sv00001028sd00000006*
+- ID_MODEL_FROM_DATABASE=Wireless 1470 Dual Band WLAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver (Wireless 1470 Dual Band WLAN PC Card)
+ pci:v000014E4d00004319sv0000103Csd00001358*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004319sv0000103Csd00001359*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004319sv0000103Csd0000135A*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004320*
+  ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller
+ pci:v000014E4d00004320sv00001028sd00000001*
+- ID_MODEL_FROM_DATABASE=TrueMobile 1300 WLAN Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (TrueMobile 1300 WLAN Mini-PCI Card)
+ pci:v000014E4d00004320sv00001028sd00000002*
+- ID_MODEL_FROM_DATABASE=TrueMobile 1300 WLAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (TrueMobile 1300 WLAN PC Card)
+ pci:v000014E4d00004320sv00001028sd00000003*
+- ID_MODEL_FROM_DATABASE=Wireless 1350 WLAN Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Wireless 1350 WLAN Mini-PCI Card)
+ pci:v000014E4d00004320sv00001028sd00000004*
+- ID_MODEL_FROM_DATABASE=Wireless 1350 WLAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Wireless 1350 WLAN PC Card)
+ pci:v000014E4d00004320sv0000103Csd000012F4*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004320sv0000103Csd000012F8*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004320sv0000103Csd000012FA*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004320sv0000103Csd000012FB*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Broadcom 802.11b/g WLAN)
+ pci:v000014E4d00004320sv00001043sd0000100F*
+- ID_MODEL_FROM_DATABASE=WL-100G
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (WL-100G)
+ pci:v000014E4d00004320sv00001057sd00007025*
+- ID_MODEL_FROM_DATABASE=WN825G
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (WN825G)
+ pci:v000014E4d00004320sv0000106Bsd0000004E*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (AirPort Extreme)
+ pci:v000014E4d00004320sv00001154sd00000330*
+- ID_MODEL_FROM_DATABASE=Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter)
+ pci:v000014E4d00004320sv0000144Fsd00007050*
+- ID_MODEL_FROM_DATABASE=eMachines M6805 802.11g Built-in Wireless
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (eMachines M6805 802.11g Built-in Wireless)
+ pci:v000014E4d00004320sv0000144Fsd00007051*
+- ID_MODEL_FROM_DATABASE=Sonnet Aria Extreme PCI
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (Sonnet Aria Extreme PCI)
+ pci:v000014E4d00004320sv00001737sd00000013*
+- ID_MODEL_FROM_DATABASE=WMP54G v1 802.11g PCI Adapter
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (WMP54G v1 802.11g PCI Adapter)
+ pci:v000014E4d00004320sv00001737sd00000014*
+- ID_MODEL_FROM_DATABASE=WMP54G v2 802.11g PCI Adapter
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (WMP54G v2 802.11g PCI Adapter)
+ pci:v000014E4d00004320sv00001737sd00000015*
+- ID_MODEL_FROM_DATABASE=WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster)
+ pci:v000014E4d00004320sv00001737sd00004320*
+- ID_MODEL_FROM_DATABASE=WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter)
+ pci:v000014E4d00004320sv00001799sd00007000*
+- ID_MODEL_FROM_DATABASE=F5D7000 v1000 Wireless G Desktop Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (F5D7000 v1000 Wireless G Desktop Card)
+ pci:v000014E4d00004320sv00001799sd00007001*
+- ID_MODEL_FROM_DATABASE=F5D7001 v1000 Wireless G Plus Desktop Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (F5D7001 v1000 Wireless G Plus Desktop Card)
+ pci:v000014E4d00004320sv00001799sd00007010*
+- ID_MODEL_FROM_DATABASE=F5D7010 v1000 Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (F5D7010 v1000 Wireless G Notebook Card)
+ pci:v000014E4d00004320sv00001799sd00007011*
+- ID_MODEL_FROM_DATABASE=F5D7011 v1000 High-Speed Mode Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (F5D7011 v1000 High-Speed Mode Wireless G Notebook Card)
+ pci:v000014E4d00004320sv0000185Fsd00001220*
+- ID_MODEL_FROM_DATABASE=TravelMate 290E WLAN Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller (TravelMate 290E WLAN Mini-PCI Card)
+ pci:v000014E4d00004321*
+  ID_MODEL_FROM_DATABASE=BCM4321 802.11a Wireless Network Controller
+@@ -45402,31 +45402,31 @@ pci:v000014E4d00004324*
+  ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller
+ pci:v000014E4d00004324sv00001028sd00000001*
+- ID_MODEL_FROM_DATABASE=Truemobile 1400
++ ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller (Truemobile 1400)
+ pci:v000014E4d00004324sv00001028sd00000002*
+- ID_MODEL_FROM_DATABASE=TrueMobile 1400 Dual Band WLAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller (TrueMobile 1400 Dual Band WLAN PC Card)
+ pci:v000014E4d00004324sv00001028sd00000003*
+- ID_MODEL_FROM_DATABASE=Truemobile 1450 MiniPCI
++ ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller (Truemobile 1450 MiniPCI)
+ pci:v000014E4d00004324sv00001028sd00000004*
+- ID_MODEL_FROM_DATABASE=Wireless 1450 Dual Band WLAN PC Card
++ ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller (Wireless 1450 Dual Band WLAN PC Card)
+ pci:v000014E4d00004324sv0000103Csd000012F9*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004324sv0000103Csd000012FC*
+- ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN
++ ID_MODEL_FROM_DATABASE=BCM4309 802.11abg Wireless Network Controller (Broadcom 802.11a/b/g WLAN)
+ pci:v000014E4d00004325*
+  ID_MODEL_FROM_DATABASE=BCM4306 802.11bg Wireless Network Controller
+ pci:v000014E4d00004325sv00001414sd00000003*
+- ID_MODEL_FROM_DATABASE=Wireless Notebook Adapter MN-720
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11bg Wireless Network Controller (Wireless Notebook Adapter MN-720)
+ pci:v000014E4d00004325sv00001414sd00000004*
+- ID_MODEL_FROM_DATABASE=Wireless PCI Adapter MN-730
++ ID_MODEL_FROM_DATABASE=BCM4306 802.11bg Wireless Network Controller (Wireless PCI Adapter MN-730)
+ pci:v000014E4d00004326*
+  ID_MODEL_FROM_DATABASE=BCM4307 Chipcommon I/O Controller?
+@@ -45435,58 +45435,58 @@ pci:v000014E4d00004328*
+  ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n
+ pci:v000014E4d00004328sv00001028sd00000009*
+- ID_MODEL_FROM_DATABASE=Wireless 1500 Draft 802.11n WLAN Mini-Card
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (Wireless 1500 Draft 802.11n WLAN Mini-Card)
+ pci:v000014E4d00004328sv00001028sd0000000A*
+- ID_MODEL_FROM_DATABASE=Wireless 1500 Draft 802.11n WLAN Mini-card
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (Wireless 1500 Draft 802.11n WLAN Mini-card)
+ pci:v000014E4d00004328sv0000103Csd00001366*
+- ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (Wireless LAN Controller)
+ pci:v000014E4d00004328sv0000103Csd00001367*
+- ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (Wireless LAN Controller)
+ pci:v000014E4d00004328sv0000103Csd00001368*
+- ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (Wireless LAN Controller)
+ pci:v000014E4d00004328sv0000103Csd00001369*
+- ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (Wireless LAN Controller)
+ pci:v000014E4d00004328sv0000106Bsd00000087*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004328sv0000106Bsd00000088*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004328sv0000106Bsd0000008B*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004328sv0000106Bsd0000008C*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004328sv0000106Bsd00000090*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004328sv000014E4sd00004328*
+- ID_MODEL_FROM_DATABASE=BCM4328 802.11a/b/g/n
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (BCM4328 802.11a/b/g/n)
+ pci:v000014E4d00004328sv00001737sd00000066*
+- ID_MODEL_FROM_DATABASE=WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter)
+ pci:v000014E4d00004328sv00001737sd00000068*
+- ID_MODEL_FROM_DATABASE=WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n (WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard)
+ pci:v000014E4d00004329*
+  ID_MODEL_FROM_DATABASE=BCM4321 802.11b/g/n
+ pci:v000014E4d00004329sv00001385sd00007B00*
+- ID_MODEL_FROM_DATABASE=WN511B RangeMax NEXT Wireless Notebook Adapter
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11b/g/n (WN511B RangeMax NEXT Wireless Notebook Adapter)
+ pci:v000014E4d00004329sv00001385sd00007D00*
+- ID_MODEL_FROM_DATABASE=WN311B RangeMax Next 270 Mbps Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11b/g/n (WN311B RangeMax Next 270 Mbps Wireless PCI Adapter)
+ pci:v000014E4d00004329sv00001737sd00000058*
+- ID_MODEL_FROM_DATABASE=WPC300N v1 Wireless-N Notebook Adapter
++ ID_MODEL_FROM_DATABASE=BCM4321 802.11b/g/n (WPC300N v1 Wireless-N Notebook Adapter)
+ pci:v000014E4d0000432A*
+  ID_MODEL_FROM_DATABASE=BCM4321 802.11an Wireless Network Controller
+@@ -45495,19 +45495,19 @@ pci:v000014E4d0000432B*
+  ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller
+ pci:v000014E4d0000432Bsv00001028sd0000000D*
+- ID_MODEL_FROM_DATABASE=Wireless 1510 Wireless-N WLAN Mini-Card
++ ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller (Wireless 1510 Wireless-N WLAN Mini-Card)
+ pci:v000014E4d0000432Bsv0000106Bsd0000008D*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller (AirPort Extreme)
+ pci:v000014E4d0000432Bsv0000106Bsd0000008E*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller (AirPort Extreme)
+ pci:v000014E4d0000432C*
+  ID_MODEL_FROM_DATABASE=BCM4322 802.11b/g/n
+ pci:v000014E4d0000432Csv00001799sd0000D311*
+- ID_MODEL_FROM_DATABASE=Dynex DX-NNBX 802.11n WLAN Cardbus Card
++ ID_MODEL_FROM_DATABASE=BCM4322 802.11b/g/n (Dynex DX-NNBX 802.11n WLAN Cardbus Card)
+ pci:v000014E4d0000432D*
+  ID_MODEL_FROM_DATABASE=BCM4322 802.11an Wireless Network Controller
+@@ -45516,25 +45516,25 @@ pci:v000014E4d00004331*
+  ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n
+ pci:v000014E4d00004331sv0000106Bsd000000D6*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004331sv0000106Bsd000000E4*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004331sv0000106Bsd000000EF*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004331sv0000106Bsd000000F4*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004331sv0000106Bsd000000F5*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004331sv0000106Bsd0000010E*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004331sv0000106Bsd0000010F*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004333*
+  ID_MODEL_FROM_DATABASE=Serial (EDGE/GPRS modem part of Option GT Combo Edge)
+@@ -45549,25 +45549,25 @@ pci:v000014E4d00004353*
+  ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n
+ pci:v000014E4d00004353sv00001028sd0000000E*
+- ID_MODEL_FROM_DATABASE=Wireless 1520 Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n (Wireless 1520 Half-size Mini PCIe Card)
+ pci:v000014E4d00004353sv0000103Csd00001509*
+- ID_MODEL_FROM_DATABASE=WMIB-275N Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n (WMIB-275N Half-size Mini PCIe Card)
+ pci:v000014E4d00004353sv0000106Bsd00000093*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004353sv0000106Bsd000000D1*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004353sv0000106Bsd000000E9*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n (AirPort Extreme)
+ pci:v000014E4d00004357*
+  ID_MODEL_FROM_DATABASE=BCM43225 802.11b/g/n
+ pci:v000014E4d00004357sv0000105Bsd0000E021*
+- ID_MODEL_FROM_DATABASE=T77H103.00 Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM43225 802.11b/g/n (T77H103.00 Wireless Half-size Mini PCIe Card)
+ pci:v000014E4d00004358*
+  ID_MODEL_FROM_DATABASE=BCM43227 802.11b/g/n
+@@ -45576,16 +45576,16 @@ pci:v000014E4d00004359*
+  ID_MODEL_FROM_DATABASE=BCM43228 802.11a/b/g/n
+ pci:v000014E4d00004359sv00001028sd00000011*
+- ID_MODEL_FROM_DATABASE=Wireless 1530 Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=BCM43228 802.11a/b/g/n (Wireless 1530 Half-size Mini PCIe Card)
+ pci:v000014E4d00004359sv0000103Csd0000182C*
+- ID_MODEL_FROM_DATABASE=BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter
++ ID_MODEL_FROM_DATABASE=BCM43228 802.11a/b/g/n (BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter)
+ pci:v000014E4d00004365*
+  ID_MODEL_FROM_DATABASE=BCM43142 802.11b/g/n
+ pci:v000014E4d00004365sv00001028sd00000016*
+- ID_MODEL_FROM_DATABASE=Wireless 1704 802.11n + BT 4.0
++ ID_MODEL_FROM_DATABASE=BCM43142 802.11b/g/n (Wireless 1704 802.11n + BT 4.0)
+ pci:v000014E4d000043A0*
+  ID_MODEL_FROM_DATABASE=BCM4360 802.11ac Wireless Network Adapter
+@@ -45597,13 +45597,13 @@ pci:v000014E4d00004401*
+  ID_MODEL_FROM_DATABASE=BCM4401 100Base-T
+ pci:v000014E4d00004401sv00001025sd00000035*
+- ID_MODEL_FROM_DATABASE=TravelMate 660
++ ID_MODEL_FROM_DATABASE=BCM4401 100Base-T (TravelMate 660)
+ pci:v000014E4d00004401sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=BCM4401 100Base-T (tc1100 tablet)
+ pci:v000014E4d00004401sv00001043sd000080A8*
+- ID_MODEL_FROM_DATABASE=A7V8X motherboard
++ ID_MODEL_FROM_DATABASE=BCM4401 100Base-T (A7V8X motherboard)
+ pci:v000014E4d00004402*
+  ID_MODEL_FROM_DATABASE=BCM4402 Integrated 10/100BaseT
+@@ -45696,7 +45696,7 @@ pci:v000014E4d00004727*
+  ID_MODEL_FROM_DATABASE=BCM4313 802.11bgn Wireless Network Adapter
+ pci:v000014E4d00004727sv00001028sd00000010*
+- ID_MODEL_FROM_DATABASE=Inspiron M5010 / XPS 8300
++ ID_MODEL_FROM_DATABASE=BCM4313 802.11bgn Wireless Network Adapter (Inspiron M5010 / XPS 8300)
+ pci:v000014E4d00005365*
+  ID_MODEL_FROM_DATABASE=BCM5365P Sentry5 Host Bridge
+@@ -45867,55 +45867,55 @@ pci:v000014F1d00001033*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem
+ pci:v000014F1d00001033sv00001033sd00008077*
+- ID_MODEL_FROM_DATABASE=NEC
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (NEC)
+ pci:v000014F1d00001033sv0000122Dsd00004027*
+- ID_MODEL_FROM_DATABASE=Dell Zeus - MDP3880-W(B) Data Fax Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Dell Zeus - MDP3880-W(B) Data Fax Modem)
+ pci:v000014F1d00001033sv0000122Dsd00004030*
+- ID_MODEL_FROM_DATABASE=Dell Mercury - MDP3880-U(B) Data Fax Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Dell Mercury - MDP3880-U(B) Data Fax Modem)
+ pci:v000014F1d00001033sv0000122Dsd00004034*
+- ID_MODEL_FROM_DATABASE=Dell Thor - MDP3880-W(U) Data Fax Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Dell Thor - MDP3880-W(U) Data Fax Modem)
+ pci:v000014F1d00001033sv000013E0sd0000020D*
+- ID_MODEL_FROM_DATABASE=Dell Copper
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Dell Copper)
+ pci:v000014F1d00001033sv000013E0sd0000020E*
+- ID_MODEL_FROM_DATABASE=Dell Silver
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Dell Silver)
+ pci:v000014F1d00001033sv000013E0sd00000261*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v000014F1d00001033sv000013E0sd00000290*
+- ID_MODEL_FROM_DATABASE=Compaq Goldwing
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Compaq Goldwing)
+ pci:v000014F1d00001033sv000013E0sd000002A0*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v000014F1d00001033sv000013E0sd000002B0*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v000014F1d00001033sv000013E0sd000002C0*
+- ID_MODEL_FROM_DATABASE=Compaq Scooter
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Compaq Scooter)
+ pci:v000014F1d00001033sv000013E0sd000002D0*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v000014F1d00001033sv0000144Fsd00001500*
+- ID_MODEL_FROM_DATABASE=IBM P85-DF (1)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P85-DF (1))
+ pci:v000014F1d00001033sv0000144Fsd00001501*
+- ID_MODEL_FROM_DATABASE=IBM P85-DF (2)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P85-DF (2))
+ pci:v000014F1d00001033sv0000144Fsd0000150A*
+- ID_MODEL_FROM_DATABASE=IBM P85-DF (3)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P85-DF (3))
+ pci:v000014F1d00001033sv0000144Fsd0000150B*
+- ID_MODEL_FROM_DATABASE=IBM P85-DF Low Profile (1)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P85-DF Low Profile (1))
+ pci:v000014F1d00001033sv0000144Fsd00001510*
+- ID_MODEL_FROM_DATABASE=IBM P85-DF Low Profile (2)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P85-DF Low Profile (2))
+ pci:v000014F1d00001034*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem
+@@ -45924,31 +45924,31 @@ pci:v000014F1d00001035*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ pci:v000014F1d00001035sv000010CFsd00001098*
+- ID_MODEL_FROM_DATABASE=Fujitsu P85-DFSV
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Fujitsu P85-DFSV)
+ pci:v000014F1d00001036*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem
+ pci:v000014F1d00001036sv0000104Dsd00008067*
+- ID_MODEL_FROM_DATABASE=HCF 56k Modem
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (HCF 56k Modem)
+ pci:v000014F1d00001036sv0000122Dsd00004029*
+- ID_MODEL_FROM_DATABASE=MDP3880SP-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (MDP3880SP-W)
+ pci:v000014F1d00001036sv0000122Dsd00004031*
+- ID_MODEL_FROM_DATABASE=MDP3880SP-U
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (MDP3880SP-U)
+ pci:v000014F1d00001036sv000013E0sd00000209*
+- ID_MODEL_FROM_DATABASE=Dell Titanium
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Dell Titanium)
+ pci:v000014F1d00001036sv000013E0sd0000020A*
+- ID_MODEL_FROM_DATABASE=Dell Graphite
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Dell Graphite)
+ pci:v000014F1d00001036sv000013E0sd00000260*
+- ID_MODEL_FROM_DATABASE=Gateway Red Owl
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Gateway Red Owl)
+ pci:v000014F1d00001036sv000013E0sd00000270*
+- ID_MODEL_FROM_DATABASE=Gateway White Horse
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Gateway White Horse)
+ pci:v000014F1d00001052*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Worldwide)
+@@ -45966,7 +45966,7 @@ pci:v000014F1d00001056*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+ pci:v000014F1d00001056sv0000122Dsd00004035*
+- ID_MODEL_FROM_DATABASE=MDP3900V-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) (MDP3900V-W)
+ pci:v000014F1d00001057*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+@@ -45987,7 +45987,7 @@ pci:v000014F1d00001066*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem
+ pci:v000014F1d00001066sv0000122Dsd00004033*
+- ID_MODEL_FROM_DATABASE=Dell Athena - MDP3900V-U
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Dell Athena - MDP3900V-U)
+ pci:v000014F1d00001085*
+  ID_MODEL_FROM_DATABASE=HCF V90 56k Data/Fax/Voice/Spkp PCI Modem
+@@ -46011,16 +46011,16 @@ pci:v000014F1d00001453*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem
+ pci:v000014F1d00001453sv000013E0sd00000240*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v000014F1d00001453sv000013E0sd00000250*
+- ID_MODEL_FROM_DATABASE=IBM
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM)
+ pci:v000014F1d00001453sv0000144Fsd00001502*
+- ID_MODEL_FROM_DATABASE=IBM P95-DF (1)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P95-DF (1))
+ pci:v000014F1d00001453sv0000144Fsd00001503*
+- ID_MODEL_FROM_DATABASE=IBM P95-DF (2)
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (IBM P95-DF (2))
+ pci:v000014F1d00001454*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem
+@@ -46032,10 +46032,10 @@ pci:v000014F1d00001456*
+  ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem
+ pci:v000014F1d00001456sv0000122Dsd00004035*
+- ID_MODEL_FROM_DATABASE=Dell Europa - MDP3900V-W
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Dell Europa - MDP3900V-W)
+ pci:v000014F1d00001456sv0000122Dsd00004302*
+- ID_MODEL_FROM_DATABASE=Dell MP3930V-W(C) MiniPCI
++ ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Dell MP3930V-W(C) MiniPCI)
+ pci:v000014F1d00001610*
+  ID_MODEL_FROM_DATABASE=ADSL AccessRunner PCI Arbitration Device
+@@ -46056,10 +46056,10 @@ pci:v000014F1d00001803*
+  ID_MODEL_FROM_DATABASE=HCF 56k Modem
+ pci:v000014F1d00001803sv00000E11sd00000023*
+- ID_MODEL_FROM_DATABASE=623-LAN Grizzly
++ ID_MODEL_FROM_DATABASE=HCF 56k Modem (623-LAN Grizzly)
+ pci:v000014F1d00001803sv00000E11sd00000043*
+- ID_MODEL_FROM_DATABASE=623-LAN Yogi
++ ID_MODEL_FROM_DATABASE=HCF 56k Modem (623-LAN Yogi)
+ pci:v000014F1d00001811*
+  ID_MODEL_FROM_DATABASE=MiniPCI Network Adapter
+@@ -46068,10 +46068,10 @@ pci:v000014F1d00001815*
+  ID_MODEL_FROM_DATABASE=HCF 56k Modem
+ pci:v000014F1d00001815sv00000E11sd00000022*
+- ID_MODEL_FROM_DATABASE=Grizzly
++ ID_MODEL_FROM_DATABASE=HCF 56k Modem (Grizzly)
+ pci:v000014F1d00001815sv00000E11sd00000042*
+- ID_MODEL_FROM_DATABASE=Yogi
++ ID_MODEL_FROM_DATABASE=HCF 56k Modem (Yogi)
+ pci:v000014F1d00002003*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem
+@@ -46089,28 +46089,28 @@ pci:v000014F1d00002013*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem
+ pci:v000014F1d00002013sv00000E11sd0000B195*
+- ID_MODEL_FROM_DATABASE=Bear
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Bear)
+ pci:v000014F1d00002013sv00000E11sd0000B196*
+- ID_MODEL_FROM_DATABASE=Seminole 1
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Seminole 1)
+ pci:v000014F1d00002013sv00000E11sd0000B1BE*
+- ID_MODEL_FROM_DATABASE=Seminole 2
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Seminole 2)
+ pci:v000014F1d00002013sv00001025sd00008013*
+- ID_MODEL_FROM_DATABASE=Acer
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Acer)
+ pci:v000014F1d00002013sv00001033sd0000809D*
+- ID_MODEL_FROM_DATABASE=NEC
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (NEC)
+ pci:v000014F1d00002013sv00001033sd000080BC*
+- ID_MODEL_FROM_DATABASE=NEC
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (NEC)
+ pci:v000014F1d00002013sv0000155Dsd00006793*
+- ID_MODEL_FROM_DATABASE=HP
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (HP)
+ pci:v000014F1d00002013sv0000155Dsd00008850*
+- ID_MODEL_FROM_DATABASE=E Machines
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (E Machines)
+ pci:v000014F1d00002014*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem
+@@ -46131,7 +46131,7 @@ pci:v000014F1d00002045*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)
+ pci:v000014F1d00002045sv000014F1sd00002045*
+- ID_MODEL_FROM_DATABASE=Generic SoftK56
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) (Generic SoftK56)
+ pci:v000014F1d00002046*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)
+@@ -46152,7 +46152,7 @@ pci:v000014F1d00002093*
+  ID_MODEL_FROM_DATABASE=HSF 56k Modem
+ pci:v000014F1d00002093sv0000155Dsd00002F07*
+- ID_MODEL_FROM_DATABASE=Legend
++ ID_MODEL_FROM_DATABASE=HSF 56k Modem (Legend)
+ pci:v000014F1d00002143*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)
+@@ -46206,13 +46206,13 @@ pci:v000014F1d00002443*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)
+ pci:v000014F1d00002443sv0000104Dsd00008075*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) (Modem)
+ pci:v000014F1d00002443sv0000104Dsd00008083*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) (Modem)
+ pci:v000014F1d00002443sv0000104Dsd00008097*
+- ID_MODEL_FROM_DATABASE=Modem
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) (Modem)
+ pci:v000014F1d00002444*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)
+@@ -46239,13 +46239,13 @@ pci:v000014F1d00002F00*
+  ID_MODEL_FROM_DATABASE=HSF 56k HSFi Modem
+ pci:v000014F1d00002F00sv000013E0sd00008D84*
+- ID_MODEL_FROM_DATABASE=IBM HSFi V.90
++ ID_MODEL_FROM_DATABASE=HSF 56k HSFi Modem (IBM HSFi V.90)
+ pci:v000014F1d00002F00sv000013E0sd00008D85*
+- ID_MODEL_FROM_DATABASE=Compaq Stinger
++ ID_MODEL_FROM_DATABASE=HSF 56k HSFi Modem (Compaq Stinger)
+ pci:v000014F1d00002F00sv000014F1sd00002004*
+- ID_MODEL_FROM_DATABASE=Dynalink 56PMi
++ ID_MODEL_FROM_DATABASE=HSF 56k HSFi Modem (Dynalink 56PMi)
+ pci:v000014F1d00002F02*
+  ID_MODEL_FROM_DATABASE=HSF 56k HSFi Data/Fax
+@@ -46257,16 +46257,16 @@ pci:v000014F1d00002F20*
+  ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem
+ pci:v000014F1d00002F20sv000014F1sd0000200C*
+- ID_MODEL_FROM_DATABASE=Soft Data Fax Modem with SmartCP
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Soft Data Fax Modem with SmartCP)
+ pci:v000014F1d00002F20sv000014F1sd0000200F*
+- ID_MODEL_FROM_DATABASE=Dimension 3000
++ ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Dimension 3000)
+ pci:v000014F1d00002F30*
+  ID_MODEL_FROM_DATABASE=SoftV92 SpeakerPhone SoftRing Modem with SmartSP
+ pci:v000014F1d00002F30sv000014F1sd00002014*
+- ID_MODEL_FROM_DATABASE=Devolo MikroLink 56K Modem PCI
++ ID_MODEL_FROM_DATABASE=SoftV92 SpeakerPhone SoftRing Modem with SmartSP (Devolo MikroLink 56K Modem PCI)
+ pci:v000014F1d00002F50*
+  ID_MODEL_FROM_DATABASE=Conexant SoftK56 Data/Fax Modem
+@@ -46275,13 +46275,13 @@ pci:v000014F1d00005B7A*
+  ID_MODEL_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder
+ pci:v000014F1d00005B7Asv00000070sd00007444*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-1600
++ ID_MODEL_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder (WinTV HVR-1600)
+ pci:v000014F1d00005B7Asv0000107Dsd00006F34*
+- ID_MODEL_FROM_DATABASE=WinFast DVR3100 H
++ ID_MODEL_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder (WinFast DVR3100 H)
+ pci:v000014F1d00005B7Asv00005854sd00003343*
+- ID_MODEL_FROM_DATABASE=GoTView PCI DVD3 Hybrid
++ ID_MODEL_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder (GoTView PCI DVD3 Hybrid)
+ pci:v000014F1d00008200*
+  ID_MODEL_FROM_DATABASE=CX25850
+@@ -46293,304 +46293,304 @@ pci:v000014F1d00008800*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder
+ pci:v000014F1d00008800sv00000070sd00002801*
+- ID_MODEL_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Hauppauge WinTV 28xxx (Roslyn) models)
+ pci:v000014F1d00008800sv00000070sd00003400*
+- ID_MODEL_FROM_DATABASE=WinTV 34604
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinTV 34604)
+ pci:v000014F1d00008800sv00000070sd00003401*
+- ID_MODEL_FROM_DATABASE=Hauppauge WinTV 34xxx models
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Hauppauge WinTV 34xxx models)
+ pci:v000014F1d00008800sv00000070sd00006902*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinTV HVR-4000-HD)
+ pci:v000014F1d00008800sv00000070sd00007801*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-1800 MCE
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinTV HVR-1800 MCE)
+ pci:v000014F1d00008800sv00000070sd00009001*
+- ID_MODEL_FROM_DATABASE=Nova-T DVB-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Nova-T DVB-T)
+ pci:v000014F1d00008800sv00000070sd00009200*
+- ID_MODEL_FROM_DATABASE=Nova-SE2 DVB-S
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Nova-SE2 DVB-S)
+ pci:v000014F1d00008800sv00000070sd00009202*
+- ID_MODEL_FROM_DATABASE=Nova-S-Plus DVB-S
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Nova-S-Plus DVB-S)
+ pci:v000014F1d00008800sv00000070sd00009402*
+- ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinTV-HVR1100 DVB-T/Hybrid)
+ pci:v000014F1d00008800sv00000070sd00009600*
+- ID_MODEL_FROM_DATABASE=WinTV 88x Video
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinTV 88x Video)
+ pci:v000014F1d00008800sv00000070sd00009802*
+- ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid (Low Profile)
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinTV-HVR1100 DVB-T/Hybrid (Low Profile))
+ pci:v000014F1d00008800sv00001002sd000000F8*
+- ID_MODEL_FROM_DATABASE=ATI TV Wonder Pro
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (ATI TV Wonder Pro)
+ pci:v000014F1d00008800sv00001002sd0000A101*
+- ID_MODEL_FROM_DATABASE=HDTV Wonder
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (HDTV Wonder)
+ pci:v000014F1d00008800sv00001043sd00004823*
+- ID_MODEL_FROM_DATABASE=ASUS PVR-416
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (ASUS PVR-416)
+ pci:v000014F1d00008800sv0000107Dsd00006611*
+- ID_MODEL_FROM_DATABASE=Winfast TV 2000XP Expert
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Winfast TV 2000XP Expert)
+ pci:v000014F1d00008800sv0000107Dsd00006613*
+- ID_MODEL_FROM_DATABASE=Leadtek Winfast 2000XP Expert
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Leadtek Winfast 2000XP Expert)
+ pci:v000014F1d00008800sv0000107Dsd00006620*
+- ID_MODEL_FROM_DATABASE=Leadtek Winfast DV2000
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Leadtek Winfast DV2000)
+ pci:v000014F1d00008800sv0000107Dsd0000663C*
+- ID_MODEL_FROM_DATABASE=Leadtek PVR 2000
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Leadtek PVR 2000)
+ pci:v000014F1d00008800sv0000107Dsd0000665F*
+- ID_MODEL_FROM_DATABASE=WinFast DTV1000-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (WinFast DTV1000-T)
+ pci:v000014F1d00008800sv000010FCsd0000D003*
+- ID_MODEL_FROM_DATABASE=IODATA GV-VCP3/PCI
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (IODATA GV-VCP3/PCI)
+ pci:v000014F1d00008800sv000010FCsd0000D035*
+- ID_MODEL_FROM_DATABASE=IODATA GV/BCTV7E
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (IODATA GV/BCTV7E)
+ pci:v000014F1d00008800sv00001421sd00000334*
+- ID_MODEL_FROM_DATABASE=Instant TV DVB-T PCI
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Instant TV DVB-T PCI)
+ pci:v000014F1d00008800sv00001461sd0000000A*
+- ID_MODEL_FROM_DATABASE=AVerTV 303 (M126)
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (AVerTV 303 (M126))
+ pci:v000014F1d00008800sv00001461sd0000000B*
+- ID_MODEL_FROM_DATABASE=AverTV Studio 303 (M126)
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (AverTV Studio 303 (M126))
+ pci:v000014F1d00008800sv00001461sd00008011*
+- ID_MODEL_FROM_DATABASE=UltraTV Media Center PCI 550
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (UltraTV Media Center PCI 550)
+ pci:v000014F1d00008800sv00001462sd00008606*
+- ID_MODEL_FROM_DATABASE=MSI TV-@nywhere Master
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (MSI TV-@nywhere Master)
+ pci:v000014F1d00008800sv000014C7sd00000107*
+- ID_MODEL_FROM_DATABASE=GDI Black Gold
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (GDI Black Gold)
+ pci:v000014F1d00008800sv000014F1sd00000187*
+- ID_MODEL_FROM_DATABASE=Conexant DVB-T reference design
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Conexant DVB-T reference design)
+ pci:v000014F1d00008800sv000014F1sd00000342*
+- ID_MODEL_FROM_DATABASE=Digital-Logic MICROSPACE Entertainment Center (MEC)
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Digital-Logic MICROSPACE Entertainment Center (MEC))
+ pci:v000014F1d00008800sv0000153Bsd00001166*
+- ID_MODEL_FROM_DATABASE=Cinergy 1400 DVB-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Cinergy 1400 DVB-T)
+ pci:v000014F1d00008800sv00001540sd00002580*
+- ID_MODEL_FROM_DATABASE=Provideo PV259
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Provideo PV259)
+ pci:v000014F1d00008800sv00001554sd00004811*
+- ID_MODEL_FROM_DATABASE=PixelView
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (PixelView)
+ pci:v000014F1d00008800sv00001554sd00004813*
+- ID_MODEL_FROM_DATABASE=Club 3D  ZAP1000 MCE Edition
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (Club 3D  ZAP1000 MCE Edition)
+ pci:v000014F1d00008800sv000017DEsd000008A1*
+- ID_MODEL_FROM_DATABASE=KWorld/VStream XPert DVB-T with cx22702
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (KWorld/VStream XPert DVB-T with cx22702)
+ pci:v000014F1d00008800sv000017DEsd000008A6*
+- ID_MODEL_FROM_DATABASE=KWorld/VStream XPert DVB-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (KWorld/VStream XPert DVB-T)
+ pci:v000014F1d00008800sv000017DEsd000008B2*
+- ID_MODEL_FROM_DATABASE=KWorld DVB-S 100
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (KWorld DVB-S 100)
+ pci:v000014F1d00008800sv000017DEsd0000A8A6*
+- ID_MODEL_FROM_DATABASE=digitalnow DNTV Live! DVB-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (digitalnow DNTV Live! DVB-T)
+ pci:v000014F1d00008800sv00001822sd00000025*
+- ID_MODEL_FROM_DATABASE=digitalnow DNTV Live! DVB-T Pro
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (digitalnow DNTV Live! DVB-T Pro)
+ pci:v000014F1d00008800sv0000185Bsd0000E000*
+- ID_MODEL_FROM_DATABASE=VideoMate X500
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (VideoMate X500)
+ pci:v000014F1d00008800sv000018ACsd0000D500*
+- ID_MODEL_FROM_DATABASE=FusionHDTV 5 Gold
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (FusionHDTV 5 Gold)
+ pci:v000014F1d00008800sv000018ACsd0000D810*
+- ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold-Q
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (FusionHDTV 3 Gold-Q)
+ pci:v000014F1d00008800sv000018ACsd0000D820*
+- ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (FusionHDTV 3 Gold-T)
+ pci:v000014F1d00008800sv000018ACsd0000DB00*
+- ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T1
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (FusionHDTV DVB-T1)
+ pci:v000014F1d00008800sv000018ACsd0000DB11*
+- ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Plus
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (FusionHDTV DVB-T Plus)
+ pci:v000014F1d00008800sv000018ACsd0000DB50*
+- ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Dual Digital
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (FusionHDTV DVB-T Dual Digital)
+ pci:v000014F1d00008800sv00005654sd00002388*
+- ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid TV Tuner Card
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (GoTView PCI Hybrid TV Tuner Card)
+ pci:v000014F1d00008800sv00007063sd00003000*
+- ID_MODEL_FROM_DATABASE=pcHDTV HD3000 HDTV
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (pcHDTV HD3000 HDTV)
+ pci:v000014F1d00008800sv00007063sd00005500*
+- ID_MODEL_FROM_DATABASE=pcHDTV HD-5500
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (pcHDTV HD-5500)
+ pci:v000014F1d00008801*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]
+ pci:v000014F1d00008801sv00000070sd00002801*
+- ID_MODEL_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (Hauppauge WinTV 28xxx (Roslyn) models)
+ pci:v000014F1d00008801sv0000185Bsd0000E000*
+- ID_MODEL_FROM_DATABASE=VideoMate X500
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (VideoMate X500)
+ pci:v000014F1d00008801sv00005654sd00002388*
+- ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid Audio AVStream Device
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (GoTView PCI Hybrid Audio AVStream Device)
+ pci:v000014F1d00008801sv00007063sd00005500*
+- ID_MODEL_FROM_DATABASE=pcHDTV HD-5500
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (pcHDTV HD-5500)
+ pci:v000014F1d00008802*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port]
+ pci:v000014F1d00008802sv00000070sd00002801*
+- ID_MODEL_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (Hauppauge WinTV 28xxx (Roslyn) models)
+ pci:v000014F1d00008802sv00000070sd00006902*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (WinTV HVR-4000-HD)
+ pci:v000014F1d00008802sv00000070sd00009002*
+- ID_MODEL_FROM_DATABASE=Nova-T DVB-T Model 909
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (Nova-T DVB-T Model 909)
+ pci:v000014F1d00008802sv00000070sd00009402*
+- ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (WinTV-HVR1100 DVB-T/Hybrid)
+ pci:v000014F1d00008802sv00000070sd00009600*
+- ID_MODEL_FROM_DATABASE=WinTV 88x MPEG Encoder
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (WinTV 88x MPEG Encoder)
+ pci:v000014F1d00008802sv00001043sd00004823*
+- ID_MODEL_FROM_DATABASE=ASUS PVR-416
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (ASUS PVR-416)
+ pci:v000014F1d00008802sv0000107Dsd0000663C*
+- ID_MODEL_FROM_DATABASE=Leadtek PVR 2000
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (Leadtek PVR 2000)
+ pci:v000014F1d00008802sv0000107Dsd0000665F*
+- ID_MODEL_FROM_DATABASE=WinFast DTV1000-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (WinFast DTV1000-T)
+ pci:v000014F1d00008802sv000014F1sd00000187*
+- ID_MODEL_FROM_DATABASE=Conexant DVB-T reference design
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (Conexant DVB-T reference design)
+ pci:v000014F1d00008802sv000017DEsd000008A1*
+- ID_MODEL_FROM_DATABASE=XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture)
+ pci:v000014F1d00008802sv000017DEsd000008A6*
+- ID_MODEL_FROM_DATABASE=KWorld/VStream XPert DVB-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (KWorld/VStream XPert DVB-T)
+ pci:v000014F1d00008802sv000018ACsd0000D500*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Gold
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (DViCO FusionHDTV5 Gold)
+ pci:v000014F1d00008802sv000018ACsd0000D810*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-Q
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (DViCO FusionHDTV3 Gold-Q)
+ pci:v000014F1d00008802sv000018ACsd0000D820*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (DViCO FusionHDTV3 Gold-T)
+ pci:v000014F1d00008802sv000018ACsd0000DB00*
+- ID_MODEL_FROM_DATABASE=DVICO FusionHDTV DVB-T1
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (DVICO FusionHDTV DVB-T1)
+ pci:v000014F1d00008802sv000018ACsd0000DB10*
+- ID_MODEL_FROM_DATABASE=DVICO FusionHDTV DVB-T Plus
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (DVICO FusionHDTV DVB-T Plus)
+ pci:v000014F1d00008802sv00005654sd00002388*
+- ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid TS Capture Device
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (GoTView PCI Hybrid TS Capture Device)
+ pci:v000014F1d00008802sv00007063sd00003000*
+- ID_MODEL_FROM_DATABASE=pcHDTV HD3000 HDTV
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (pcHDTV HD3000 HDTV)
+ pci:v000014F1d00008802sv00007063sd00005500*
+- ID_MODEL_FROM_DATABASE=pcHDTV HD-5500
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (pcHDTV HD-5500)
+ pci:v000014F1d00008804*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port]
+ pci:v000014F1d00008804sv00000070sd00006902*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (WinTV HVR-4000-HD)
+ pci:v000014F1d00008804sv00000070sd00009002*
+- ID_MODEL_FROM_DATABASE=Nova-T DVB-T Model 909
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (Nova-T DVB-T Model 909)
+ pci:v000014F1d00008804sv00000070sd00009402*
+- ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (WinTV-HVR1100 DVB-T/Hybrid)
+ pci:v000014F1d00008804sv00007063sd00005500*
+- ID_MODEL_FROM_DATABASE=pcHDTV HD-5500
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] (pcHDTV HD-5500)
+ pci:v000014F1d00008811*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port]
+ pci:v000014F1d00008811sv00000070sd00003400*
+- ID_MODEL_FROM_DATABASE=WinTV 34604
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (WinTV 34604)
+ pci:v000014F1d00008811sv00000070sd00003401*
+- ID_MODEL_FROM_DATABASE=Hauppauge WinTV 34xxx models
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (Hauppauge WinTV 34xxx models)
+ pci:v000014F1d00008811sv00000070sd00006902*
+- ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (WinTV HVR-4000-HD)
+ pci:v000014F1d00008811sv00000070sd00009402*
+- ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (WinTV-HVR1100 DVB-T/Hybrid)
+ pci:v000014F1d00008811sv00000070sd00009600*
+- ID_MODEL_FROM_DATABASE=WinTV 88x Audio
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (WinTV 88x Audio)
+ pci:v000014F1d00008811sv00001462sd00008606*
+- ID_MODEL_FROM_DATABASE=MSI TV-@nywhere Master
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (MSI TV-@nywhere Master)
+ pci:v000014F1d00008811sv000018ACsd0000D500*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Gold
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (DViCO FusionHDTV5 Gold)
+ pci:v000014F1d00008811sv000018ACsd0000D810*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-Q
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (DViCO FusionHDTV3 Gold-Q)
+ pci:v000014F1d00008811sv000018ACsd0000D820*
+- ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-T
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (DViCO FusionHDTV3 Gold-T)
+ pci:v000014F1d00008811sv000018ACsd0000DB00*
+- ID_MODEL_FROM_DATABASE=DVICO FusionHDTV DVB-T1
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (DVICO FusionHDTV DVB-T1)
+ pci:v000014F1d00008811sv00005654sd00002388*
+- ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid Audio Capture Device
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (GoTView PCI Hybrid Audio Capture Device)
+ pci:v000014F1d00008852*
+  ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder
+ pci:v000014F1d00008852sv00000070sd00008010*
+- ID_MODEL_FROM_DATABASE=Hauppauge WinTV HVR-1400 ExpressCard
++ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (Hauppauge WinTV HVR-1400 ExpressCard)
+ pci:v000014F1d00008852sv0000107Dsd00006F22*
+- ID_MODEL_FROM_DATABASE=WinFast PxTV1200
++ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (WinFast PxTV1200)
+ pci:v000014F1d00008852sv00001461sd0000C039*
+- ID_MODEL_FROM_DATABASE=AVerTV Hybrid Express (A577)
++ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (AVerTV Hybrid Express (A577))
+ pci:v000014F1d00008852sv0000153Bsd0000117E*
+- ID_MODEL_FROM_DATABASE=Cinergy T PCIe Dual
++ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (Cinergy T PCIe Dual)
+ pci:v000014F1d00008852sv000018ACsd0000DB78*
+- ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Dual Express
++ ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder (FusionHDTV DVB-T Dual Express)
+ pci:v000014F1d00008880*
+  ID_MODEL_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb
+ pci:v000014F1d00008880sv00000070sd0000C108*
+- ID_MODEL_FROM_DATABASE=WinTV-HVR-4400-HD model 1278
++ ID_MODEL_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb (WinTV-HVR-4400-HD model 1278)
+ pci:v000014F1d00008880sv00005654sd00002389*
+- ID_MODEL_FROM_DATABASE=GoTView X5 DVD Hybrid PCI-E
++ ID_MODEL_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb (GoTView X5 DVD Hybrid PCI-E)
+ pci:v000014F1d00008880sv00005654sd00002390*
+- ID_MODEL_FROM_DATABASE=GoTView X5 3D HYBRID PCI-E
++ ID_MODEL_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb (GoTView X5 3D HYBRID PCI-E)
+ pci:v000014F2*
+  ID_VENDOR_FROM_DATABASE=MOBILITY Electronics
+@@ -46842,100 +46842,100 @@ pci:v00001522d00000100*
+  ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge
+ pci:v00001522d00000100sv00001522sd00000200*
+- ID_MODEL_FROM_DATABASE=RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000300*
+- ID_MODEL_FROM_DATABASE=RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000400*
+- ID_MODEL_FROM_DATABASE=RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000500*
+- ID_MODEL_FROM_DATABASE=RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000600*
+- ID_MODEL_FROM_DATABASE=RockForce+ 2 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce+ 2 Port V.90 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000700*
+- ID_MODEL_FROM_DATABASE=RockForce+ 4 Port V.90 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForce+ 4 Port V.90 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000800*
+- ID_MODEL_FROM_DATABASE=RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000C00*
+- ID_MODEL_FROM_DATABASE=RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem)
+ pci:v00001522d00000100sv00001522sd00000D00*
+- ID_MODEL_FROM_DATABASE=RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem)
+ pci:v00001522d00000100sv00001522sd00001D00*
+- ID_MODEL_FROM_DATABASE=RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem)
+ pci:v00001522d00000100sv00001522sd00002000*
+- ID_MODEL_FROM_DATABASE=RockForceD1 1 Port V.90 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceD1 1 Port V.90 Data Modem)
+ pci:v00001522d00000100sv00001522sd00002100*
+- ID_MODEL_FROM_DATABASE=RockForceF1 1 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceF1 1 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00002200*
+- ID_MODEL_FROM_DATABASE=RockForceD2 2 Port V.90 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceD2 2 Port V.90 Data Modem)
+ pci:v00001522d00000100sv00001522sd00002300*
+- ID_MODEL_FROM_DATABASE=RockForceF2 2 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceF2 2 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00002400*
+- ID_MODEL_FROM_DATABASE=RockForceD4 4 Port V.90 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceD4 4 Port V.90 Data Modem)
+ pci:v00001522d00000100sv00001522sd00002500*
+- ID_MODEL_FROM_DATABASE=RockForceF4 4 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceF4 4 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00002600*
+- ID_MODEL_FROM_DATABASE=RockForceD8 8 Port V.90 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceD8 8 Port V.90 Data Modem)
+ pci:v00001522d00000100sv00001522sd00002700*
+- ID_MODEL_FROM_DATABASE=RockForceF8 8 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (RockForceF8 8 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00003000*
+- ID_MODEL_FROM_DATABASE=IQ Express D1 - 1 Port V.92 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express D1 - 1 Port V.92 Data Modem)
+ pci:v00001522d00000100sv00001522sd00003100*
+- ID_MODEL_FROM_DATABASE=IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00003200*
+- ID_MODEL_FROM_DATABASE=IQ Express D2 - 2 Port V.92 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express D2 - 2 Port V.92 Data Modem)
+ pci:v00001522d00000100sv00001522sd00003300*
+- ID_MODEL_FROM_DATABASE=IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00003400*
+- ID_MODEL_FROM_DATABASE=IQ Express D4 - 4 Port V.92 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express D4 - 4 Port V.92 Data Modem)
+ pci:v00001522d00000100sv00001522sd00003500*
+- ID_MODEL_FROM_DATABASE=IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00000100sv00001522sd00003C00*
+- ID_MODEL_FROM_DATABASE=IQ Express D8 - 8 Port V.92 Data Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express D8 - 8 Port V.92 Data Modem)
+ pci:v00001522d00000100sv00001522sd00003D00*
+- ID_MODEL_FROM_DATABASE=IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem
++ ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge (IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem)
+ pci:v00001522d00004000*
+  ID_MODEL_FROM_DATABASE=PCI Express UART
+ pci:v00001522d00004000sv00001522sd00004001*
+- ID_MODEL_FROM_DATABASE=IQ Express 1-port V.34 Super-G3 Fax
++ ID_MODEL_FROM_DATABASE=PCI Express UART (IQ Express 1-port V.34 Super-G3 Fax)
+ pci:v00001522d00004000sv00001522sd00004002*
+- ID_MODEL_FROM_DATABASE=IQ Express 2-port V.34 Super-G3 Fax
++ ID_MODEL_FROM_DATABASE=PCI Express UART (IQ Express 2-port V.34 Super-G3 Fax)
+ pci:v00001522d00004000sv00001522sd00004004*
+- ID_MODEL_FROM_DATABASE=IQ Express 4-port V.34 Super-G3 Fax
++ ID_MODEL_FROM_DATABASE=PCI Express UART (IQ Express 4-port V.34 Super-G3 Fax)
+ pci:v00001522d00004000sv00001522sd00004008*
+- ID_MODEL_FROM_DATABASE=IQ Express 8-port V.34 Super-G3 Fax
++ ID_MODEL_FROM_DATABASE=PCI Express UART (IQ Express 8-port V.34 Super-G3 Fax)
+ pci:v00001522d00004000sv00001522sd00004100*
+- ID_MODEL_FROM_DATABASE=IQ Express SideBand
++ ID_MODEL_FROM_DATABASE=PCI Express UART (IQ Express SideBand)
+ pci:v00001523*
+  ID_VENDOR_FROM_DATABASE=MUSIC Semiconductors
+@@ -46947,7 +46947,7 @@ pci:v00001524d00000510*
+  ID_MODEL_FROM_DATABASE=CB710 Memory Card Reader Controller
+ pci:v00001524d00000510sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=CB710 Memory Card Reader Controller (NX9500)
+ pci:v00001524d00000520*
+  ID_MODEL_FROM_DATABASE=FLASH memory: ENE Technology Inc:
+@@ -46986,16 +46986,16 @@ pci:v00001524d00001410*
+  ID_MODEL_FROM_DATABASE=CB1410 Cardbus Controller
+ pci:v00001524d00001410sv00001025sd0000003C*
+- ID_MODEL_FROM_DATABASE=CL50 motherboard
++ ID_MODEL_FROM_DATABASE=CB1410 Cardbus Controller (CL50 motherboard)
+ pci:v00001524d00001410sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=CB1410 Cardbus Controller (TravelMate 290)
+ pci:v00001524d00001411*
+  ID_MODEL_FROM_DATABASE=CB-710/2/4 Cardbus Controller
+ pci:v00001524d00001411sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=CB-710/2/4 Cardbus Controller (NX9500)
+ pci:v00001524d00001412*
+  ID_MODEL_FROM_DATABASE=CB-712/4 Cardbus Controller
+@@ -47598,7 +47598,7 @@ pci:v000015ADd00000801*
+  ID_MODEL_FROM_DATABASE=Virtual Machine Interface
+ pci:v000015ADd00000801sv000015ADsd00000800*
+- ID_MODEL_FROM_DATABASE=Hypervisor ROM Interface
++ ID_MODEL_FROM_DATABASE=Virtual Machine Interface (Hypervisor ROM Interface)
+ pci:v000015ADd00001977*
+  ID_MODEL_FROM_DATABASE=HD Audio Controller
+@@ -47748,10 +47748,10 @@ pci:v000015B3d00006746*
+  ID_MODEL_FROM_DATABASE=MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+]
+ pci:v000015B3d00006746sv0000103Csd00001781*
+- ID_MODEL_FROM_DATABASE=NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter
++ ID_MODEL_FROM_DATABASE=MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] (NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter)
+ pci:v000015B3d00006746sv0000103Csd00003349*
+- ID_MODEL_FROM_DATABASE=NC543i 2-port 4xQDR IB/10Gb Adapter
++ ID_MODEL_FROM_DATABASE=MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] (NC543i 2-port 4xQDR IB/10Gb Adapter)
+ pci:v000015B3d00006750*
+  ID_MODEL_FROM_DATABASE=MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
+@@ -47763,7 +47763,7 @@ pci:v000015B3d00006764*
+  ID_MODEL_FROM_DATABASE=MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+]
+ pci:v000015B3d00006764sv0000103Csd00003313*
+- ID_MODEL_FROM_DATABASE=HP NC542m Dual Port Flex-10 10GbE BLc Adapter
++ ID_MODEL_FROM_DATABASE=MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] (HP NC542m Dual Port Flex-10 10GbE BLc Adapter)
+ pci:v000015B3d0000676E*
+  ID_MODEL_FROM_DATABASE=MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s]
+@@ -47886,13 +47886,13 @@ pci:v000015BCd00000105*
+  ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES
+ pci:v000015BCd00000105sv0000117Csd00000022*
+- ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES (Celerity FC-42XS Fibre Channel Adapter)
+ pci:v000015BCd00000105sv0000117Csd00000025*
+- ID_MODEL_FROM_DATABASE=Celerity FC-44ES Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES (Celerity FC-44ES Fibre Channel Adapter)
+ pci:v000015BCd00000105sv0000117Csd00000026*
+- ID_MODEL_FROM_DATABASE=Celerity FC-42ES Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES (Celerity FC-42ES Fibre Channel Adapter)
+ pci:v000015BCd00001100*
+  ID_MODEL_FROM_DATABASE=E8001-66442 PCI Express CIC
+@@ -48306,34 +48306,34 @@ pci:v00001657d00000013*
+  ID_MODEL_FROM_DATABASE=425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA
+ pci:v00001657d00000013sv0000103Csd00001742*
+- ID_MODEL_FROM_DATABASE=HP 82B 8Gbps dual port FC HBA
++ ID_MODEL_FROM_DATABASE=425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA (HP 82B 8Gbps dual port FC HBA)
+ pci:v00001657d00000013sv0000103Csd00001744*
+- ID_MODEL_FROM_DATABASE=HP 42B 4Gbps dual port FC HBA
++ ID_MODEL_FROM_DATABASE=425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA (HP 42B 4Gbps dual port FC HBA)
+ pci:v00001657d00000013sv00001657sd00000014*
+- ID_MODEL_FROM_DATABASE=425/825 4Gbps/8Gbps PCIe dual port FC HBA
++ ID_MODEL_FROM_DATABASE=425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA (425/825 4Gbps/8Gbps PCIe dual port FC HBA)
+ pci:v00001657d00000014*
+  ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA
+ pci:v00001657d00000014sv00001657sd00000014*
+- ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - FCOE
++ ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA (- FCOE)
+ pci:v00001657d00000014sv00001657sd00000015*
+- ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - LL
++ ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA (- LL)
+ pci:v00001657d00000017*
+  ID_MODEL_FROM_DATABASE=415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA
+ pci:v00001657d00000017sv0000103Csd00001741*
+- ID_MODEL_FROM_DATABASE=HP 41B 4Gbps single port FC HBA
++ ID_MODEL_FROM_DATABASE=415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA (HP 41B 4Gbps single port FC HBA)
+ pci:v00001657d00000017sv0000103Csd00001743*
+- ID_MODEL_FROM_DATABASE=HP 81B 8Gbps single port FC HBA
++ ID_MODEL_FROM_DATABASE=415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA (HP 81B 8Gbps single port FC HBA)
+ pci:v00001657d00000017sv00001657sd00000014*
+- ID_MODEL_FROM_DATABASE=415/815 4Gbps/8Gbps single port PCIe FC HBA
++ ID_MODEL_FROM_DATABASE=415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA (415/815 4Gbps/8Gbps single port PCIe FC HBA)
+ pci:v00001657d00000021*
+  ID_MODEL_FROM_DATABASE=804 8Gbps FC HBA for HP Bladesystem c-class
+@@ -48342,13 +48342,13 @@ pci:v00001657d00000022*
+  ID_MODEL_FROM_DATABASE=1860 16Gbps/10Gbps Fabric Adapter
+ pci:v00001657d00000022sv00001657sd00000022*
+- ID_MODEL_FROM_DATABASE=10Gbps CNA - FCOE
++ ID_MODEL_FROM_DATABASE=1860 16Gbps/10Gbps Fabric Adapter (10Gbps CNA - FCOE)
+ pci:v00001657d00000022sv00001657sd00000023*
+- ID_MODEL_FROM_DATABASE=10Gbps CNA - LL
++ ID_MODEL_FROM_DATABASE=1860 16Gbps/10Gbps Fabric Adapter (10Gbps CNA - LL)
+ pci:v00001657d00000022sv00001657sd00000024*
+- ID_MODEL_FROM_DATABASE=16Gbps FC HBA
++ ID_MODEL_FROM_DATABASE=1860 16Gbps/10Gbps Fabric Adapter (16Gbps FC HBA)
+ pci:v00001657d00000023*
+  ID_MODEL_FROM_DATABASE=1867/1869 16Gbps FC HBA
+@@ -48435,10 +48435,10 @@ pci:v0000167Bd00002102*
+  ID_MODEL_FROM_DATABASE=ZyDAS ZD1202
+ pci:v0000167Bd00002102sv0000187Esd00003406*
+- ID_MODEL_FROM_DATABASE=ZyAIR B-122 CardBus 11Mbs Wireless LAN Card
++ ID_MODEL_FROM_DATABASE=ZyDAS ZD1202 (ZyAIR B-122 CardBus 11Mbs Wireless LAN Card)
+ pci:v0000167Bd00002102sv0000187Esd00003407*
+- ID_MODEL_FROM_DATABASE=ZyAIR B-320 802.11b Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=ZyDAS ZD1202 (ZyAIR B-320 802.11b Wireless PCI Adapter)
+ pci:v0000167Bd00002116*
+  ID_MODEL_FROM_DATABASE=ZD1212B Wireless Adapter
+@@ -48471,16 +48471,16 @@ pci:v0000168Cd00000007*
+  ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a]
+ pci:v0000168Cd00000007sv00001737sd00000007*
+- ID_MODEL_FROM_DATABASE=WPC54A Wireless PC Card
++ ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] (WPC54A Wireless PC Card)
+ pci:v0000168Cd00000007sv00001B47sd00000100*
+- ID_MODEL_FROM_DATABASE=Harmony 8450CN Wireless CardBus Module
++ ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] (Harmony 8450CN Wireless CardBus Module)
+ pci:v0000168Cd00000007sv00001B47sd00000110*
+- ID_MODEL_FROM_DATABASE=Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] (Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter)
+ pci:v0000168Cd00000007sv00008086sd00002501*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 5000 LAN PCI Adapter Module
++ ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] (PRO/Wireless 5000 LAN PCI Adapter Module)
+ pci:v0000168Cd00000011*
+  ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001A 802.11a]
+@@ -48489,562 +48489,562 @@ pci:v0000168Cd00000012*
+  ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab]
+ pci:v0000168Cd00000012sv00001186sd00003A03*
+- ID_MODEL_FROM_DATABASE=AirPro DWL-A650 Wireless Cardbus Adapter (rev.B)
++ ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (AirPro DWL-A650 Wireless Cardbus Adapter (rev.B))
+ pci:v0000168Cd00000012sv00001186sd00003A04*
+- ID_MODEL_FROM_DATABASE=AirPro DWL-AB650 Multimode Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (AirPro DWL-AB650 Multimode Wireless Cardbus Adapter)
+ pci:v0000168Cd00000012sv00001186sd00003A05*
+- ID_MODEL_FROM_DATABASE=AirPro DWL-AB520 Multimode Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (AirPro DWL-AB520 Multimode Wireless PCI Adapter)
+ pci:v0000168Cd00000012sv0000126Csd00008031*
+- ID_MODEL_FROM_DATABASE=2201 Mobile Adapter
++ ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (2201 Mobile Adapter)
+ pci:v0000168Cd00000012sv00001385sd00004400*
+- ID_MODEL_FROM_DATABASE=WAB501 802.11ab Wireless CardBus Card
++ ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (WAB501 802.11ab Wireless CardBus Card)
+ pci:v0000168Cd00000012sv00001B47sd0000AA00*
+- ID_MODEL_FROM_DATABASE=8460 802.11ab Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] (8460 802.11ab Wireless CardBus Adapter)
+ pci:v0000168Cd00000013*
+  ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter
+ pci:v0000168Cd00000013sv00000308sd00003402*
+- ID_MODEL_FROM_DATABASE=AG-100 802.11ag Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AG-100 802.11ag Wireless Cardbus Adapter)
+ pci:v0000168Cd00000013sv00000308sd00003405*
+- ID_MODEL_FROM_DATABASE=G-102 v2 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (G-102 v2 802.11g Wireless Cardbus Adapter)
+ pci:v0000168Cd00000013sv00000308sd00003408*
+- ID_MODEL_FROM_DATABASE=G-170S 802.11g Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (G-170S 802.11g Wireless CardBus Adapter)
+ pci:v0000168Cd00000013sv00000E11sd000000E5*
+- ID_MODEL_FROM_DATABASE=NC6000/NC8000 laptop
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (NC6000/NC8000 laptop)
+ pci:v0000168Cd00000013sv000010B7sd00006002*
+- ID_MODEL_FROM_DATABASE=3CRWE154A72 802.11abg Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (3CRWE154A72 802.11abg Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001113sd0000D301*
+- ID_MODEL_FROM_DATABASE=Philips CPWNA100 Wireless CardBus adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Philips CPWNA100 Wireless CardBus adapter)
+ pci:v0000168Cd00000013sv00001113sd0000EE23*
+- ID_MODEL_FROM_DATABASE=SMCWPCIT-G 108Mbps Wireless PCI adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (SMCWPCIT-G 108Mbps Wireless PCI adapter)
+ pci:v0000168Cd00000013sv00001154sd0000033B*
+- ID_MODEL_FROM_DATABASE=Buffalo WLI-CB-AMG54
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Buffalo WLI-CB-AMG54)
+ pci:v0000168Cd00000013sv00001154sd0000034E*
+- ID_MODEL_FROM_DATABASE=Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003202*
+- ID_MODEL_FROM_DATABASE=DWL-G650 (Rev B3,B5) Wireless cardbus adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (DWL-G650 (Rev B3,B5) Wireless cardbus adapter)
+ pci:v0000168Cd00000013sv00001186sd00003203*
+- ID_MODEL_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. A)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. A))
+ pci:v0000168Cd00000013sv00001186sd00003A07*
+- ID_MODEL_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirXpert DWL-AG650 Wireless Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003A08*
+- ID_MODEL_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirXpert DWL-AG520 Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003A12*
+- ID_MODEL_FROM_DATABASE=D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C))
+ pci:v0000168Cd00000013sv00001186sd00003A13*
+- ID_MODEL_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. B)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus DWL-G520 Wireless PCI Adapter (rev. B))
+ pci:v0000168Cd00000013sv00001186sd00003A14*
+- ID_MODEL_FROM_DATABASE=AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A))
+ pci:v0000168Cd00000013sv00001186sd00003A17*
+- ID_MODEL_FROM_DATABASE=D-Link AirPremier DWL-G680 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-G680 Wireless Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003A18*
+- ID_MODEL_FROM_DATABASE=D-Link AirPremier DWL-G550 Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-G550 Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003A1A*
+- ID_MODEL_FROM_DATABASE=WNA-2330 802.11bg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WNA-2330 802.11bg Wireless CardBus Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003A63*
+- ID_MODEL_FROM_DATABASE=D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003A93*
+- ID_MODEL_FROM_DATABASE=Conceptronic C54I Wireless 801.11g PCI card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Conceptronic C54I Wireless 801.11g PCI card)
+ pci:v0000168Cd00000013sv00001186sd00003A94*
+- ID_MODEL_FROM_DATABASE=Conceptronic C54C 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Conceptronic C54C 802.11g Wireless Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001186sd00003AB0*
+- ID_MODEL_FROM_DATABASE=Allnet ALL0281 Wireless PCI Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Allnet ALL0281 Wireless PCI Card)
+ pci:v0000168Cd00000013sv00001385sd00004600*
+- ID_MODEL_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card)
+ pci:v0000168Cd00000013sv00001385sd00004610*
+- ID_MODEL_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG511 802.11a/b/g Dual Band Wireless PC Card)
+ pci:v0000168Cd00000013sv00001385sd00004900*
+- ID_MODEL_FROM_DATABASE=WG311v1 802.11g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311v1 802.11g Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv00001385sd00004A00*
+- ID_MODEL_FROM_DATABASE=WAG311 802.11a/g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WAG311 802.11a/g Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv00001385sd00004B00*
+- ID_MODEL_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.A/B)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.A/B))
+ pci:v0000168Cd00000013sv00001385sd00004D00*
+- ID_MODEL_FROM_DATABASE=WG311T 108 Mbps Wireless PCI Adapter (rev.A2)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A2))
+ pci:v0000168Cd00000013sv00001385sd00004F00*
+- ID_MODEL_FROM_DATABASE=WG511U Double 108 Mbps Wireless PC Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511U Double 108 Mbps Wireless PC Card)
+ pci:v0000168Cd00000013sv00001385sd00005A00*
+- ID_MODEL_FROM_DATABASE=WG311T 108 Mbps Wireless PCI Adapter (rev.A3)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG311T 108 Mbps Wireless PCI Adapter (rev.A3))
+ pci:v0000168Cd00000013sv00001385sd00005B00*
+- ID_MODEL_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.C)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WG511T 108 Mbps Wireless PC Card (rev.C))
+ pci:v0000168Cd00000013sv00001385sd00005D00*
+- ID_MODEL_FROM_DATABASE=WPN511 RangeMax Wireless PC Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPN511 RangeMax Wireless PC Card)
+ pci:v0000168Cd00000013sv00001458sd0000E911*
+- ID_MODEL_FROM_DATABASE=GN-WIAG02
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (GN-WIAG02)
+ pci:v0000168Cd00000013sv00001468sd00000403*
+- ID_MODEL_FROM_DATABASE=U10H014 802.11g Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (U10H014 802.11g Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001468sd00000408*
+- ID_MODEL_FROM_DATABASE=ThinkPad 11b/g Wireless LAN Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (ThinkPad 11b/g Wireless LAN Mini PCI Adapter)
+ pci:v0000168Cd00000013sv000014B7sd00000A10*
+- ID_MODEL_FROM_DATABASE=8480-WD 802.11abg Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8480-WD 802.11abg Cardbus Adapter)
+ pci:v0000168Cd00000013sv000014B7sd00000A60*
+- ID_MODEL_FROM_DATABASE=8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv000014B7sd0000AA30*
+- ID_MODEL_FROM_DATABASE=8800-FC 802.11bg Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8800-FC 802.11bg Cardbus Adapter)
+ pci:v0000168Cd00000013sv000014B7sd0000AA40*
+- ID_MODEL_FROM_DATABASE=8470-WD 802.11bg Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (8470-WD 802.11bg Cardbus Adapter)
+ pci:v0000168Cd00000013sv000014B9sd0000CB21*
+- ID_MODEL_FROM_DATABASE=CB21 802.11a/b/g Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (CB21 802.11a/b/g Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001668sd00001026*
+- ID_MODEL_FROM_DATABASE=IBM HighRate 11 a/b/g Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (IBM HighRate 11 a/b/g Wireless CardBus Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00000013*
+- ID_MODEL_FROM_DATABASE=AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00001025*
+- ID_MODEL_FROM_DATABASE=DWL-G650B2 Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (DWL-G650B2 Wireless CardBus Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00001027*
+- ID_MODEL_FROM_DATABASE=Engenius NL-3054CB ARIES b/g CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius NL-3054CB ARIES b/g CardBus Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00001042*
+- ID_MODEL_FROM_DATABASE=Ubiquiti Networks SuperRange a/b/g Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Ubiquiti Networks SuperRange a/b/g Cardbus Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00001051*
+- ID_MODEL_FROM_DATABASE=EZ Connect g 802.11g 108Mbps Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (EZ Connect g 802.11g 108Mbps Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00002026*
+- ID_MODEL_FROM_DATABASE=Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00002027*
+- ID_MODEL_FROM_DATABASE=D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A)
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A))
+ pci:v0000168Cd00000013sv0000168Csd00002041*
+- ID_MODEL_FROM_DATABASE=Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00002042*
+- ID_MODEL_FROM_DATABASE=Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter)
+ pci:v0000168Cd00000013sv0000168Csd00002051*
+- ID_MODEL_FROM_DATABASE=TRENDnet TEW-443PI Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (TRENDnet TEW-443PI Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv000016A5sd0000160A*
+- ID_MODEL_FROM_DATABASE=BWP712 802.11bg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (BWP712 802.11bg Wireless CardBus Adapter)
+ pci:v0000168Cd00000013sv000016ABsd00007302*
+- ID_MODEL_FROM_DATABASE=Trust Speedshare Turbo Pro Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Trust Speedshare Turbo Pro Wireless PCI Adapter)
+ pci:v0000168Cd00000013sv00001737sd00000017*
+- ID_MODEL_FROM_DATABASE=WPC55AG
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPC55AG)
+ pci:v0000168Cd00000013sv00001737sd00000026*
+- ID_MODEL_FROM_DATABASE=WMP55AG v1.1
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WMP55AG v1.1)
+ pci:v0000168Cd00000013sv00001737sd00000035*
+- ID_MODEL_FROM_DATABASE=WPC55AG v1.2 802.11abg Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WPC55AG v1.2 802.11abg Cardbus Adapter)
+ pci:v0000168Cd00000013sv00001737sd00000036*
+- ID_MODEL_FROM_DATABASE=WMP55AG v1.2 802.11abg PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (WMP55AG v1.2 802.11abg PCI Adapter)
+ pci:v0000168Cd00000013sv00001799sd00003000*
+- ID_MODEL_FROM_DATABASE=F6D3000 Dual-Band Wireless A+G Desktop Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (F6D3000 Dual-Band Wireless A+G Desktop Card)
+ pci:v0000168Cd00000013sv00001799sd00003010*
+- ID_MODEL_FROM_DATABASE=F6D3010 Dual-Band Wireless A+G Notebook Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (F6D3010 Dual-Band Wireless A+G Notebook Card)
+ pci:v0000168Cd00000013sv000017CFsd00000042*
+- ID_MODEL_FROM_DATABASE=Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter)
+ pci:v0000168Cd00000013sv0000185Fsd00001012*
+- ID_MODEL_FROM_DATABASE=CM9 Wireless a/b/g MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (CM9 Wireless a/b/g MiniPCI Adapter)
+ pci:v0000168Cd00000013sv0000185Fsd00002012*
+- ID_MODEL_FROM_DATABASE=Wistron NeWeb WLAN a+b+g model CB9
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (Wistron NeWeb WLAN a+b+g model CB9)
+ pci:v0000168Cd00000013sv0000A727sd00006801*
+- ID_MODEL_FROM_DATABASE=3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card
++ ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter (3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card)
+ pci:v0000168Cd0000001A*
+  ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg]
+ pci:v0000168Cd0000001Asv00001052sd0000168C*
+- ID_MODEL_FROM_DATABASE=Sweex Wireless Lan PC Card 54Mbps
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (Sweex Wireless Lan PC Card 54Mbps)
+ pci:v0000168Cd0000001Asv00001113sd0000EE20*
+- ID_MODEL_FROM_DATABASE=SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU)
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU))
+ pci:v0000168Cd0000001Asv00001113sd0000EE24*
+- ID_MODEL_FROM_DATABASE=SMC Wireless PCI Card WPCI-G
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (SMC Wireless PCI Card WPCI-G)
+ pci:v0000168Cd0000001Asv00001186sd00003A15*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1)
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1))
+ pci:v0000168Cd0000001Asv00001186sd00003A16*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G510 Wireless PCI Adapter(rev.B)
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (AirPlus G DWL-G510 Wireless PCI Adapter(rev.B))
+ pci:v0000168Cd0000001Asv00001186sd00003A1C*
+- ID_MODEL_FROM_DATABASE=WNA-1330 Notebook Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (WNA-1330 Notebook Adapter)
+ pci:v0000168Cd0000001Asv00001186sd00003A1D*
+- ID_MODEL_FROM_DATABASE=WDA-1320 Desktop Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (WDA-1320 Desktop Adapter)
+ pci:v0000168Cd0000001Asv00001186sd00003A23*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G520+A Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (AirPlus G DWL-G520+A Wireless PCI Adapter)
+ pci:v0000168Cd0000001Asv00001186sd00003A24*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G650+A Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (AirPlus G DWL-G650+A Wireless Cardbus Adapter)
+ pci:v0000168Cd0000001Asv00001186sd00003B08*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1)
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1))
+ pci:v0000168Cd0000001Asv0000168Csd0000001A*
+- ID_MODEL_FROM_DATABASE=Belkin FD7000
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (Belkin FD7000)
+ pci:v0000168Cd0000001Asv0000168Csd00001052*
+- ID_MODEL_FROM_DATABASE=TP-Link TL-WN510G Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (TP-Link TL-WN510G Wireless CardBus Adapter)
+ pci:v0000168Cd0000001Asv0000168Csd00002052*
+- ID_MODEL_FROM_DATABASE=Compex Wireless 802.11 b/g  MiniPCI Adapter, Rev A1 [WLM54G]
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (Compex Wireless 802.11 b/g  MiniPCI Adapter, Rev A1 [WLM54G])
+ pci:v0000168Cd0000001Asv000016ECsd00000122*
+- ID_MODEL_FROM_DATABASE=Wireless PCI Adapter Model 5418
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (Wireless PCI Adapter Model 5418)
+ pci:v0000168Cd0000001Asv00001737sd00000053*
+- ID_MODEL_FROM_DATABASE=WPC54G v7 802.11g Wireless-G Notebook Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (WPC54G v7 802.11g Wireless-G Notebook Adapter)
+ pci:v0000168Cd0000001Asv00001799sd0000700C*
+- ID_MODEL_FROM_DATABASE=F5D7000 v5000 Wireless G Desktop Card
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (F5D7000 v5000 Wireless G Desktop Card)
+ pci:v0000168Cd0000001Asv00001799sd0000701D*
+- ID_MODEL_FROM_DATABASE=F5D7010 v5000 Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (F5D7010 v5000 Wireless G Notebook Card)
+ pci:v0000168Cd0000001Asv000017F9sd00000008*
+- ID_MODEL_FROM_DATABASE=DX-WGNBC 802.11bg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (DX-WGNBC 802.11bg Wireless CardBus Adapter)
+ pci:v0000168Cd0000001Asv000017F9sd00000018*
+- ID_MODEL_FROM_DATABASE=DX-WGDTC 802.11bg Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] (DX-WGDTC 802.11bg Wireless PCI Adapter)
+ pci:v0000168Cd0000001B*
+  ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg]
+ pci:v0000168Cd0000001Bsv00000777sd00001107*
+- ID_MODEL_FROM_DATABASE=UB5 802.11a Wireless Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (UB5 802.11a Wireless Mini PCI Adapter)
+ pci:v0000168Cd0000001Bsv00000777sd00003002*
+- ID_MODEL_FROM_DATABASE=XR2 802.11g Wireless Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (XR2 802.11g Wireless Mini PCI Adapter)
+ pci:v0000168Cd0000001Bsv00000777sd00003005*
+- ID_MODEL_FROM_DATABASE=XR5 802.11a Wireless Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (XR5 802.11a Wireless Mini PCI Adapter)
+ pci:v0000168Cd0000001Bsv00000777sd00003009*
+- ID_MODEL_FROM_DATABASE=XR9 900MHz Wireless Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (XR9 900MHz Wireless Mini PCI Adapter)
+ pci:v0000168Cd0000001Bsv00001154sd0000034E*
+- ID_MODEL_FROM_DATABASE=WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter)
+ pci:v0000168Cd0000001Bsv00001186sd00003A19*
+- ID_MODEL_FROM_DATABASE=D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter)
+ pci:v0000168Cd0000001Bsv00001186sd00003A22*
+- ID_MODEL_FROM_DATABASE=AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B)
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B))
+ pci:v0000168Cd0000001Bsv000011ADsd00005001*
+- ID_MODEL_FROM_DATABASE=WN5301A 802.11bg Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (WN5301A 802.11bg Wireless PCI Adapter)
+ pci:v0000168Cd0000001Bsv00001458sd0000E901*
+- ID_MODEL_FROM_DATABASE=GN-WI01HT Wireless a/b/g MiniPCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (GN-WI01HT Wireless a/b/g MiniPCI Adapter)
+ pci:v0000168Cd0000001Bsv0000168Csd0000001B*
+- ID_MODEL_FROM_DATABASE=Wireless LAN PCI LiteOn
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (Wireless LAN PCI LiteOn)
+ pci:v0000168Cd0000001Bsv0000168Csd00001062*
+- ID_MODEL_FROM_DATABASE=IPN-W100CB 802.11abg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (IPN-W100CB 802.11abg Wireless CardBus Adapter)
+ pci:v0000168Cd0000001Bsv0000168Csd00002062*
+- ID_MODEL_FROM_DATABASE=EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG)
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG))
+ pci:v0000168Cd0000001Bsv0000168Csd00002063*
+- ID_MODEL_FROM_DATABASE=EnGenius EMP-8602 (400mw) or Compex WLM54AG
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (EnGenius EMP-8602 (400mw) or Compex WLM54AG)
+ pci:v0000168Cd0000001Bsv000017F9sd0000000B*
+- ID_MODEL_FROM_DATABASE=WL-711A 802.11abg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (WL-711A 802.11abg Wireless CardBus Adapter)
+ pci:v0000168Cd0000001Bsv000017F9sd0000000C*
+- ID_MODEL_FROM_DATABASE=WPIA-112AG 802.11abg Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (WPIA-112AG 802.11abg Wireless PCI Adapter)
+ pci:v0000168Cd0000001Bsv000017F9sd0000000D*
+- ID_MODEL_FROM_DATABASE=PC-686X 802.11abg Wireless Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (PC-686X 802.11abg Wireless Mini PCI Adapter)
+ pci:v0000168Cd0000001Bsv0000185Fsd00001600*
+- ID_MODEL_FROM_DATABASE=DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW)
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW))
+ pci:v0000168Cd0000001Bsv00001948sd00003ABA*
+- ID_MODEL_FROM_DATABASE=RBTBJ-AW 802.11abg Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (RBTBJ-AW 802.11abg Wireless Cardbus Adapter)
+ pci:v0000168Cd0000001Bsv0000A727sd00006804*
+- ID_MODEL_FROM_DATABASE=Wireless 11a/b/g PC Card with XJACK(r) Antenna
++ ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] (Wireless 11a/b/g PC Card with XJACK(r) Antenna)
+ pci:v0000168Cd0000001C*
+  ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express)
+ pci:v0000168Cd0000001Csv00000777sd00003006*
+- ID_MODEL_FROM_DATABASE=SRX 802.11abg Wireless ExpressCard Adapter
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (SRX 802.11abg Wireless ExpressCard Adapter)
+ pci:v0000168Cd0000001Csv0000103Csd0000137A*
+- ID_MODEL_FROM_DATABASE=AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC)
+ pci:v0000168Cd0000001Csv0000106Bsd00000086*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AirPort Extreme)
+ pci:v0000168Cd0000001Csv0000144Fsd00007106*
+- ID_MODEL_FROM_DATABASE=WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card)
+ pci:v0000168Cd0000001Csv0000144Fsd00007128*
+- ID_MODEL_FROM_DATABASE=WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card)
+ pci:v0000168Cd0000001Csv00001468sd00000428*
+- ID_MODEL_FROM_DATABASE=AR5BXB63 802.11bg NIC
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5BXB63 802.11bg NIC)
+ pci:v0000168Cd0000001Csv00001468sd0000042A*
+- ID_MODEL_FROM_DATABASE=AR5007EG 802.11bg NIC
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5007EG 802.11bg NIC)
+ pci:v0000168Cd0000001Csv0000147Bsd00001033*
+- ID_MODEL_FROM_DATABASE=AirPace Wi-Fi
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AirPace Wi-Fi)
+ pci:v0000168Cd0000001Csv0000168Csd0000001C*
+- ID_MODEL_FROM_DATABASE=AR242x 802.11abg NIC (PCI Express)
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR242x 802.11abg NIC (PCI Express))
+ pci:v0000168Cd0000001Csv0000168Csd00003061*
+- ID_MODEL_FROM_DATABASE=AR5006EGS 802.11bg NIC (2.4GHz, PCI Express)
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5006EGS 802.11bg NIC (2.4GHz, PCI Express))
+ pci:v0000168Cd0000001Csv0000168Csd00003062*
+- ID_MODEL_FROM_DATABASE=AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express)
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express))
+ pci:v0000168Cd0000001Csv0000168Csd00003063*
+- ID_MODEL_FROM_DATABASE=AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express)
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express))
+ pci:v0000168Cd0000001Csv0000168Csd00003065*
+- ID_MODEL_FROM_DATABASE=AR5006EG 802.11bg NIC (2.4GHz, PCI Express)
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR5006EG 802.11bg NIC (2.4GHz, PCI Express))
+ pci:v0000168Cd0000001Csv0000168Csd00003067*
+- ID_MODEL_FROM_DATABASE=AR242x 802.11abg Wireless PCI Express Adapter (rev 01)
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AR242x 802.11abg Wireless PCI Express Adapter (rev 01))
+ pci:v0000168Cd0000001Csv00001A3Bsd00001026*
+- ID_MODEL_FROM_DATABASE=AW-GE780 802.11bg Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) (AW-GE780 802.11bg Wireless Mini PCIe Card)
+ pci:v0000168Cd0000001D*
+  ID_MODEL_FROM_DATABASE=AR2417 Wireless Network Adapter [AR5007G 802.11bg]
+ pci:v0000168Cd0000001Dsv00001799sd0000720B*
+- ID_MODEL_FROM_DATABASE=F5D7000 v8000 Wireless G Desktop Card
++ ID_MODEL_FROM_DATABASE=AR2417 Wireless Network Adapter [AR5007G 802.11bg] (F5D7000 v8000 Wireless G Desktop Card)
+ pci:v0000168Cd0000001Dsv00001799sd0000721B*
+- ID_MODEL_FROM_DATABASE=F5D7010 v8000 Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=AR2417 Wireless Network Adapter [AR5007G 802.11bg] (F5D7010 v8000 Wireless G Notebook Card)
+ pci:v0000168Cd00000020*
+  ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC
+ pci:v0000168Cd00000020sv00000308sd00003407*
+- ID_MODEL_FROM_DATABASE=M-102 802.11g Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC (M-102 802.11g Wireless Cardbus Adapter)
+ pci:v0000168Cd00000020sv00001186sd00003A67*
+- ID_MODEL_FROM_DATABASE=DWL-G650M Super G MIMO Wireless Notebook Adapter
++ ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC (DWL-G650M Super G MIMO Wireless Notebook Adapter)
+ pci:v0000168Cd00000020sv00001186sd00003A68*
+- ID_MODEL_FROM_DATABASE=DWL-G520M Wireless 108G MIMO Desktop Adapter
++ ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC (DWL-G520M Wireless 108G MIMO Desktop Adapter)
+ pci:v0000168Cd00000020sv0000187Esd0000340E*
+- ID_MODEL_FROM_DATABASE=M-302 802.11g Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC (M-302 802.11g Wireless PCI Adapter)
+ pci:v0000168Cd00000020sv00001976sd00002003*
+- ID_MODEL_FROM_DATABASE=TEW-601PC 802.11g Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC (TEW-601PC 802.11g Wireless CardBus Adapter)
+ pci:v0000168Cd00000023*
+  ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn]
+ pci:v0000168Cd00000023sv00000308sd0000340B*
+- ID_MODEL_FROM_DATABASE=NWD-170N 802.11bgn Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (NWD-170N 802.11bgn Wireless CardBus Adapter)
+ pci:v0000168Cd00000023sv00001154sd00000365*
+- ID_MODEL_FROM_DATABASE=Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter)
+ pci:v0000168Cd00000023sv00001154sd00000367*
+- ID_MODEL_FROM_DATABASE=WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter)
+ pci:v0000168Cd00000023sv00001186sd00003A6A*
+- ID_MODEL_FROM_DATABASE=DWA-642 802.11n RangeBooster N CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (DWA-642 802.11n RangeBooster N CardBus Adapter)
+ pci:v0000168Cd00000023sv00001186sd00003A6B*
+- ID_MODEL_FROM_DATABASE=DWA-547 802.11n RangeBooster N 650 DeskTop Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (DWA-547 802.11n RangeBooster N 650 DeskTop Adapter)
+ pci:v0000168Cd00000023sv00001186sd00003A6D*
+- ID_MODEL_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A1)
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (DWA-552 802.11n Xtreme N Desktop Adapter (rev A1))
+ pci:v0000168Cd00000023sv00001186sd00003A76*
+- ID_MODEL_FROM_DATABASE=DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1)
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1))
+ pci:v0000168Cd00000023sv00001737sd00000059*
+- ID_MODEL_FROM_DATABASE=WPC300N v2 Wireless-N Notebook Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (WPC300N v2 Wireless-N Notebook Adapter)
+ pci:v0000168Cd00000023sv00001737sd00000069*
+- ID_MODEL_FROM_DATABASE=WPC100 v1 802.11n RangePlus Wireless Notebook Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (WPC100 v1 802.11n RangePlus Wireless Notebook Adapter)
+ pci:v0000168Cd00000023sv00001737sd00000072*
+- ID_MODEL_FROM_DATABASE=WMP110 v1 802.11n RangePlus Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (WMP110 v1 802.11n RangePlus Wireless PCI Adapter)
+ pci:v0000168Cd00000023sv00001799sd00008011*
+- ID_MODEL_FROM_DATABASE=F5D8011 v1 802.11n N1 Wireless Notebook Card
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (F5D8011 v1 802.11n N1 Wireless Notebook Card)
+ pci:v0000168Cd00000023sv0000187Esd00003411*
+- ID_MODEL_FROM_DATABASE=NWD-370N 802.11n Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (NWD-370N 802.11n Wireless PCI Adapter)
+ pci:v0000168Cd00000023sv00001976sd00002008*
+- ID_MODEL_FROM_DATABASE=TEW-621PC 802.11bgn Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] (TEW-621PC 802.11bgn Wireless CardBus Adapter)
+ pci:v0000168Cd00000024*
+  ID_MODEL_FROM_DATABASE=AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express)
+ pci:v0000168Cd00000024sv0000106Bsd00000087*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) (AirPort Extreme)
+ pci:v0000168Cd00000024sv00001186sd00003A70*
+- ID_MODEL_FROM_DATABASE=DWA-556 Xtreme N PCI Express Desktop Adapter
++ ID_MODEL_FROM_DATABASE=AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) (DWA-556 Xtreme N PCI Express Desktop Adapter)
+ pci:v0000168Cd00000027*
+  ID_MODEL_FROM_DATABASE=AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn]
+ pci:v0000168Cd00000027sv00000777sd00004082*
+- ID_MODEL_FROM_DATABASE=SR71-A 802.11abgn Wireless Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] (SR71-A 802.11abgn Wireless Mini PCI Adapter)
+ pci:v0000168Cd00000029*
+  ID_MODEL_FROM_DATABASE=AR922X Wireless Network Adapter
+ pci:v0000168Cd00000029sv00000777sd00004005*
+- ID_MODEL_FROM_DATABASE=SR71-15 802.11an Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=AR922X Wireless Network Adapter (SR71-15 802.11an Mini PCI Adapter)
+ pci:v0000168Cd00000029sv00001186sd00003A7A*
+- ID_MODEL_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A2)
++ ID_MODEL_FROM_DATABASE=AR922X Wireless Network Adapter (DWA-552 802.11n Xtreme N Desktop Adapter (rev A2))
+ pci:v0000168Cd00000029sv00001186sd00003A7D*
+- ID_MODEL_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A3)
++ ID_MODEL_FROM_DATABASE=AR922X Wireless Network Adapter (DWA-552 802.11n Xtreme N Desktop Adapter (rev A3))
+ pci:v0000168Cd0000002A*
+  ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express)
+ pci:v0000168Cd0000002Asv00000777sd00004F05*
+- ID_MODEL_FROM_DATABASE=SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280])
+ pci:v0000168Cd0000002Asv0000103Csd00003041*
+- ID_MODEL_FROM_DATABASE=AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280])
+ pci:v0000168Cd0000002Asv0000105Bsd0000E006*
+- ID_MODEL_FROM_DATABASE=T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281])
+ pci:v0000168Cd0000002Asv0000105Bsd0000E01F*
+- ID_MODEL_FROM_DATABASE=T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283])
+ pci:v0000168Cd0000002Asv0000106Bsd0000008F*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AirPort Extreme)
+ pci:v0000168Cd0000002Asv000011ADsd00006600*
+- ID_MODEL_FROM_DATABASE=WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281])
+ pci:v0000168Cd0000002Asv0000144Fsd00007141*
+- ID_MODEL_FROM_DATABASE=WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281])
+ pci:v0000168Cd0000002Asv0000168Csd00000203*
+- ID_MODEL_FROM_DATABASE=DW1525 802.11abgn WLAN PCIe Card [AR9280]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (DW1525 802.11abgn WLAN PCIe Card [AR9280])
+ pci:v0000168Cd0000002Asv00001A32sd00000303*
+- ID_MODEL_FROM_DATABASE=EM303 802.11bgn Wireless Mini PCIe Card [AR9281]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (EM303 802.11bgn Wireless Mini PCIe Card [AR9281])
+ pci:v0000168Cd0000002Asv00001A32sd00000306*
+- ID_MODEL_FROM_DATABASE=EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283])
+ pci:v0000168Cd0000002Asv00001A3Bsd00001067*
+- ID_MODEL_FROM_DATABASE=AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281])
+ pci:v0000168Cd0000002Asv00001A3Bsd00001081*
+- ID_MODEL_FROM_DATABASE=AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280]
++ ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) (AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280])
+ pci:v0000168Cd0000002B*
+  ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express)
+ pci:v0000168Cd0000002Bsv00001028sd00000204*
+- ID_MODEL_FROM_DATABASE=Wireless 1502 802.11bgn Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (Wireless 1502 802.11bgn Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv00001028sd00000205*
+- ID_MODEL_FROM_DATABASE=Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD]
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD])
+ pci:v0000168Cd0000002Bsv0000103Csd0000303F*
+- ID_MODEL_FROM_DATABASE=U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv0000103Csd00003040*
+- ID_MODEL_FROM_DATABASE=U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv0000105Bsd0000E017*
+- ID_MODEL_FROM_DATABASE=T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv0000105Bsd0000E023*
+- ID_MODEL_FROM_DATABASE=T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv00001113sd0000E811*
+- ID_MODEL_FROM_DATABASE=WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv0000185Fsd000030AF*
+- ID_MODEL_FROM_DATABASE=DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv00001931sd00000023*
+- ID_MODEL_FROM_DATABASE=Option GTM67x PCIe WiFi Adapter
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (Option GTM67x PCIe WiFi Adapter)
+ pci:v0000168Cd0000002Bsv00001A3Bsd00001089*
+- ID_MODEL_FROM_DATABASE=AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv00001A3Bsd00002C37*
+- ID_MODEL_FROM_DATABASE=AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD]
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD])
+ pci:v0000168Cd0000002Bsv00001B9Asd00000401*
+- ID_MODEL_FROM_DATABASE=XW204E 802.11bgn Wireless Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (XW204E 802.11bgn Wireless Half-size Mini PCIe Card)
+ pci:v0000168Cd0000002Bsv00001B9Asd00000C03*
+- ID_MODEL_FROM_DATABASE=WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD]
++ ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) (WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD])
+ pci:v0000168Cd0000002C*
+  ID_MODEL_FROM_DATABASE=AR2427 802.11bg Wireless Network Adapter (PCI-Express)
+@@ -49059,25 +49059,25 @@ pci:v0000168Cd00000030*
+  ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter
+ pci:v0000168Cd00000030sv0000103Csd00001627*
+- ID_MODEL_FROM_DATABASE=AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter
++ ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter (AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter)
+ pci:v0000168Cd00000030sv0000106Bsd0000009A*
+- ID_MODEL_FROM_DATABASE=AirPort Extreme
++ ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter (AirPort Extreme)
+ pci:v0000168Cd00000030sv00001186sd00003A7E*
+- ID_MODEL_FROM_DATABASE=DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter
++ ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter (DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter)
+ pci:v0000168Cd00000030sv00001A56sd00002000*
+- ID_MODEL_FROM_DATABASE=Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382]
++ ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter (Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382])
+ pci:v0000168Cd00000030sv00001A56sd00002001*
+- ID_MODEL_FROM_DATABASE=Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380]
++ ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter (Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380])
+ pci:v0000168Cd00000032*
+  ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter
+ pci:v0000168Cd00000032sv0000103Csd00001838*
+- ID_MODEL_FROM_DATABASE=AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter
++ ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter)
+ pci:v0000168Cd00000033*
+  ID_MODEL_FROM_DATABASE=AR9580 Wireless Network Adapter
+@@ -49086,7 +49086,7 @@ pci:v0000168Cd00000034*
+  ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter
+ pci:v0000168Cd00000034sv00001A56sd00002003*
+- ID_MODEL_FROM_DATABASE=Killer Wireless-N 1202 Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter (Killer Wireless-N 1202 Half-size Mini PCIe Card)
+ pci:v0000168Cd00000036*
+  ID_MODEL_FROM_DATABASE=QCA9565 / AR9565 Wireless Network Adapter
+@@ -49095,7 +49095,7 @@ pci:v0000168Cd00000037*
+  ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter
+ pci:v0000168Cd00000037sv00001A3Bsd00002100*
+- ID_MODEL_FROM_DATABASE=AW-NB100H 802.11n Wireless Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter (AW-NB100H 802.11n Wireless Mini PCIe Card)
+ pci:v0000168Cd0000003C*
+  ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter
+@@ -49107,7 +49107,7 @@ pci:v0000168Cd00001014*
+  ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC
+ pci:v0000168Cd00001014sv00001014sd0000058A*
+- ID_MODEL_FROM_DATABASE=ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6)
++ ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC (ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6))
+ pci:v0000168Cd00009013*
+  ID_MODEL_FROM_DATABASE=AR5002X Wireless Network Adapter
+@@ -49125,7 +49125,7 @@ pci:v0000168Cd0000FF1D*
+  ID_MODEL_FROM_DATABASE=AR922x Wireless Network Adapter
+ pci:v0000168Cd0000FF1Dsv0000168Csd0000EE1C*
+- ID_MODEL_FROM_DATABASE=AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3]
++ ID_MODEL_FROM_DATABASE=AR922x Wireless Network Adapter (AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3])
+ pci:v00001695*
+  ID_VENDOR_FROM_DATABASE=EPoX Computer Co., Ltd.
+@@ -49524,16 +49524,16 @@ pci:v00001737d00001032*
+  ID_MODEL_FROM_DATABASE=Gigabit Network Adapter
+ pci:v00001737d00001032sv00001737sd00000015*
+- ID_MODEL_FROM_DATABASE=EG1032 v2 Instant Gigabit Network Adapter
++ ID_MODEL_FROM_DATABASE=Gigabit Network Adapter (EG1032 v2 Instant Gigabit Network Adapter)
+ pci:v00001737d00001032sv00001737sd00000024*
+- ID_MODEL_FROM_DATABASE=EG1032 v3 Instant Gigabit Network Adapter
++ ID_MODEL_FROM_DATABASE=Gigabit Network Adapter (EG1032 v3 Instant Gigabit Network Adapter)
+ pci:v00001737d00001064*
+  ID_MODEL_FROM_DATABASE=Gigabit Network Adapter
+ pci:v00001737d00001064sv00001737sd00000016*
+- ID_MODEL_FROM_DATABASE=EG1064 v2 Instant Gigabit Network Adapter
++ ID_MODEL_FROM_DATABASE=Gigabit Network Adapter (EG1064 v2 Instant Gigabit Network Adapter)
+ pci:v00001737d0000AB08*
+  ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet
+@@ -49554,7 +49554,7 @@ pci:v0000173Bd000003EA*
+  ID_MODEL_FROM_DATABASE=AC9100 Gigabit Ethernet
+ pci:v0000173Bd000003EAsv0000173Bsd00000001*
+- ID_MODEL_FROM_DATABASE=AC1002
++ ID_MODEL_FROM_DATABASE=AC9100 Gigabit Ethernet (AC1002)
+ pci:v0000173Bd000003EB*
+  ID_MODEL_FROM_DATABASE=AC1003 Gigabit Ethernet
+@@ -49851,19 +49851,19 @@ pci:v000017CBd00000001*
+  ID_MODEL_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card
+ pci:v000017CBd00000001sv00001385sd00005C00*
+- ID_MODEL_FROM_DATABASE=WGM511 Pre-N 802.11g Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card (WGM511 Pre-N 802.11g Wireless CardBus Adapter)
+ pci:v000017CBd00000001sv00001737sd00000045*
+- ID_MODEL_FROM_DATABASE=WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX
++ ID_MODEL_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card (WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX)
+ pci:v000017CBd00000002*
+  ID_MODEL_FROM_DATABASE=AGN300 802.11 a/b/g True MIMO Wireless Card
+ pci:v000017CBd00000002sv00001385sd00006D00*
+- ID_MODEL_FROM_DATABASE=WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=AGN300 802.11 a/b/g True MIMO Wireless Card (WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter)
+ pci:v000017CBd00000002sv00001737sd00000054*
+- ID_MODEL_FROM_DATABASE=WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400
++ ID_MODEL_FROM_DATABASE=AGN300 802.11 a/b/g True MIMO Wireless Card (WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400)
+ pci:v000017CC*
+  ID_VENDOR_FROM_DATABASE=NetChip Technology, Inc
+@@ -49914,7 +49914,7 @@ pci:v000017D3d00001280*
+  ID_MODEL_FROM_DATABASE=ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller
+ pci:v000017D3d00001280sv000017D3sd00001221*
+- ID_MODEL_FROM_DATABASE=ARC-1221 8-Port PCI-Express to SATA RAID Controller
++ ID_MODEL_FROM_DATABASE=ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller (ARC-1221 8-Port PCI-Express to SATA RAID Controller)
+ pci:v000017D3d00001300*
+  ID_MODEL_FROM_DATABASE=ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter
+@@ -49923,7 +49923,7 @@ pci:v000017D3d00001680*
+  ID_MODEL_FROM_DATABASE=ARC-1680 8 port PCIe/PCI-X to SAS/SATA II RAID Controller
+ pci:v000017D3d00001680sv000017D3sd00001212*
+- ID_MODEL_FROM_DATABASE=ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller
++ ID_MODEL_FROM_DATABASE=ARC-1680 8 port PCIe/PCI-X to SAS/SATA II RAID Controller (ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller)
+ pci:v000017D3d00001880*
+  ID_MODEL_FROM_DATABASE=ARC-1880 8/12 port PCIe/PCI-X to SAS/SATA II RAID Controller
+@@ -49941,82 +49941,82 @@ pci:v000017D5d00005831*
+  ID_MODEL_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X
+ pci:v000017D5d00005831sv0000103Csd000012D5*
+- ID_MODEL_FROM_DATABASE=PCI-X 133MHz 10GbE SR Fiber
++ ID_MODEL_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X (PCI-X 133MHz 10GbE SR Fiber)
+ pci:v000017D5d00005831sv000010A9sd00008020*
+- ID_MODEL_FROM_DATABASE=Single Port 10-Gigabit Ethernet (PCI-X, Fiber)
++ ID_MODEL_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X (Single Port 10-Gigabit Ethernet (PCI-X, Fiber))
+ pci:v000017D5d00005831sv000010A9sd00008024*
+- ID_MODEL_FROM_DATABASE=Single Port 10-Gigabit Ethernet (PCI-X, Fiber)
++ ID_MODEL_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X (Single Port 10-Gigabit Ethernet (PCI-X, Fiber))
+ pci:v000017D5d00005832*
+  ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0
+ pci:v000017D5d00005832sv0000103Csd00001337*
+- ID_MODEL_FROM_DATABASE=PCI-X 266MHz 10GigE SR [AD385A]
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (PCI-X 266MHz 10GigE SR [AD385A])
+ pci:v000017D5d00005832sv000010A9sd00008021*
+- ID_MODEL_FROM_DATABASE=Single Port 10-Gigabit Ethernet II (PCI-X, Fiber)
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Single Port 10-Gigabit Ethernet II (PCI-X, Fiber))
+ pci:v000017D5d00005832sv000017D5sd00006020*
+- ID_MODEL_FROM_DATABASE=Xframe II SR
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe II SR)
+ pci:v000017D5d00005832sv000017D5sd00006021*
+- ID_MODEL_FROM_DATABASE=Xframe II SR, Low Profile
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe II SR, Low Profile)
+ pci:v000017D5d00005832sv000017D5sd00006022*
+- ID_MODEL_FROM_DATABASE=Xframe E SR
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe E SR)
+ pci:v000017D5d00005832sv000017D5sd00006420*
+- ID_MODEL_FROM_DATABASE=Xframe II LR
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe II LR)
+ pci:v000017D5d00005832sv000017D5sd00006421*
+- ID_MODEL_FROM_DATABASE=Xframe II LR, Low Profile
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe II LR, Low Profile)
+ pci:v000017D5d00005832sv000017D5sd00006422*
+- ID_MODEL_FROM_DATABASE=Xframe E LR
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe E LR)
+ pci:v000017D5d00005832sv000017D5sd00006C20*
+- ID_MODEL_FROM_DATABASE=Xframe II CX4
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe II CX4)
+ pci:v000017D5d00005832sv000017D5sd00006C21*
+- ID_MODEL_FROM_DATABASE=Xframe II CX4, Low Profile
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe II CX4, Low Profile)
+ pci:v000017D5d00005832sv000017D5sd00006C22*
+- ID_MODEL_FROM_DATABASE=Xframe E CX4
++ ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 (Xframe E CX4)
+ pci:v000017D5d00005833*
+  ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe
+ pci:v000017D5d00005833sv000017D5sd00006030*
+- ID_MODEL_FROM_DATABASE=X3110 Single Port SR
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3110 Single Port SR)
+ pci:v000017D5d00005833sv000017D5sd00006031*
+- ID_MODEL_FROM_DATABASE=X3120 Dual Port SR
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3120 Dual Port SR)
+ pci:v000017D5d00005833sv000017D5sd00006430*
+- ID_MODEL_FROM_DATABASE=X3110 Single Port LR
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3110 Single Port LR)
+ pci:v000017D5d00005833sv000017D5sd00006431*
+- ID_MODEL_FROM_DATABASE=X3120 Dual Port LR
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3120 Dual Port LR)
+ pci:v000017D5d00005833sv000017D5sd00007030*
+- ID_MODEL_FROM_DATABASE=X3110 Single Port LRM
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3110 Single Port LRM)
+ pci:v000017D5d00005833sv000017D5sd00007031*
+- ID_MODEL_FROM_DATABASE=X3120 Dual Port LRM
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3120 Dual Port LRM)
+ pci:v000017D5d00005833sv000017D5sd00007430*
+- ID_MODEL_FROM_DATABASE=X3110 Single Port 10GBase-T
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3110 Single Port 10GBase-T)
+ pci:v000017D5d00005833sv000017D5sd00007431*
+- ID_MODEL_FROM_DATABASE=X3120 Dual Port 10GBase-T
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3120 Dual Port 10GBase-T)
+ pci:v000017D5d00005833sv000017D5sd00007830*
+- ID_MODEL_FROM_DATABASE=X3110 Single Port 10GBase-CR
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3110 Single Port 10GBase-CR)
+ pci:v000017D5d00005833sv000017D5sd00007831*
+- ID_MODEL_FROM_DATABASE=X3120 Dual Port 10GBase-CR
++ ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe (X3120 Dual Port 10GBase-CR)
+ pci:v000017DB*
+  ID_VENDOR_FROM_DATABASE=Cray Inc
+@@ -50103,16 +50103,16 @@ pci:v000017FEd00002120*
+  ID_MODEL_FROM_DATABASE=IPN 2120 802.11b
+ pci:v000017FEd00002120sv00001737sd00000020*
+- ID_MODEL_FROM_DATABASE=WMP11 v4 802.11b Wireless-B PCI Adapter
++ ID_MODEL_FROM_DATABASE=IPN 2120 802.11b (WMP11 v4 802.11b Wireless-B PCI Adapter)
+ pci:v000017FEd00002220*
+  ID_MODEL_FROM_DATABASE=IPN 2220 802.11g
+ pci:v000017FEd00002220sv00001468sd00000305*
+- ID_MODEL_FROM_DATABASE=T60N871 802.11g Mini PCI Wireless Adapter
++ ID_MODEL_FROM_DATABASE=IPN 2220 802.11g (T60N871 802.11g Mini PCI Wireless Adapter)
+ pci:v000017FEd00002220sv00001737sd00000029*
+- ID_MODEL_FROM_DATABASE=WPC54G v4 802.11g Wireless-G Notebook Adapter
++ ID_MODEL_FROM_DATABASE=IPN 2220 802.11g (WPC54G v4 802.11g Wireless-G Notebook Adapter)
+ pci:v000017FF*
+  ID_VENDOR_FROM_DATABASE=Benq Corporation
+@@ -50133,13 +50133,13 @@ pci:v00001813d00004000*
+  ID_MODEL_FROM_DATABASE=HaM controllerless modem
+ pci:v00001813d00004000sv000016BEsd00000001*
+- ID_MODEL_FROM_DATABASE=V9x HAM Data Fax Modem
++ ID_MODEL_FROM_DATABASE=HaM controllerless modem (V9x HAM Data Fax Modem)
+ pci:v00001813d00004100*
+  ID_MODEL_FROM_DATABASE=HaM plus Data Fax Modem
+ pci:v00001813d00004100sv000016BEsd00000002*
+- ID_MODEL_FROM_DATABASE=V9x HAM 1394
++ ID_MODEL_FROM_DATABASE=HaM plus Data Fax Modem (V9x HAM 1394)
+ pci:v00001814*
+  ID_VENDOR_FROM_DATABASE=Ralink corp.
+@@ -50148,13 +50148,13 @@ pci:v00001814d00000101*
+  ID_MODEL_FROM_DATABASE=Wireless PCI Adapter RT2400 / RT2460
+ pci:v00001814d00000101sv00001043sd00000127*
+- ID_MODEL_FROM_DATABASE=WiFi-b add-on Card
++ ID_MODEL_FROM_DATABASE=Wireless PCI Adapter RT2400 / RT2460 (WiFi-b add-on Card)
+ pci:v00001814d00000101sv00001371sd00000010*
+- ID_MODEL_FROM_DATABASE=Minitar MNW2BPCI Wireless PCI Card
++ ID_MODEL_FROM_DATABASE=Wireless PCI Adapter RT2400 / RT2460 (Minitar MNW2BPCI Wireless PCI Card)
+ pci:v00001814d00000101sv00001462sd00006828*
+- ID_MODEL_FROM_DATABASE=PC11B2 (MS-6828) Wireless 11b PCI Card
++ ID_MODEL_FROM_DATABASE=Wireless PCI Adapter RT2400 / RT2460 (PC11B2 (MS-6828) Wireless 11b PCI Card)
+ pci:v00001814d00000200*
+  ID_MODEL_FROM_DATABASE=RT2500 802.11g PCI [PC54G2]
+@@ -50163,58 +50163,58 @@ pci:v00001814d00000201*
+  ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg
+ pci:v00001814d00000201sv00001043sd0000130F*
+- ID_MODEL_FROM_DATABASE=WL-130g
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (WL-130g)
+ pci:v00001814d00000201sv00001186sd00003C00*
+- ID_MODEL_FROM_DATABASE=DWL-G650X Wireless 11g CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (DWL-G650X Wireless 11g CardBus Adapter)
+ pci:v00001814d00000201sv00001371sd0000001E*
+- ID_MODEL_FROM_DATABASE=CWC-854 Wireless-G CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (CWC-854 Wireless-G CardBus Adapter)
+ pci:v00001814d00000201sv00001371sd0000001F*
+- ID_MODEL_FROM_DATABASE=CWM-854 Wireless-G Mini PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (CWM-854 Wireless-G Mini PCI Adapter)
+ pci:v00001814d00000201sv00001371sd00000020*
+- ID_MODEL_FROM_DATABASE=CWP-854 Wireless-G PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (CWP-854 Wireless-G PCI Adapter)
+ pci:v00001814d00000201sv00001458sd0000E381*
+- ID_MODEL_FROM_DATABASE=GN-WMKG 802.11b/g Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (GN-WMKG 802.11b/g Wireless CardBus Adapter)
+ pci:v00001814d00000201sv00001458sd0000E931*
+- ID_MODEL_FROM_DATABASE=GN-WIKG 802.11b/g mini-PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (GN-WIKG 802.11b/g mini-PCI Adapter)
+ pci:v00001814d00000201sv00001462sd00006833*
+- ID_MODEL_FROM_DATABASE=Unknown 802.11g mini-PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (Unknown 802.11g mini-PCI Adapter)
+ pci:v00001814d00000201sv00001462sd00006835*
+- ID_MODEL_FROM_DATABASE=Wireless 11G CardBus CB54G2
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (Wireless 11G CardBus CB54G2)
+ pci:v00001814d00000201sv00001737sd00000032*
+- ID_MODEL_FROM_DATABASE=WMP54G v4.0 PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (WMP54G v4.0 PCI Adapter)
+ pci:v00001814d00000201sv00001799sd0000700A*
+- ID_MODEL_FROM_DATABASE=F5D7000 v2000/v3000 Wireless G Desktop Card
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (F5D7000 v2000/v3000 Wireless G Desktop Card)
+ pci:v00001814d00000201sv00001799sd0000701A*
+- ID_MODEL_FROM_DATABASE=F5D7010 v2000/v3000 Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (F5D7010 v2000/v3000 Wireless G Notebook Card)
+ pci:v00001814d00000201sv00001814sd00002560*
+  ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg
+ pci:v00001814d00000201sv0000182Dsd00009073*
+- ID_MODEL_FROM_DATABASE=WL-115 Wireless Network PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (WL-115 Wireless Network PCI Adapter)
+ pci:v00001814d00000201sv0000185Fsd000022A0*
+- ID_MODEL_FROM_DATABASE=CN-WF513 Wireless Cardbus Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (CN-WF513 Wireless Cardbus Adapter)
+ pci:v00001814d00000201sv000018EBsd00005312*
+- ID_MODEL_FROM_DATABASE=WL531P IEEE 802.11g PCI Card-EU
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (WL531P IEEE 802.11g PCI Card-EU)
+ pci:v00001814d00000201sv00001948sd00003C00*
+- ID_MODEL_FROM_DATABASE=C54RC v1 Wireless 11g CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (C54RC v1 Wireless 11g CardBus Adapter)
+ pci:v00001814d00000201sv00001948sd00003C01*
+- ID_MODEL_FROM_DATABASE=C54Ri v1 Wireless 11g PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg (C54Ri v1 Wireless 11g PCI Adapter)
+ pci:v00001814d00000300*
+  ID_MODEL_FROM_DATABASE=Wireless Adapter Canyon CN-WF511
+@@ -50223,88 +50223,88 @@ pci:v00001814d00000301*
+  ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI
+ pci:v00001814d00000301sv00001186sd00003C08*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1)
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1))
+ pci:v00001814d00000301sv00001186sd00003C09*
+- ID_MODEL_FROM_DATABASE=DWL-G510 Rev C
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (DWL-G510 Rev C)
+ pci:v00001814d00000301sv000013D1sd0000ABE3*
+- ID_MODEL_FROM_DATABASE=miniPCI Pluscom 802.11 a/b/g
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (miniPCI Pluscom 802.11 a/b/g)
+ pci:v00001814d00000301sv00001458sd0000E933*
+- ID_MODEL_FROM_DATABASE=GN-WI01GS
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (GN-WI01GS)
+ pci:v00001814d00000301sv00001458sd0000E934*
+- ID_MODEL_FROM_DATABASE=GN-WP01GS
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (GN-WP01GS)
+ pci:v00001814d00000301sv00001737sd00000055*
+- ID_MODEL_FROM_DATABASE=WMP54G v4.1
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (WMP54G v4.1)
+ pci:v00001814d00000301sv00001799sd0000700E*
+- ID_MODEL_FROM_DATABASE=F5D7000 v6000 Wireless G Desktop Card
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (F5D7000 v6000 Wireless G Desktop Card)
+ pci:v00001814d00000301sv00001799sd0000701E*
+- ID_MODEL_FROM_DATABASE=F5D7010 v6000 Wireless G Notebook Card
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (F5D7010 v6000 Wireless G Notebook Card)
+ pci:v00001814d00000301sv000017F9sd00000012*
+- ID_MODEL_FROM_DATABASE=AWLC3026T 802.11g Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (AWLC3026T 802.11g Wireless CardBus Adapter)
+ pci:v00001814d00000301sv00001814sd00002561*
+- ID_MODEL_FROM_DATABASE=EW-7108PCg/EW-7128g
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI (EW-7108PCg/EW-7128g)
+ pci:v00001814d00000302*
+  ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g
+ pci:v00001814d00000302sv00001186sd00003A71*
+- ID_MODEL_FROM_DATABASE=DWA-510 Wireless G Desktop Adapter
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g (DWA-510 Wireless G Desktop Adapter)
+ pci:v00001814d00000302sv00001186sd00003C08*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2)
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g (AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2))
+ pci:v00001814d00000302sv00001186sd00003C09*
+- ID_MODEL_FROM_DATABASE=AirPlus G DWL-G510 Wireless Network Adapter (Rev.C)
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g (AirPlus G DWL-G510 Wireless Network Adapter (Rev.C))
+ pci:v00001814d00000302sv00001462sd0000B834*
+- ID_MODEL_FROM_DATABASE=PC54G3 Wireless 11g PCI Card
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g (PC54G3 Wireless 11g PCI Card)
+ pci:v00001814d00000302sv00001948sd00003C23*
+- ID_MODEL_FROM_DATABASE=C54RC v2 Wireless 11g CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g (C54RC v2 Wireless 11g CardBus Adapter)
+ pci:v00001814d00000302sv00001948sd00003C24*
+- ID_MODEL_FROM_DATABASE=C54Ri v2 Wireless 11g PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g (C54Ri v2 Wireless 11g PCI Adapter)
+ pci:v00001814d00000401*
+  ID_MODEL_FROM_DATABASE=RT2600 802.11 MIMO
+ pci:v00001814d00000401sv00001737sd00000052*
+- ID_MODEL_FROM_DATABASE=WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster
++ ID_MODEL_FROM_DATABASE=RT2600 802.11 MIMO (WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster)
+ pci:v00001814d00000401sv000017F9sd00000011*
+- ID_MODEL_FROM_DATABASE=WPCR-137G 802.11bg Wireless CardBus Adapter
++ ID_MODEL_FROM_DATABASE=RT2600 802.11 MIMO (WPCR-137G 802.11bg Wireless CardBus Adapter)
+ pci:v00001814d00000401sv000017F9sd00000016*
+- ID_MODEL_FROM_DATABASE=WPIR-119GH 802.11bg Wireless Desktop Adapter
++ ID_MODEL_FROM_DATABASE=RT2600 802.11 MIMO (WPIR-119GH 802.11bg Wireless Desktop Adapter)
+ pci:v00001814d00000601*
+  ID_MODEL_FROM_DATABASE=RT2800 802.11n PCI
+ pci:v00001814d00000601sv00001799sd0000801C*
+- ID_MODEL_FROM_DATABASE=F5D8011 v3 802.11n N1 Wireless Notebook Card
++ ID_MODEL_FROM_DATABASE=RT2800 802.11n PCI (F5D8011 v3 802.11n N1 Wireless Notebook Card)
+ pci:v00001814d00000601sv0000187Esd00003412*
+- ID_MODEL_FROM_DATABASE=NWD-310N 802.11n Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2800 802.11n PCI (NWD-310N 802.11n Wireless PCI Adapter)
+ pci:v00001814d00000681*
+  ID_MODEL_FROM_DATABASE=RT2890 Wireless 802.11n PCIe
+ pci:v00001814d00000681sv00001458sd0000E939*
+- ID_MODEL_FROM_DATABASE=GN-WS30N-RH 802.11bgn Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=RT2890 Wireless 802.11n PCIe (GN-WS30N-RH 802.11bgn Mini PCIe Card)
+ pci:v00001814d00000701*
+  ID_MODEL_FROM_DATABASE=RT2760 Wireless 802.11n 1T/2R
+ pci:v00001814d00000701sv00001737sd00000074*
+- ID_MODEL_FROM_DATABASE=WMP110 v2 802.11n RangePlus Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT2760 Wireless 802.11n 1T/2R (WMP110 v2 802.11n RangePlus Wireless PCI Adapter)
+ pci:v00001814d00000781*
+  ID_MODEL_FROM_DATABASE=RT2790 Wireless 802.11n 1T/2R PCIe
+@@ -50313,7 +50313,7 @@ pci:v00001814d00003060*
+  ID_MODEL_FROM_DATABASE=RT3060 Wireless 802.11n 1T/1R
+ pci:v00001814d00003060sv00001186sd00003C04*
+- ID_MODEL_FROM_DATABASE=DWA-525 Wireless N 150 Desktop Adapter (rev.A1)
++ ID_MODEL_FROM_DATABASE=RT3060 Wireless 802.11n 1T/1R (DWA-525 Wireless N 150 Desktop Adapter (rev.A1))
+ pci:v00001814d00003062*
+  ID_MODEL_FROM_DATABASE=RT3062 Wireless 802.11n 2T/2R
+@@ -50322,7 +50322,7 @@ pci:v00001814d00003090*
+  ID_MODEL_FROM_DATABASE=RT3090 Wireless 802.11n 1T/1R PCIe
+ pci:v00001814d00003090sv000013BDsd00001057*
+- ID_MODEL_FROM_DATABASE=GN-WS32L-RH Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=RT3090 Wireless 802.11n 1T/1R PCIe (GN-WS32L-RH Half-size Mini PCIe Card)
+ pci:v00001814d00003091*
+  ID_MODEL_FROM_DATABASE=RT3091 Wireless 802.11n 1T/2R PCIe
+@@ -50334,13 +50334,13 @@ pci:v00001814d00003290*
+  ID_MODEL_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe
+ pci:v00001814d00003290sv0000103Csd000018EC*
+- ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
++ ID_MODEL_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe (Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter)
+ pci:v00001814d00003298*
+  ID_MODEL_FROM_DATABASE=RT3290 Bluetooth
+ pci:v00001814d00003298sv0000103Csd000018EC*
+- ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
++ ID_MODEL_FROM_DATABASE=RT3290 Bluetooth (Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter)
+ pci:v00001814d00003592*
+  ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe
+@@ -50352,16 +50352,16 @@ pci:v00001814d00005360*
+  ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R
+ pci:v00001814d00005360sv00001186sd00003C05*
+- ID_MODEL_FROM_DATABASE=DWA-525 Wireless N 150 Desktop Adapter (rev.A2)
++ ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R (DWA-525 Wireless N 150 Desktop Adapter (rev.A2))
+ pci:v00001814d00005360sv000020F4sd0000703A*
+- ID_MODEL_FROM_DATABASE=TEW-703PI N150 Wireless PCI Adapter
++ ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R (TEW-703PI N150 Wireless PCI Adapter)
+ pci:v00001814d00005390*
+  ID_MODEL_FROM_DATABASE=RT5390 Wireless 802.11n 1T/1R PCIe
+ pci:v00001814d00005390sv0000103Csd00001636*
+- ID_MODEL_FROM_DATABASE=U98Z077.00 Half-size Mini PCIe Card
++ ID_MODEL_FROM_DATABASE=RT5390 Wireless 802.11n 1T/1R PCIe (U98Z077.00 Half-size Mini PCIe Card)
+ pci:v00001814d00005392*
+  ID_MODEL_FROM_DATABASE=RT5392 PCIe Wireless Network Adapter
+@@ -50370,7 +50370,7 @@ pci:v00001814d0000539F*
+  ID_MODEL_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip]
+ pci:v00001814d0000539Fsv0000103Csd00001637*
+- ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 PCIe wireless card
++ ID_MODEL_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] (Pavilion DM1Z-3000 PCIe wireless card)
+ pci:v00001814d00005592*
+  ID_MODEL_FROM_DATABASE=RT5592 PCIe Wireless Network Adapter
+@@ -50637,7 +50637,7 @@ pci:v000018C3d00000720*
+  ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller
+ pci:v000018C3d00000720sv000007CAsd0000032E*
+- ID_MODEL_FROM_DATABASE=Hybrid M779 PCI-E
++ ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller (Hybrid M779 PCI-E)
+ pci:v000018C8*
+  ID_VENDOR_FROM_DATABASE=Cray Inc
+@@ -50697,70 +50697,70 @@ pci:v000018ECd00006D05*
+  ID_MODEL_FROM_DATABASE=ML555
+ pci:v000018ECd00006D05sv000018ECsd00000100*
+- ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces)
++ ID_MODEL_FROM_DATABASE=ML555 (NIC (ethernet interfaces))
+ pci:v000018ECd00006D05sv000018ECsd00000200*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=ML555 (NIC (szedata2) 4x1G)
+ pci:v000018ECd00006D05sv000018ECsd00000201*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=ML555 (NIC (szedata2) 2x10G)
+ pci:v000018ECd00006D05sv000018ECsd00000300*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=ML555 (NIFIC (szedata2) 4x1G)
+ pci:v000018ECd00006D05sv000018ECsd00000302*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=ML555 (NIFIC (szedata2) 2x10G)
+ pci:v000018ECd00006D05sv000018ECsd00004200*
+- ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G
++ ID_MODEL_FROM_DATABASE=ML555 (Flexible FlowMon (szedata2) 1x10G)
+ pci:v000018ECd00006D05sv000018ECsd0000FF00*
+- ID_MODEL_FROM_DATABASE=Testing design
++ ID_MODEL_FROM_DATABASE=ML555 (Testing design)
+ pci:v000018ECd00006D05sv000018ECsd0000FF01*
+- ID_MODEL_FROM_DATABASE=Boot design
++ ID_MODEL_FROM_DATABASE=ML555 (Boot design)
+ pci:v000018ECd0000C006*
+  ID_MODEL_FROM_DATABASE=COMBO6
+ pci:v000018ECd0000C006sv000018ECsd0000D001*
+- ID_MODEL_FROM_DATABASE=COMBO-4MTX
++ ID_MODEL_FROM_DATABASE=COMBO6 (COMBO-4MTX)
+ pci:v000018ECd0000C006sv000018ECsd0000D002*
+- ID_MODEL_FROM_DATABASE=COMBO-4SFP
++ ID_MODEL_FROM_DATABASE=COMBO6 (COMBO-4SFP)
+ pci:v000018ECd0000C006sv000018ECsd0000D003*
+- ID_MODEL_FROM_DATABASE=COMBO-4SFPRO
++ ID_MODEL_FROM_DATABASE=COMBO6 (COMBO-4SFPRO)
+ pci:v000018ECd0000C006sv000018ECsd0000D004*
+- ID_MODEL_FROM_DATABASE=COMBO-2XFP
++ ID_MODEL_FROM_DATABASE=COMBO6 (COMBO-2XFP)
+ pci:v000018ECd0000C032*
+  ID_MODEL_FROM_DATABASE=COMBO-LXT110
+ pci:v000018ECd0000C032sv000018ECsd00000100*
+- ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces)
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (NIC (ethernet interfaces))
+ pci:v000018ECd0000C032sv000018ECsd00000200*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (NIC (szedata2) 4x1G)
+ pci:v000018ECd0000C032sv000018ECsd00000201*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (NIC (szedata2) 2x10G)
+ pci:v000018ECd0000C032sv000018ECsd00000300*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (NIFIC (szedata2) 4x1G)
+ pci:v000018ECd0000C032sv000018ECsd00000302*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (NIFIC (szedata2) 2x10G)
+ pci:v000018ECd0000C032sv000018ECsd00004200*
+- ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (Flexible FlowMon (szedata2) 1x10G)
+ pci:v000018ECd0000C032sv000018ECsd0000FF00*
+- ID_MODEL_FROM_DATABASE=Testing design
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (Testing design)
+ pci:v000018ECd0000C032sv000018ECsd0000FF01*
+- ID_MODEL_FROM_DATABASE=Boot design
++ ID_MODEL_FROM_DATABASE=COMBO-LXT110 (Boot design)
+ pci:v000018ECd0000C045*
+  ID_MODEL_FROM_DATABASE=COMBO6E
+@@ -50772,70 +50772,70 @@ pci:v000018ECd0000C058*
+  ID_MODEL_FROM_DATABASE=COMBO6X
+ pci:v000018ECd0000C058sv000018ECsd0000D001*
+- ID_MODEL_FROM_DATABASE=COMBO-4MTX
++ ID_MODEL_FROM_DATABASE=COMBO6X (COMBO-4MTX)
+ pci:v000018ECd0000C058sv000018ECsd0000D002*
+- ID_MODEL_FROM_DATABASE=COMBO-4SFP
++ ID_MODEL_FROM_DATABASE=COMBO6X (COMBO-4SFP)
+ pci:v000018ECd0000C058sv000018ECsd0000D003*
+- ID_MODEL_FROM_DATABASE=COMBO-4SFPRO
++ ID_MODEL_FROM_DATABASE=COMBO6X (COMBO-4SFPRO)
+ pci:v000018ECd0000C058sv000018ECsd0000D004*
+- ID_MODEL_FROM_DATABASE=COMBO-2XFP
++ ID_MODEL_FROM_DATABASE=COMBO6X (COMBO-2XFP)
+ pci:v000018ECd0000C132*
+  ID_MODEL_FROM_DATABASE=COMBO-LXT155
+ pci:v000018ECd0000C132sv000018ECsd00000100*
+- ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces)
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (NIC (ethernet interfaces))
+ pci:v000018ECd0000C132sv000018ECsd00000200*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (NIC (szedata2) 4x1G)
+ pci:v000018ECd0000C132sv000018ECsd00000201*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (NIC (szedata2) 2x10G)
+ pci:v000018ECd0000C132sv000018ECsd00000300*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (NIFIC (szedata2) 4x1G)
+ pci:v000018ECd0000C132sv000018ECsd00000302*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (NIFIC (szedata2) 2x10G)
+ pci:v000018ECd0000C132sv000018ECsd00004200*
+- ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (Flexible FlowMon (szedata2) 1x10G)
+ pci:v000018ECd0000C132sv000018ECsd0000FF00*
+- ID_MODEL_FROM_DATABASE=Testing design
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (Testing design)
+ pci:v000018ECd0000C132sv000018ECsd0000FF01*
+- ID_MODEL_FROM_DATABASE=Boot design
++ ID_MODEL_FROM_DATABASE=COMBO-LXT155 (Boot design)
+ pci:v000018ECd0000C232*
+  ID_MODEL_FROM_DATABASE=COMBO-FXT100
+ pci:v000018ECd0000C232sv000018ECsd00000100*
+- ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces)
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (NIC (ethernet interfaces))
+ pci:v000018ECd0000C232sv000018ECsd00000200*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (NIC (szedata2) 4x1G)
+ pci:v000018ECd0000C232sv000018ECsd00000201*
+- ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (NIC (szedata2) 2x10G)
+ pci:v000018ECd0000C232sv000018ECsd00000300*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (NIFIC (szedata2) 4x1G)
+ pci:v000018ECd0000C232sv000018ECsd00000302*
+- ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (NIFIC (szedata2) 2x10G)
+ pci:v000018ECd0000C232sv000018ECsd00004200*
+- ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (Flexible FlowMon (szedata2) 1x10G)
+ pci:v000018ECd0000C232sv000018ECsd0000FF00*
+- ID_MODEL_FROM_DATABASE=Testing design
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (Testing design)
+ pci:v000018ECd0000C232sv000018ECsd0000FF01*
+- ID_MODEL_FROM_DATABASE=Boot design
++ ID_MODEL_FROM_DATABASE=COMBO-FXT100 (Boot design)
+ pci:v000018EE*
+  ID_VENDOR_FROM_DATABASE=Chenming Mold Ind. Corp.
+@@ -51075,235 +51075,235 @@ pci:v00001924d00000703*
+  ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm]
+ pci:v00001924d00000703sv000010B8sd00000102*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A2) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SMC10GPCIe-10BT (A2) [TigerCard])
+ pci:v00001924d00000703sv000010B8sd00000103*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SMC10GPCIe-10BT (A3) [TigerCard])
+ pci:v00001924d00000703sv000010B8sd00000201*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SMC10GPCIe-XFP (A1) [TigerCard])
+ pci:v00001924d00000703sv00001924sd00000101*
+- ID_MODEL_FROM_DATABASE=SFE4001-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4001-A1)
+ pci:v00001924d00000703sv00001924sd00000102*
+- ID_MODEL_FROM_DATABASE=SFE4001-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4001-A2)
+ pci:v00001924d00000703sv00001924sd00000103*
+- ID_MODEL_FROM_DATABASE=SFE4001-A3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4001-A3)
+ pci:v00001924d00000703sv00001924sd00000201*
+- ID_MODEL_FROM_DATABASE=SFE4002-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4002-A1)
+ pci:v00001924d00000703sv00001924sd00000301*
+- ID_MODEL_FROM_DATABASE=SFE4003-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4003-A1)
+ pci:v00001924d00000703sv00001924sd00000302*
+- ID_MODEL_FROM_DATABASE=SFE4003-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4003-A2)
+ pci:v00001924d00000703sv00001924sd00000303*
+- ID_MODEL_FROM_DATABASE=SFE4003-A3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4003-A3)
+ pci:v00001924d00000703sv00001924sd00000304*
+- ID_MODEL_FROM_DATABASE=SFE4003-A4
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4003-A4)
+ pci:v00001924d00000703sv00001924sd00000500*
+- ID_MODEL_FROM_DATABASE=SFE4005-A0
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] (SFE4005-A0)
+ pci:v00001924d00000710*
+  ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm]
+ pci:v00001924d00000710sv000010B8sd00000103*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SMC10GPCIe-10BT (A3) [TigerCard])
+ pci:v00001924d00000710sv000010B8sd00000201*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SMC10GPCIe-XFP (A1) [TigerCard])
+ pci:v00001924d00000710sv00001924sd00000102*
+- ID_MODEL_FROM_DATABASE=SFE4001-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4001-A2)
+ pci:v00001924d00000710sv00001924sd00000103*
+- ID_MODEL_FROM_DATABASE=SFE4001-A3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4001-A3)
+ pci:v00001924d00000710sv00001924sd00000201*
+- ID_MODEL_FROM_DATABASE=SFE4002-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4002-A1)
+ pci:v00001924d00000710sv00001924sd00000302*
+- ID_MODEL_FROM_DATABASE=SFE4003-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4003-A2)
+ pci:v00001924d00000710sv00001924sd00000303*
+- ID_MODEL_FROM_DATABASE=SFE4003-A3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4003-A3)
+ pci:v00001924d00000710sv00001924sd00000304*
+- ID_MODEL_FROM_DATABASE=SFE4003-A4
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4003-A4)
+ pci:v00001924d00000710sv00001924sd00000500*
+- ID_MODEL_FROM_DATABASE=SFE4005-A0
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFE4005-A0)
+ pci:v00001924d00000710sv00001924sd00005102*
+- ID_MODEL_FROM_DATABASE=SFN4111T-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4111T-A2)
+ pci:v00001924d00000710sv00001924sd00005103*
+- ID_MODEL_FROM_DATABASE=SFN4111T-R3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4111T-R3)
+ pci:v00001924d00000710sv00001924sd00005104*
+- ID_MODEL_FROM_DATABASE=SFN4111T-R4
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4111T-R4)
+ pci:v00001924d00000710sv00001924sd00005105*
+- ID_MODEL_FROM_DATABASE=SFN4111T-R5
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4111T-R5)
+ pci:v00001924d00000710sv00001924sd00005201*
+- ID_MODEL_FROM_DATABASE=SFN4112F-R1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4112F-R1)
+ pci:v00001924d00000710sv00001924sd00005202*
+- ID_MODEL_FROM_DATABASE=SFN4112F-R2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] (SFN4112F-R2)
+ pci:v00001924d00000803*
+  ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm]
+ pci:v00001924d00000803sv00001014sd00000478*
+- ID_MODEL_FROM_DATABASE=2-port 10GbE Low-Latency (R7)
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (2-port 10GbE Low-Latency (R7))
+ pci:v00001924d00000803sv00001014sd00000479*
+- ID_MODEL_FROM_DATABASE=2-port 10GbE OpenOnload (R7)
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (2-port 10GbE OpenOnload (R7))
+ pci:v00001924d00000803sv00001014sd000004A7*
+- ID_MODEL_FROM_DATABASE=Solarflare 10Gb Low-latency Dual-port HBA (R7)
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Solarflare 10Gb Low-latency Dual-port HBA (R7))
+ pci:v00001924d00000803sv00001014sd000004A8*
+- ID_MODEL_FROM_DATABASE=Solarflare 10Gb Dual-port HBA (R7)
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Solarflare 10Gb Dual-port HBA (R7))
+ pci:v00001924d00000803sv0000103Csd00002132*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1)
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Ethernet 10Gb 2-port 570FLR-SFP+ Adapter (R1))
+ pci:v00001924d00000803sv0000103Csd00002136*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 570SFP+ Adapter (R7)
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (Ethernet 10Gb 2-port 570SFP+ Adapter (R7))
+ pci:v00001924d00000803sv00001924sd00001201*
+- ID_MODEL_FROM_DATABASE=SFA6902F-R1 SFP+ AOE Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFA6902F-R1 SFP+ AOE Adapter)
+ pci:v00001924d00000803sv00001924sd00006200*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R0 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R0 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006201*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R1 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R1 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006202*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R2 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R2 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006204*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R4 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R4 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006205*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R5 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R5 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006206*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R6 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R6 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006207*
+- ID_MODEL_FROM_DATABASE=SFN5122F-R7 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5122F-R7 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006210*
+- ID_MODEL_FROM_DATABASE=SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006211*
+- ID_MODEL_FROM_DATABASE=SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006217*
+- ID_MODEL_FROM_DATABASE=SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006227*
+- ID_MODEL_FROM_DATABASE=SFN6122F-R7 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6122F-R7 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006237*
+- ID_MODEL_FROM_DATABASE=SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006501*
+- ID_MODEL_FROM_DATABASE=SFN5802K-R1 Mezzanine Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5802K-R1 Mezzanine Adapter)
+ pci:v00001924d00000803sv00001924sd00006511*
+- ID_MODEL_FROM_DATABASE=SFN5814H-R1 Mezzanine Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5814H-R1 Mezzanine Adapter)
+ pci:v00001924d00000803sv00001924sd00006521*
+- ID_MODEL_FROM_DATABASE=SFN5812H-R1 Mezzanine Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5812H-R1 Mezzanine Adapter)
+ pci:v00001924d00000803sv00001924sd00006562*
+- ID_MODEL_FROM_DATABASE=SFN6832F-R2 SFP+ Mezzanine Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN6832F-R2 SFP+ Mezzanine Adapter)
+ pci:v00001924d00000803sv00001924sd00006A05*
+- ID_MODEL_FROM_DATABASE=SFN5112F-R5 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5112F-R5 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00006A06*
+- ID_MODEL_FROM_DATABASE=SFN5112F-R6 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5112F-R6 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00007206*
+- ID_MODEL_FROM_DATABASE=SFN5162F-R6 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5162F-R6 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00007207*
+- ID_MODEL_FROM_DATABASE=SFN5162F-R7 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5162F-R7 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00007A06*
+- ID_MODEL_FROM_DATABASE=SFN5152F-R6 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5152F-R6 SFP+ Server Adapter)
+ pci:v00001924d00000803sv00001924sd00007A07*
+- ID_MODEL_FROM_DATABASE=SFN5152F-R7 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] (SFN5152F-R7 SFP+ Server Adapter)
+ pci:v00001924d00000813*
+  ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm]
+ pci:v00001924d00000813sv00001924sd00006100*
+- ID_MODEL_FROM_DATABASE=SFN5121T-R0 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R0 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00006102*
+- ID_MODEL_FROM_DATABASE=SFN5121T-R2 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R2 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00006103*
+- ID_MODEL_FROM_DATABASE=SFN5121T-R3 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R3 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00006104*
+- ID_MODEL_FROM_DATABASE=SFN5121T-R4 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5121T-R4 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00006902*
+- ID_MODEL_FROM_DATABASE=SFN5111T-R2 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5111T-R2 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00006904*
+- ID_MODEL_FROM_DATABASE=SFN5111T-R4 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5111T-R4 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00007104*
+- ID_MODEL_FROM_DATABASE=SFN5161T-R4 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5161T-R4 10GBASE-T Server Adapter)
+ pci:v00001924d00000813sv00001924sd00007904*
+- ID_MODEL_FROM_DATABASE=SFN5151T-R4 10GBASE-T Server Adapter
++ ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] (SFN5151T-R4 10GBASE-T Server Adapter)
+ pci:v00001924d00000903*
+  ID_MODEL_FROM_DATABASE=SFC9120
+ pci:v00001924d00000903sv00001014sd000004CC*
+- ID_MODEL_FROM_DATABASE=SFN7122F-R2 2x10GbE SFP+ Flareon Ultra
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7122F-R2 2x10GbE SFP+ Flareon Ultra)
+ pci:v00001924d00000903sv00001924sd00008002*
+- ID_MODEL_FROM_DATABASE=SFN7122F-R1 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7122F-R1 SFP+ Server Adapter)
+ pci:v00001924d00000903sv00001924sd00008003*
+- ID_MODEL_FROM_DATABASE=SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter)
+ pci:v00001924d00000903sv00001924sd00008006*
+- ID_MODEL_FROM_DATABASE=SFN7022F-R1 SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7022F-R1 SFP+ Server Adapter)
+ pci:v00001924d00000903sv00001924sd00008007*
+- ID_MODEL_FROM_DATABASE=SFN7322F-R2 Precision Time SFP+ Server Adapter
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7322F-R2 Precision Time SFP+ Server Adapter)
+ pci:v00001924d00000903sv00001924sd00008009*
+- ID_MODEL_FROM_DATABASE=SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter)
+ pci:v00001924d00000903sv00001924sd0000800A*
+- ID_MODEL_FROM_DATABASE=SFN7x02F-R2 Flareon 7000 Series 10G Adapter
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R2 Flareon 7000 Series 10G Adapter)
+ pci:v00001924d00000923*
+  ID_MODEL_FROM_DATABASE=SFC9140
+ pci:v00001924d00000923sv00001924sd0000800B*
+- ID_MODEL_FROM_DATABASE=SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
++ ID_MODEL_FROM_DATABASE=SFC9140 (SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter)
+ pci:v00001924d00001803*
+  ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm]
+@@ -51315,40 +51315,40 @@ pci:v00001924d00006703*
+  ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm]
+ pci:v00001924d00006703sv000010B8sd00000102*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A2) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SMC10GPCIe-10BT (A2) [TigerCard])
+ pci:v00001924d00006703sv000010B8sd00000103*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SMC10GPCIe-10BT (A3) [TigerCard])
+ pci:v00001924d00006703sv000010B8sd00000201*
+- ID_MODEL_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard]
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SMC10GPCIe-XFP (A1) [TigerCard])
+ pci:v00001924d00006703sv00001924sd00000101*
+- ID_MODEL_FROM_DATABASE=SFE4001-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4001-A1)
+ pci:v00001924d00006703sv00001924sd00000102*
+- ID_MODEL_FROM_DATABASE=SFE4001-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4001-A2)
+ pci:v00001924d00006703sv00001924sd00000103*
+- ID_MODEL_FROM_DATABASE=SFE4001-A3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4001-A3)
+ pci:v00001924d00006703sv00001924sd00000201*
+- ID_MODEL_FROM_DATABASE=SFE4002-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4002-A1)
+ pci:v00001924d00006703sv00001924sd00000301*
+- ID_MODEL_FROM_DATABASE=SFE4003-A1
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4003-A1)
+ pci:v00001924d00006703sv00001924sd00000302*
+- ID_MODEL_FROM_DATABASE=SFE4003-A2
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4003-A2)
+ pci:v00001924d00006703sv00001924sd00000303*
+- ID_MODEL_FROM_DATABASE=SFE4003-A3
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4003-A3)
+ pci:v00001924d00006703sv00001924sd00000304*
+- ID_MODEL_FROM_DATABASE=SFE4003-A4
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4003-A4)
+ pci:v00001924d00006703sv00001924sd00000500*
+- ID_MODEL_FROM_DATABASE=SFE4005-A0
++ ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] (SFE4005-A0)
+ pci:v00001924d0000C101*
+  ID_MODEL_FROM_DATABASE=EF1-21022T [EtherFabric]
+@@ -51549,13 +51549,13 @@ pci:v00001957d00000084*
+  ID_MODEL_FROM_DATABASE=MPC8347E PBGA
+ pci:v00001957d00000084sv0000110Asd00004074*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1628
++ ID_MODEL_FROM_DATABASE=MPC8347E PBGA (SIMATIC NET CP 1628)
+ pci:v00001957d00000085*
+  ID_MODEL_FROM_DATABASE=MPC8347 PBGA
+ pci:v00001957d00000085sv0000110Asd00004046*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1623
++ ID_MODEL_FROM_DATABASE=MPC8347 PBGA (SIMATIC NET CP 1623)
+ pci:v00001957d00000086*
+  ID_MODEL_FROM_DATABASE=MPC8343E
+@@ -51570,7 +51570,7 @@ pci:v00001957d000000B6*
+  ID_MODEL_FROM_DATABASE=MPC8314E
+ pci:v00001957d000000B6sv00001A56sd00001101*
+- ID_MODEL_FROM_DATABASE=Killer Xeno Pro Gigabit Ethernet Controller
++ ID_MODEL_FROM_DATABASE=MPC8314E (Killer Xeno Pro Gigabit Ethernet Controller)
+ pci:v00001957d000000C2*
+  ID_MODEL_FROM_DATABASE=MPC8379E
+@@ -51621,7 +51621,7 @@ pci:v00001957d00000111*
+  ID_MODEL_FROM_DATABASE=P1022
+ pci:v00001957d00000111sv00001C7Fsd00005200*
+- ID_MODEL_FROM_DATABASE=EB5200
++ ID_MODEL_FROM_DATABASE=P1022 (EB5200)
+ pci:v00001957d00000118*
+  ID_MODEL_FROM_DATABASE=P1013E
+@@ -51660,7 +51660,7 @@ pci:v00001957d0000C006*
+  ID_MODEL_FROM_DATABASE=MPC8308
+ pci:v00001957d0000C006sv00001A56sd00001201*
+- ID_MODEL_FROM_DATABASE=Killer E2100 Gigabit Ethernet Controller
++ ID_MODEL_FROM_DATABASE=MPC8308 (Killer E2100 Gigabit Ethernet Controller)
+ pci:v00001958*
+  ID_VENDOR_FROM_DATABASE=Faster Technology, LLC.
+@@ -51726,13 +51726,13 @@ pci:v00001969d00001026*
+  ID_MODEL_FROM_DATABASE=AR8121/AR8113/AR8114 Gigabit or Fast Ethernet
+ pci:v00001969d00001026sv00001043sd00008304*
+- ID_MODEL_FROM_DATABASE=P5KPL-CM Motherboard
++ ID_MODEL_FROM_DATABASE=AR8121/AR8113/AR8114 Gigabit or Fast Ethernet (P5KPL-CM Motherboard)
+ pci:v00001969d00001048*
+  ID_MODEL_FROM_DATABASE=Attansic L1 Gigabit Ethernet
+ pci:v00001969d00001048sv00001043sd00008226*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=Attansic L1 Gigabit Ethernet (P5KPL-VM Motherboard)
+ pci:v00001969d00001062*
+  ID_MODEL_FROM_DATABASE=AR8132 Fast Ethernet
+@@ -51741,7 +51741,7 @@ pci:v00001969d00001063*
+  ID_MODEL_FROM_DATABASE=AR8131 Gigabit Ethernet
+ pci:v00001969d00001063sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=GA-G31M-ES2L Motherboard
++ ID_MODEL_FROM_DATABASE=AR8131 Gigabit Ethernet (GA-G31M-ES2L Motherboard)
+ pci:v00001969d00001066*
+  ID_MODEL_FROM_DATABASE=Attansic L2c Gigabit Ethernet
+@@ -51762,7 +51762,7 @@ pci:v00001969d00001091*
+  ID_MODEL_FROM_DATABASE=AR8161 Gigabit Ethernet
+ pci:v00001969d00001091sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=AR8161 Gigabit Ethernet (N56VZ)
+ pci:v00001969d000010A0*
+  ID_MODEL_FROM_DATABASE=QCA8172 Fast Ethernet
+@@ -51804,7 +51804,7 @@ pci:v00001971d00001011*
+  ID_MODEL_FROM_DATABASE=Physics Processing Unit [PhysX]
+ pci:v00001971d00001011sv00001043sd00000001*
+- ID_MODEL_FROM_DATABASE=PhysX P1
++ ID_MODEL_FROM_DATABASE=Physics Processing Unit [PhysX] (PhysX P1)
+ pci:v00001974*
+  ID_VENDOR_FROM_DATABASE=Eberspaecher Electronics
+@@ -51834,25 +51834,25 @@ pci:v0000197Bd00002361*
+  ID_MODEL_FROM_DATABASE=JMB361 AHCI/IDE
+ pci:v0000197Bd00002361sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=JMB361 AHCI/IDE (P965 Neo MS-7235 mainboard)
+ pci:v0000197Bd00002362*
+  ID_MODEL_FROM_DATABASE=JMB362 SATA Controller
+ pci:v0000197Bd00002362sv00001043sd00008460*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=JMB362 SATA Controller (P8P67 Deluxe Motherboard)
+ pci:v0000197Bd00002363*
+  ID_MODEL_FROM_DATABASE=JMB363 SATA/IDE Controller
+ pci:v0000197Bd00002363sv00001043sd000081E4*
+- ID_MODEL_FROM_DATABASE=P5B [JMB363]
++ ID_MODEL_FROM_DATABASE=JMB363 SATA/IDE Controller (P5B [JMB363])
+ pci:v0000197Bd00002363sv00001458sd0000B000*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=JMB363 SATA/IDE Controller (Motherboard)
+ pci:v0000197Bd00002363sv00001849sd00002363*
+- ID_MODEL_FROM_DATABASE=Motherboard (one of many)
++ ID_MODEL_FROM_DATABASE=JMB363 SATA/IDE Controller (Motherboard (one of many))
+ pci:v0000197Bd00002364*
+  ID_MODEL_FROM_DATABASE=JMB364 AHCI Controller
+@@ -51984,19 +51984,19 @@ pci:v000019A2d00000700*
+  ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC
+ pci:v000019A2d00000700sv0000103Csd00001747*
+- ID_MODEL_FROM_DATABASE=NC550SFP DualPort 10GbE Server Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (NC550SFP DualPort 10GbE Server Adapter)
+ pci:v000019A2d00000700sv0000103Csd00001749*
+- ID_MODEL_FROM_DATABASE=NC550SFP Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (NC550SFP Dual Port Server Adapter)
+ pci:v000019A2d00000700sv0000103Csd0000174A*
+- ID_MODEL_FROM_DATABASE=NC551m Dual Port FlexFabric 10Gb Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (NC551m Dual Port FlexFabric 10Gb Adapter)
+ pci:v000019A2d00000700sv0000103Csd0000174B*
+- ID_MODEL_FROM_DATABASE=StorageWorks NC550 DualPort Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (StorageWorks NC550 DualPort Converged Network Adapter)
+ pci:v000019A2d00000700sv0000103Csd00003314*
+- ID_MODEL_FROM_DATABASE=NC551i Dual Port FlexFabric 10Gb Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (NC551i Dual Port FlexFabric 10Gb Adapter)
+ pci:v000019A2d00000702*
+  ID_MODEL_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator
+@@ -52008,19 +52008,19 @@ pci:v000019A2d00000710*
+  ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3)
+ pci:v000019A2d00000710sv0000103Csd00003315*
+- ID_MODEL_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3) (NC553i 10Gb 2-port FlexFabric Converged Network Adapter)
+ pci:v000019A2d00000710sv0000103Csd00003340*
+- ID_MODEL_FROM_DATABASE=NC552SFP 2-port 10Gb Server Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3) (NC552SFP 2-port 10Gb Server Adapter)
+ pci:v000019A2d00000710sv0000103Csd00003341*
+- ID_MODEL_FROM_DATABASE=NC552m 10Gb 2-port FlexFabric Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3) (NC552m 10Gb 2-port FlexFabric Converged Network Adapter)
+ pci:v000019A2d00000710sv0000103Csd00003345*
+- ID_MODEL_FROM_DATABASE=NC553m 10Gb 2-port FlexFabric Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3) (NC553m 10Gb 2-port FlexFabric Converged Network Adapter)
+ pci:v000019A2d00000710sv0000103Csd0000337B*
+- ID_MODEL_FROM_DATABASE=NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3) (NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter)
+ pci:v000019A2d00000712*
+  ID_MODEL_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator (be3)
+@@ -52029,10 +52029,10 @@ pci:v000019A2d00000714*
+  ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Initiator (be3)
+ pci:v000019A2d00000714sv0000103Csd00003315*
+- ID_MODEL_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Initiator (be3) (NC553i 10Gb 2-port FlexFabric Converged Network Adapter)
+ pci:v000019A2d00000714sv0000103Csd0000337B*
+- ID_MODEL_FROM_DATABASE=NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Initiator (be3) (NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter)
+ pci:v000019A8*
+  ID_VENDOR_FROM_DATABASE=DAQDATA GmbH
+@@ -52332,16 +52332,16 @@ pci:v00001A78d00000031*
+  ID_MODEL_FROM_DATABASE=Virident FlashMAX Drive
+ pci:v00001A78d00000031sv00001A78sd00000034*
+- ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 3]
++ ID_MODEL_FROM_DATABASE=Virident FlashMAX Drive (FlashMAX PCIe SSD [rev 3])
+ pci:v00001A78d00000031sv00001A78sd00000037*
+- ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 3D]
++ ID_MODEL_FROM_DATABASE=Virident FlashMAX Drive (FlashMAX PCIe SSD [rev 3D])
+ pci:v00001A78d00000031sv00001A78sd00000038*
+- ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 4]
++ ID_MODEL_FROM_DATABASE=Virident FlashMAX Drive (FlashMAX PCIe SSD [rev 4])
+ pci:v00001A78d00000031sv00001A78sd00000039*
+- ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 4D]
++ ID_MODEL_FROM_DATABASE=Virident FlashMAX Drive (FlashMAX PCIe SSD [rev 4D])
+ pci:v00001A78d00000040*
+  ID_MODEL_FROM_DATABASE=FlashMAX II
+@@ -52479,25 +52479,25 @@ pci:v00001AEDd00001005*
+  ID_MODEL_FROM_DATABASE=ioDimm3
+ pci:v00001AEDd00001005sv00001014sd000003C3*
+- ID_MODEL_FROM_DATABASE=High IOPS SSD PCIe Adapter
++ ID_MODEL_FROM_DATABASE=ioDimm3 (High IOPS SSD PCIe Adapter)
+ pci:v00001AEDd00001005sv0000103Csd0000176F*
+- ID_MODEL_FROM_DATABASE=1.28TB MLC PCIe ioDrive Duo
++ ID_MODEL_FROM_DATABASE=ioDimm3 (1.28TB MLC PCIe ioDrive Duo)
+ pci:v00001AEDd00001005sv0000103Csd00001770*
+- ID_MODEL_FROM_DATABASE=5.2TB MLC PCIe ioDrive Octal
++ ID_MODEL_FROM_DATABASE=ioDimm3 (5.2TB MLC PCIe ioDrive Octal)
+ pci:v00001AEDd00001005sv0000103Csd0000178B*
+- ID_MODEL_FROM_DATABASE=160GB SLC PCIe ioDrive
++ ID_MODEL_FROM_DATABASE=ioDimm3 (160GB SLC PCIe ioDrive)
+ pci:v00001AEDd00001005sv0000103Csd0000178C*
+- ID_MODEL_FROM_DATABASE=320GB MLC PCIe ioDrive
++ ID_MODEL_FROM_DATABASE=ioDimm3 (320GB MLC PCIe ioDrive)
+ pci:v00001AEDd00001005sv0000103Csd0000178D*
+- ID_MODEL_FROM_DATABASE=320GB SLC PCIe ioDrive Duo
++ ID_MODEL_FROM_DATABASE=ioDimm3 (320GB SLC PCIe ioDrive Duo)
+ pci:v00001AEDd00001005sv0000103Csd0000178E*
+- ID_MODEL_FROM_DATABASE=640GB MLC PCIe ioDrive Duo
++ ID_MODEL_FROM_DATABASE=ioDimm3 (640GB MLC PCIe ioDrive Duo)
+ pci:v00001AEDd00001006*
+  ID_MODEL_FROM_DATABASE=ioXtreme
+@@ -52548,7 +52548,7 @@ pci:v00001AF4d00001110*
+  ID_MODEL_FROM_DATABASE=Inter-VM shared memory
+ pci:v00001AF4d00001110sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=Inter-VM shared memory (QEMU Virtual Machine)
+ pci:v00001AF5*
+  ID_VENDOR_FROM_DATABASE=Netezza Corp.
+@@ -52587,22 +52587,22 @@ pci:v00001B21d00000612*
+  ID_MODEL_FROM_DATABASE=ASM1062 Serial ATA Controller
+ pci:v00001B21d00000612sv00001849sd00000612*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=ASM1062 Serial ATA Controller (Motherboard)
+ pci:v00001B21d00001042*
+  ID_MODEL_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller
+ pci:v00001B21d00001042sv00001043sd00008488*
+- ID_MODEL_FROM_DATABASE=P8B WS Motherboard
++ ID_MODEL_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller (P8B WS Motherboard)
+ pci:v00001B21d00001042sv00001849sd00001042*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller (Motherboard)
+ pci:v00001B21d00001080*
+  ID_MODEL_FROM_DATABASE=ASM1083/1085 PCIe to PCI Bridge
+ pci:v00001B21d00001080sv00001849sd00001080*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=ASM1083/1085 PCIe to PCI Bridge (Motherboard)
+ pci:v00001B2C*
+  ID_VENDOR_FROM_DATABASE=Opal-RT Technologies Inc.
+@@ -52617,31 +52617,31 @@ pci:v00001B36d00000002*
+  ID_MODEL_FROM_DATABASE=QEMU PCI 16550A Adapter
+ pci:v00001B36d00000002sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=QEMU PCI 16550A Adapter (QEMU Virtual Machine)
+ pci:v00001B36d00000003*
+  ID_MODEL_FROM_DATABASE=QEMU PCI Dual-port 16550A Adapter
+ pci:v00001B36d00000003sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=QEMU PCI Dual-port 16550A Adapter (QEMU Virtual Machine)
+ pci:v00001B36d00000004*
+  ID_MODEL_FROM_DATABASE=QEMU PCI Quad-port 16550A Adapter
+ pci:v00001B36d00000004sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=QEMU PCI Quad-port 16550A Adapter (QEMU Virtual Machine)
+ pci:v00001B36d00000005*
+  ID_MODEL_FROM_DATABASE=QEMU PCI Test Device
+ pci:v00001B36d00000005sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=QEMU PCI Test Device (QEMU Virtual Machine)
+ pci:v00001B36d00000100*
+  ID_MODEL_FROM_DATABASE=QXL paravirtual graphic card
+ pci:v00001B36d00000100sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=QXL paravirtual graphic card (QEMU Virtual Machine)
+ pci:v00001B37*
+  ID_VENDOR_FROM_DATABASE=Signal Processing Devices Sweden AB
+@@ -52662,10 +52662,10 @@ pci:v00001B3Ed00001FA8*
+  ID_MODEL_FROM_DATABASE=BYNET BIC2SE/X
+ pci:v00001B3Ed00001FA8sv00001B3Esd000000A3*
+- ID_MODEL_FROM_DATABASE=BYNET BIC2SX
++ ID_MODEL_FROM_DATABASE=BYNET BIC2SE/X (BYNET BIC2SX)
+ pci:v00001B3Ed00001FA8sv00001B3Esd000000C3*
+- ID_MODEL_FROM_DATABASE=BYNET BIC2SE
++ ID_MODEL_FROM_DATABASE=BYNET BIC2SE/X (BYNET BIC2SE)
+ pci:v00001B40*
+  ID_VENDOR_FROM_DATABASE=Schooner Information Technology, Inc.
+@@ -52701,7 +52701,7 @@ pci:v00001B4Bd00009130*
+  ID_MODEL_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo
+ pci:v00001B4Bd00009130sv00001043sd00008438*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo (P8P67 Deluxe Motherboard)
+ pci:v00001B4Bd00009172*
+  ID_MODEL_FROM_DATABASE=88SE9172 SATA 6Gb/s Controller
+@@ -52767,7 +52767,7 @@ pci:v00001B73d00001000*
+  ID_MODEL_FROM_DATABASE=FL1000G USB 3.0 Host Controller
+ pci:v00001B73d00001000sv00001D5Csd00001000*
+- ID_MODEL_FROM_DATABASE=Anker USB 3.0 Express Card
++ ID_MODEL_FROM_DATABASE=FL1000G USB 3.0 Host Controller (Anker USB 3.0 Express Card)
+ pci:v00001B73d00001009*
+  ID_MODEL_FROM_DATABASE=FL1009 USB 3.0 Host Controller
+@@ -53010,67 +53010,67 @@ pci:v00001FC9d00003010*
+  ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC
+ pci:v00001FC9d00003010sv00000000sd00003002*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port XFP SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC (10-Giga TOE Single Port XFP SmartNIC)
+ pci:v00001FC9d00003010sv00000000sd00003004*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC (10-Giga TOE Single Port SFP+ SmartNIC)
+ pci:v00001FC9d00003010sv00000000sd00003008*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port CX4 SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC (10-Giga TOE Single Port CX4 SmartNIC)
+ pci:v00001FC9d00003014*
+  ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC 2-Port
+ pci:v00001FC9d00003014sv00000000sd00003003*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port XFP Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC 2-Port (10-Giga TOE Dual Port XFP Low Profile SmartNIC)
+ pci:v00001FC9d00003014sv00000000sd00003005*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC 2-Port (10-Giga TOE Dual Port SFP+ Low Profile SmartNIC)
+ pci:v00001FC9d00003014sv00000000sd00003014*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC 2-Port (10-Giga TOE Dual Port CX4 Low Profile SmartNIC)
+ pci:v00001FC9d00003110*
+  ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SmartNIC
+ pci:v00001FC9d00003110sv00000000sd00003004*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SmartNIC (10-Giga TOE Single Port SFP+ SmartNIC)
+ pci:v00001FC9d00003114*
+  ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC
+ pci:v00001FC9d00003114sv00000000sd00003005*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port SFP+ Low Profile SmartNIC)
+ pci:v00001FC9d00003114sv00000000sd00003011*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC)
+ pci:v00001FC9d00003114sv00000000sd00003012*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC)
+ pci:v00001FC9d00003114sv00000000sd00003014*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port CX4 Low Profile SmartNIC)
+ pci:v00001FC9d00003310*
+  ID_MODEL_FROM_DATABASE=10-Giga TOE SFP+ Single Port SmartNIC
+ pci:v00001FC9d00003310sv00000000sd00003004*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE SFP+ Single Port SmartNIC (10-Giga TOE Single Port SFP+ SmartNIC)
+ pci:v00001FC9d00003314*
+  ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC
+ pci:v00001FC9d00003314sv00000000sd00003005*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port SFP+ Low Profile SmartNIC)
+ pci:v00001FC9d00003314sv00000000sd00003011*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC)
+ pci:v00001FC9d00003314sv00000000sd00003012*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC)
+ pci:v00001FC9d00003314sv00000000sd00003014*
+- ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC
++ ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC (10-Giga TOE Dual Port CX4 Low Profile SmartNIC)
+ pci:v00001FCE*
+  ID_VENDOR_FROM_DATABASE=Cognio Inc.
+@@ -53172,31 +53172,31 @@ pci:v00003388d00000021*
+  ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode)
+ pci:v00003388d00000021sv00001775sd0000C200*
+- ID_MODEL_FROM_DATABASE=C2K CompactPCI interface bridge
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (C2K CompactPCI interface bridge)
+ pci:v00003388d00000021sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (CE9)
+ pci:v00003388d00000021sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (CT7 mainboard)
+ pci:v00003388d00000021sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (CT8 mainboard)
+ pci:v00003388d00000021sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 mainboard
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (Cx9 mainboard)
+ pci:v00003388d00000021sv00004C53sd000010A0*
+- ID_MODEL_FROM_DATABASE=CA3/CR3 mainboard
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (CA3/CR3 mainboard)
+ pci:v00003388d00000021sv00004C53sd00003010*
+- ID_MODEL_FROM_DATABASE=PPCI mezzanine (32-bit PMC)
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (PPCI mezzanine (32-bit PMC))
+ pci:v00003388d00000021sv00004C53sd00003011*
+- ID_MODEL_FROM_DATABASE=PPCI mezzanine (64-bit PMC)
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (PPCI mezzanine (64-bit PMC))
+ pci:v00003388d00000021sv00004C53sd00004000*
+- ID_MODEL_FROM_DATABASE=PMCCARR1 carrier board
++ ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) (PMCCARR1 carrier board)
+ pci:v00003388d00000022*
+  ID_MODEL_FROM_DATABASE=HiNT HB4 PCI-PCI Bridge (PCI6150)
+@@ -53220,19 +53220,19 @@ pci:v00003388d00008011*
+  ID_MODEL_FROM_DATABASE=VXPro II Chipset
+ pci:v00003388d00008011sv00003388sd00008011*
+- ID_MODEL_FROM_DATABASE=VXPro II Chipset CPU to PCI Bridge
++ ID_MODEL_FROM_DATABASE=VXPro II Chipset (CPU to PCI Bridge)
+ pci:v00003388d00008012*
+  ID_MODEL_FROM_DATABASE=VXPro II Chipset
+ pci:v00003388d00008012sv00003388sd00008012*
+- ID_MODEL_FROM_DATABASE=VXPro II Chipset PCI to ISA Bridge
++ ID_MODEL_FROM_DATABASE=VXPro II Chipset (PCI to ISA Bridge)
+ pci:v00003388d00008013*
+  ID_MODEL_FROM_DATABASE=VXPro II IDE
+ pci:v00003388d00008013sv00003388sd00008013*
+- ID_MODEL_FROM_DATABASE=VXPro II Chipset EIDE Controller
++ ID_MODEL_FROM_DATABASE=VXPro II IDE (VXPro II Chipset EIDE Controller)
+ pci:v00003388d0000A103*
+  ID_MODEL_FROM_DATABASE=Blackmagic Design DeckLink HD Pro
+@@ -53277,13 +53277,13 @@ pci:v00003D3Dd00000002*
+  ID_MODEL_FROM_DATABASE=GLINT 500TX
+ pci:v00003D3Dd00000002sv00000000sd00000000*
+- ID_MODEL_FROM_DATABASE=GLoria L
++ ID_MODEL_FROM_DATABASE=GLINT 500TX (GLoria L)
+ pci:v00003D3Dd00000003*
+  ID_MODEL_FROM_DATABASE=GLINT Delta
+ pci:v00003D3Dd00000003sv00000000sd00000000*
+- ID_MODEL_FROM_DATABASE=GLoria XL
++ ID_MODEL_FROM_DATABASE=GLINT Delta (GLoria XL)
+ pci:v00003D3Dd00000004*
+  ID_MODEL_FROM_DATABASE=Permedia
+@@ -53295,10 +53295,10 @@ pci:v00003D3Dd00000006*
+  ID_MODEL_FROM_DATABASE=GLINT MX
+ pci:v00003D3Dd00000006sv00000000sd00000000*
+- ID_MODEL_FROM_DATABASE=GLoria XL
++ ID_MODEL_FROM_DATABASE=GLINT MX (GLoria XL)
+ pci:v00003D3Dd00000006sv00001048sd00000A42*
+- ID_MODEL_FROM_DATABASE=GLoria XXL
++ ID_MODEL_FROM_DATABASE=GLINT MX (GLoria XXL)
+ pci:v00003D3Dd00000007*
+  ID_MODEL_FROM_DATABASE=3D Extreme
+@@ -53307,55 +53307,55 @@ pci:v00003D3Dd00000008*
+  ID_MODEL_FROM_DATABASE=GLINT Gamma G1
+ pci:v00003D3Dd00000008sv00001048sd00000A42*
+- ID_MODEL_FROM_DATABASE=GLoria XXL
++ ID_MODEL_FROM_DATABASE=GLINT Gamma G1 (GLoria XXL)
+ pci:v00003D3Dd00000009*
+  ID_MODEL_FROM_DATABASE=Permedia II 2D+3D
+ pci:v00003D3Dd00000009sv00001040sd00000011*
+- ID_MODEL_FROM_DATABASE=AccelStar II
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (AccelStar II)
+ pci:v00003D3Dd00000009sv00001048sd00000A42*
+- ID_MODEL_FROM_DATABASE=GLoria XXL
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (GLoria XXL)
+ pci:v00003D3Dd00000009sv000013E9sd00001000*
+- ID_MODEL_FROM_DATABASE=6221L-4U
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (6221L-4U)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000100*
+- ID_MODEL_FROM_DATABASE=AccelStar II 3D Accelerator
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (AccelStar II 3D Accelerator)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000111*
+- ID_MODEL_FROM_DATABASE=Permedia 3:16
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Permedia 3:16)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000114*
+- ID_MODEL_FROM_DATABASE=Santa Ana
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Santa Ana)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000116*
+- ID_MODEL_FROM_DATABASE=Oxygen GVX1
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Oxygen GVX1)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000119*
+- ID_MODEL_FROM_DATABASE=Scirocco
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Scirocco)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000120*
+- ID_MODEL_FROM_DATABASE=Santa Ana PCL
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Santa Ana PCL)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000125*
+- ID_MODEL_FROM_DATABASE=Oxygen VX1
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Oxygen VX1)
+ pci:v00003D3Dd00000009sv00003D3Dsd00000127*
+- ID_MODEL_FROM_DATABASE=Permedia3 Create!
++ ID_MODEL_FROM_DATABASE=Permedia II 2D+3D (Permedia3 Create!)
+ pci:v00003D3Dd0000000A*
+  ID_MODEL_FROM_DATABASE=GLINT R3
+ pci:v00003D3Dd0000000Asv00003D3Dsd00000121*
+- ID_MODEL_FROM_DATABASE=Oxygen VX1
++ ID_MODEL_FROM_DATABASE=GLINT R3 (Oxygen VX1)
+ pci:v00003D3Dd0000000C*
+  ID_MODEL_FROM_DATABASE=GLINT R3 [Oxygen VX1]
+ pci:v00003D3Dd0000000Csv00003D3Dsd00000144*
+- ID_MODEL_FROM_DATABASE=Oxygen VX1-4X AGP [Permedia 4]
++ ID_MODEL_FROM_DATABASE=GLINT R3 [Oxygen VX1] (Oxygen VX1-4X AGP [Permedia 4])
+ pci:v00003D3Dd0000000D*
+  ID_MODEL_FROM_DATABASE=GLint R4 rev A
+@@ -53472,13 +53472,13 @@ pci:v00004040d00000001*
+  ID_MODEL_FROM_DATABASE=NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface
+ pci:v00004040d00000001sv0000103Csd00007047*
+- ID_MODEL_FROM_DATABASE=NC510F PCIe 10-Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface (NC510F PCIe 10-Gigabit Server Adapter)
+ pci:v00004040d00000002*
+  ID_MODEL_FROM_DATABASE=NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface
+ pci:v00004040d00000002sv0000103Csd00007048*
+- ID_MODEL_FROM_DATABASE=NC510c PCIe 10-Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface (NC510c PCIe 10-Gigabit Server Adapter)
+ pci:v00004040d00000003*
+  ID_MODEL_FROM_DATABASE=NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface
+@@ -53490,7 +53490,7 @@ pci:v00004040d00000005*
+  ID_MODEL_FROM_DATABASE=NetXen Dual Port 10GbE Multifunction Adapter for c-Class
+ pci:v00004040d00000005sv0000103Csd0000170E*
+- ID_MODEL_FROM_DATABASE=NC512m Dual Port 10GbE Multifunction BL-C Adapter
++ ID_MODEL_FROM_DATABASE=NetXen Dual Port 10GbE Multifunction Adapter for c-Class (NC512m Dual Port 10GbE Multifunction BL-C Adapter)
+ pci:v00004040d00000024*
+  ID_MODEL_FROM_DATABASE=XG Mgmt
+@@ -53502,28 +53502,28 @@ pci:v00004040d00000100*
+  ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter
+ pci:v00004040d00000100sv0000103Csd0000171B*
+- ID_MODEL_FROM_DATABASE=NC522m Dual Port 10GbE Multifunction BL-c Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (NC522m Dual Port 10GbE Multifunction BL-c Adapter)
+ pci:v00004040d00000100sv0000103Csd00001740*
+- ID_MODEL_FROM_DATABASE=NC375T PCI Express Quad Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (NC375T PCI Express Quad Port Gigabit Server Adapter)
+ pci:v00004040d00000100sv0000103Csd00003251*
+- ID_MODEL_FROM_DATABASE=NC375i 1G w/NC524SFP 10G Module
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (NC375i 1G w/NC524SFP 10G Module)
+ pci:v00004040d00000100sv0000103Csd0000705A*
+- ID_MODEL_FROM_DATABASE=NC375i Integrated Quad Port Multifunction Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (NC375i Integrated Quad Port Multifunction Gigabit Server Adapter)
+ pci:v00004040d00000100sv0000103Csd0000705B*
+- ID_MODEL_FROM_DATABASE=NC522SFP Dual Port 10GbE Server Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (NC522SFP Dual Port 10GbE Server Adapter)
+ pci:v00004040d00000100sv0000152Dsd0000896B*
+- ID_MODEL_FROM_DATABASE=TG20 Dual Port 10GbE Server/Storage Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (TG20 Dual Port 10GbE Server/Storage Adapter)
+ pci:v00004040d00000100sv00004040sd00000124*
+- ID_MODEL_FROM_DATABASE=NX3031 Quad Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (NX3031 Quad Port Gigabit Server Adapter)
+ pci:v00004040d00000100sv00004040sd00000126*
+- ID_MODEL_FROM_DATABASE=Dual Port SFP+ 10GbE Server Adapter
++ ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter (Dual Port SFP+ 10GbE Server Adapter)
+ pci:v00004143*
+  ID_VENDOR_FROM_DATABASE=Digital Equipment Corp
+@@ -53571,190 +53571,190 @@ pci:v00004444d00000016*
+  ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder
+ pci:v00004444d00000016sv00000070sd00000003*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 250
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 250)
+ pci:v00004444d00000016sv00000070sd00000009*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv00000070sd00000801*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv00000070sd00000807*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv00000070sd00004001*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 250
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 250)
+ pci:v00004444d00000016sv00000070sd00004009*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 250
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 250)
+ pci:v00004444d00000016sv00000070sd00004801*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 250
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 250)
+ pci:v00004444d00000016sv00000070sd00004803*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 250
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 250)
+ pci:v00004444d00000016sv00000070sd00008003*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv00000070sd00008801*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv00000070sd0000C801*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv00000070sd0000E807*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 500 (1st unit)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 500 (1st unit))
+ pci:v00004444d00000016sv00000070sd0000E817*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 500 (2nd unit)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 500 (2nd unit))
+ pci:v00004444d00000016sv00000070sd0000FF92*
+- ID_MODEL_FROM_DATABASE=WiNTV PVR-550
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WiNTV PVR-550)
+ pci:v00004444d00000016sv00000270sd00000801*
+- ID_MODEL_FROM_DATABASE=WinTV PVR 150
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (WinTV PVR 150)
+ pci:v00004444d00000016sv0000104Dsd0000013D*
+- ID_MODEL_FROM_DATABASE=ENX-26 TV Encoder
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (ENX-26 TV Encoder)
+ pci:v00004444d00000016sv000010FCsd0000D038*
+- ID_MODEL_FROM_DATABASE=GV-MVP/RX2W (1st unit)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (GV-MVP/RX2W (1st unit))
+ pci:v00004444d00000016sv000010FCsd0000D039*
+- ID_MODEL_FROM_DATABASE=GV-MVP/RX2W (2nd unit)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (GV-MVP/RX2W (2nd unit))
+ pci:v00004444d00000016sv000012ABsd0000FFF3*
+- ID_MODEL_FROM_DATABASE=MPG600
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (MPG600)
+ pci:v00004444d00000016sv000012ABsd0000FFFF*
+- ID_MODEL_FROM_DATABASE=MPG600
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (MPG600)
+ pci:v00004444d00000016sv00001461sd0000C00A*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner))
+ pci:v00004444d00000016sv00001461sd0000C00B*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner))
+ pci:v00004444d00000016sv00001461sd0000C00C*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner))
+ pci:v00004444d00000016sv00001461sd0000C010*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner))
+ pci:v00004444d00000016sv00001461sd0000C011*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner))
+ pci:v00004444d00000016sv00001461sd0000C018*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C019*
+- ID_MODEL_FROM_DATABASE=UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C01A*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C01B*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C030*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC-J, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC-J, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C031*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C032*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (PAL/SECAM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C033*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C034*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C035*
+- ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC+FM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M113 PCI Analog TV (NTSC+FM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C03F*
+- ID_MODEL_FROM_DATABASE=C115 PCI video capture card (no tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (C115 PCI video capture card (no tuner))
+ pci:v00004444d00000016sv00001461sd0000C136*
+- ID_MODEL_FROM_DATABASE=M104 mini-PCI Analog TV
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M104 mini-PCI Analog TV)
+ pci:v00004444d00000016sv00001461sd0000C20A*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner))
+ pci:v00004444d00000016sv00001461sd0000C218*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C219*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C21A*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C21B*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner))
+ pci:v00004444d00000016sv00001461sd0000C230*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC-J, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (NTSC-J, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C231*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C232*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C233*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C234*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (NTSC, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C235*
+- ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner))
+ pci:v00004444d00000016sv00001461sd0000C337*
+- ID_MODEL_FROM_DATABASE=E106 AVerMedia AVerTV Video Capture
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (E106 AVerMedia AVerTV Video Capture)
+ pci:v00004444d00000016sv00001461sd0000C439*
+- ID_MODEL_FROM_DATABASE=M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner))
+ pci:v00004444d00000016sv00001461sd0000C5FF*
+- ID_MODEL_FROM_DATABASE=C755 AVerTV Video Capture card (no tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (C755 AVerTV Video Capture card (no tuner))
+ pci:v00004444d00000016sv00001461sd0000C6FF*
+- ID_MODEL_FROM_DATABASE=C115 PCI video capture card (no tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (C115 PCI video capture card (no tuner))
+ pci:v00004444d00000016sv00001461sd0000C739*
+- ID_MODEL_FROM_DATABASE=M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner)
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner))
+ pci:v00004444d00000016sv00009005sd00000092*
+- ID_MODEL_FROM_DATABASE=VideOh! AVC-2010
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (VideOh! AVC-2010)
+ pci:v00004444d00000016sv00009005sd00000093*
+- ID_MODEL_FROM_DATABASE=VideOh! AVC-2410
++ ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder (VideOh! AVC-2410)
+ pci:v00004444d00000803*
+  ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder
+ pci:v00004444d00000803sv00000070sd00004000*
+- ID_MODEL_FROM_DATABASE=WinTV PVR-350
++ ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder (WinTV PVR-350)
+ pci:v00004444d00000803sv00000070sd00004001*
+- ID_MODEL_FROM_DATABASE=WinTV PVR-250
++ ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder (WinTV PVR-250)
+ pci:v00004444d00000803sv00000070sd00004800*
+- ID_MODEL_FROM_DATABASE=WinTV PVR-350 (V1)
++ ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder (WinTV PVR-350 (V1))
+ pci:v00004444d00000803sv000012ABsd00000000*
+- ID_MODEL_FROM_DATABASE=MPG160
++ ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder (MPG160)
+ pci:v00004444d00000803sv00001461sd0000A3CE*
+- ID_MODEL_FROM_DATABASE=M179
++ ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder (M179)
+ pci:v00004444d00000803sv00001461sd0000A3CF*
+- ID_MODEL_FROM_DATABASE=M179
++ ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder (M179)
+ pci:v00004468*
+  ID_VENDOR_FROM_DATABASE=Bridgeport machines
+@@ -53961,7 +53961,7 @@ pci:v00004A14d00005000*
+  ID_MODEL_FROM_DATABASE=NV5000SC
+ pci:v00004A14d00005000sv00004A14sd00005000*
+- ID_MODEL_FROM_DATABASE=RT8029-Based Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=NV5000SC (RT8029-Based Ethernet Adapter)
+ pci:v00004B10*
+  ID_VENDOR_FROM_DATABASE=Buslogic Inc.
+@@ -53976,16 +53976,16 @@ pci:v00004C53d00000000*
+  ID_MODEL_FROM_DATABASE=PLUSTEST device
+ pci:v00004C53d00000000sv00004C53sd00003000*
+- ID_MODEL_FROM_DATABASE=PLUSTEST card (PC104+)
++ ID_MODEL_FROM_DATABASE=PLUSTEST device (PLUSTEST card (PC104+))
+ pci:v00004C53d00000000sv00004C53sd00003001*
+- ID_MODEL_FROM_DATABASE=PLUSTEST card (PMC)
++ ID_MODEL_FROM_DATABASE=PLUSTEST device (PLUSTEST card (PMC))
+ pci:v00004C53d00000001*
+  ID_MODEL_FROM_DATABASE=PLUSTEST-MM device
+ pci:v00004C53d00000001sv00004C53sd00003002*
+- ID_MODEL_FROM_DATABASE=PLUSTEST-MM card (PMC)
++ ID_MODEL_FROM_DATABASE=PLUSTEST-MM device (PLUSTEST-MM card (PMC))
+ pci:v00004CA1*
+  ID_VENDOR_FROM_DATABASE=Seanix Technology Inc
+@@ -54222,13 +54222,13 @@ pci:v00005333d00008900*
+  ID_MODEL_FROM_DATABASE=86c755 [Trio 64V2/DX]
+ pci:v00005333d00008900sv00005333sd00008900*
+- ID_MODEL_FROM_DATABASE=86C775 Trio64V2/DX
++ ID_MODEL_FROM_DATABASE=86c755 [Trio 64V2/DX] (86C775 Trio64V2/DX)
+ pci:v00005333d00008901*
+  ID_MODEL_FROM_DATABASE=86c775/86c785 [Trio 64V2/DX or /GX]
+ pci:v00005333d00008901sv00005333sd00008901*
+- ID_MODEL_FROM_DATABASE=86C775 Trio64V2/DX, 86C785 Trio64V2/GX
++ ID_MODEL_FROM_DATABASE=86c775/86c785 [Trio 64V2/DX or /GX] (86C775 Trio64V2/DX, 86C785 Trio64V2/GX)
+ pci:v00005333d00008902*
+  ID_MODEL_FROM_DATABASE=Plato/PX
+@@ -54240,13 +54240,13 @@ pci:v00005333d00008904*
+  ID_MODEL_FROM_DATABASE=86c365, 86c366 [Trio 3D]
+ pci:v00005333d00008904sv00001014sd000000DB*
+- ID_MODEL_FROM_DATABASE=Integrated Trio3D
++ ID_MODEL_FROM_DATABASE=86c365, 86c366 [Trio 3D] (Integrated Trio3D)
+ pci:v00005333d00008904sv00004843sd0000314A*
+- ID_MODEL_FROM_DATABASE=Terminator 128/3D GLH
++ ID_MODEL_FROM_DATABASE=86c365, 86c366 [Trio 3D] (Terminator 128/3D GLH)
+ pci:v00005333d00008904sv00005333sd00008904*
+- ID_MODEL_FROM_DATABASE=86C365 Trio3D AGP
++ ID_MODEL_FROM_DATABASE=86c365, 86c366 [Trio 3D] (86C365 Trio3D AGP)
+ pci:v00005333d00008905*
+  ID_MODEL_FROM_DATABASE=Trio 64V+ family
+@@ -54285,40 +54285,40 @@ pci:v00005333d00008A01*
+  ID_MODEL_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX]
+ pci:v00005333d00008A01sv00000E11sd0000B032*
+- ID_MODEL_FROM_DATABASE=ViRGE/GX
++ ID_MODEL_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] (ViRGE/GX)
+ pci:v00005333d00008A01sv000010B4sd00001617*
+- ID_MODEL_FROM_DATABASE=Nitro 3D
++ ID_MODEL_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] (Nitro 3D)
+ pci:v00005333d00008A01sv000010B4sd00001717*
+- ID_MODEL_FROM_DATABASE=Nitro 3D
++ ID_MODEL_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] (Nitro 3D)
+ pci:v00005333d00008A01sv00005333sd00008A01*
+- ID_MODEL_FROM_DATABASE=ViRGE/DX
++ ID_MODEL_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] (ViRGE/DX)
+ pci:v00005333d00008A10*
+  ID_MODEL_FROM_DATABASE=ViRGE/GX2
+ pci:v00005333d00008A10sv00001092sd00008A10*
+- ID_MODEL_FROM_DATABASE=Stealth 3D 4000
++ ID_MODEL_FROM_DATABASE=ViRGE/GX2 (Stealth 3D 4000)
+ pci:v00005333d00008A13*
+  ID_MODEL_FROM_DATABASE=86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X]
+ pci:v00005333d00008A13sv00005333sd00008A13*
+- ID_MODEL_FROM_DATABASE=Trio3D/2X
++ ID_MODEL_FROM_DATABASE=86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] (Trio3D/2X)
+ pci:v00005333d00008A20*
+  ID_MODEL_FROM_DATABASE=86c794 [Savage 3D]
+ pci:v00005333d00008A20sv00005333sd00008A20*
+- ID_MODEL_FROM_DATABASE=86C391 Savage3D
++ ID_MODEL_FROM_DATABASE=86c794 [Savage 3D] (86C391 Savage3D)
+ pci:v00005333d00008A21*
+  ID_MODEL_FROM_DATABASE=86c390 [Savage 3D/MV]
+ pci:v00005333d00008A21sv00005333sd00008A21*
+- ID_MODEL_FROM_DATABASE=86C390 Savage3D/MV
++ ID_MODEL_FROM_DATABASE=86c390 [Savage 3D/MV] (86C390 Savage3D/MV)
+ pci:v00005333d00008A22*
+  ID_MODEL_FROM_DATABASE=Savage 4
+@@ -54330,85 +54330,85 @@ pci:v00005333d00008A22sv00001033sd00008069*
+  ID_MODEL_FROM_DATABASE=Savage 4
+ pci:v00005333d00008A22sv00001033sd00008110*
+- ID_MODEL_FROM_DATABASE=Savage 4 LT
++ ID_MODEL_FROM_DATABASE=Savage 4 (LT)
+ pci:v00005333d00008A22sv0000105Dsd00000018*
+- ID_MODEL_FROM_DATABASE=SR9 8Mb SDRAM
++ ID_MODEL_FROM_DATABASE=Savage 4 (SR9 8Mb SDRAM)
+ pci:v00005333d00008A22sv0000105Dsd0000002A*
+- ID_MODEL_FROM_DATABASE=SR9 Pro 16Mb SDRAM
++ ID_MODEL_FROM_DATABASE=Savage 4 (SR9 Pro 16Mb SDRAM)
+ pci:v00005333d00008A22sv0000105Dsd0000003A*
+- ID_MODEL_FROM_DATABASE=SR9 Pro 32Mb SDRAM
++ ID_MODEL_FROM_DATABASE=Savage 4 (SR9 Pro 32Mb SDRAM)
+ pci:v00005333d00008A22sv0000105Dsd0000092F*
+- ID_MODEL_FROM_DATABASE=SR9 Pro+ 16Mb SGRAM
++ ID_MODEL_FROM_DATABASE=Savage 4 (SR9 Pro+ 16Mb SGRAM)
+ pci:v00005333d00008A22sv00001092sd00004207*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd00004800*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd00004807*
+- ID_MODEL_FROM_DATABASE=SpeedStar A90
++ ID_MODEL_FROM_DATABASE=Savage 4 (SpeedStar A90)
+ pci:v00005333d00008A22sv00001092sd00004808*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd00004809*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd0000480E*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd00004904*
+- ID_MODEL_FROM_DATABASE=Stealth III S520
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S520)
+ pci:v00005333d00008A22sv00001092sd00004905*
+- ID_MODEL_FROM_DATABASE=SpeedStar A200
++ ID_MODEL_FROM_DATABASE=Savage 4 (SpeedStar A200)
+ pci:v00005333d00008A22sv00001092sd00004A09*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd00004A0B*
+- ID_MODEL_FROM_DATABASE=Stealth III S540 Xtreme
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540 Xtreme)
+ pci:v00005333d00008A22sv00001092sd00004A0F*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001092sd00004E01*
+- ID_MODEL_FROM_DATABASE=Stealth III S540
++ ID_MODEL_FROM_DATABASE=Savage 4 (Stealth III S540)
+ pci:v00005333d00008A22sv00001102sd0000101D*
+- ID_MODEL_FROM_DATABASE=3d Blaster Savage 4
++ ID_MODEL_FROM_DATABASE=Savage 4 (3d Blaster Savage 4)
+ pci:v00005333d00008A22sv00001102sd0000101E*
+- ID_MODEL_FROM_DATABASE=3d Blaster Savage 4
++ ID_MODEL_FROM_DATABASE=Savage 4 (3d Blaster Savage 4)
+ pci:v00005333d00008A22sv00005333sd00008100*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 100
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 SDRAM 100)
+ pci:v00005333d00008A22sv00005333sd00008110*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 110
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 SDRAM 110)
+ pci:v00005333d00008A22sv00005333sd00008125*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 125
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 SDRAM 125)
+ pci:v00005333d00008A22sv00005333sd00008143*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 143
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 SDRAM 143)
+ pci:v00005333d00008A22sv00005333sd00008A22*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4)
+ pci:v00005333d00008A22sv00005333sd00008A2E*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 32bit
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 32bit)
+ pci:v00005333d00008A22sv00005333sd00009125*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SGRAM 125
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 SGRAM 125)
+ pci:v00005333d00008A22sv00005333sd00009143*
+- ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SGRAM 143
++ ID_MODEL_FROM_DATABASE=Savage 4 (86C394-397 Savage4 SGRAM 143)
+ pci:v00005333d00008A23*
+  ID_MODEL_FROM_DATABASE=Savage 4
+@@ -54417,7 +54417,7 @@ pci:v00005333d00008A25*
+  ID_MODEL_FROM_DATABASE=ProSavage PM133
+ pci:v00005333d00008A25sv00000303sd00000303*
+- ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard]
++ ID_MODEL_FROM_DATABASE=ProSavage PM133 (D9840-60001 [Brio BA410 Motherboard])
+ pci:v00005333d00008A26*
+  ID_MODEL_FROM_DATABASE=ProSavage KM133
+@@ -54447,16 +54447,16 @@ pci:v00005333d00008C12*
+  ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX-MV]
+ pci:v00005333d00008C12sv00001014sd0000017F*
+- ID_MODEL_FROM_DATABASE=ThinkPad T20/T22
++ ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX-MV] (ThinkPad T20/T22)
+ pci:v00005333d00008C12sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=86C584 SuperSavage/IXC Toshiba
++ ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX-MV] (86C584 SuperSavage/IXC Toshiba)
+ pci:v00005333d00008C13*
+  ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX]
+ pci:v00005333d00008C13sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX] (Magnia Z310)
+ pci:v00005333d00008C22*
+  ID_MODEL_FROM_DATABASE=SuperSavage MX/128
+@@ -54483,7 +54483,7 @@ pci:v00005333d00008C2E*
+  ID_MODEL_FROM_DATABASE=SuperSavage IX/C SDR
+ pci:v00005333d00008C2Esv00001014sd000001FC*
+- ID_MODEL_FROM_DATABASE=ThinkPad T23
++ ID_MODEL_FROM_DATABASE=SuperSavage IX/C SDR (ThinkPad T23)
+ pci:v00005333d00008C2F*
+  ID_MODEL_FROM_DATABASE=SuperSavage IX/C DDR
+@@ -54513,7 +54513,7 @@ pci:v00005333d00008E48*
+  ID_MODEL_FROM_DATABASE=Matrix [Chrome S25 / S27]
+ pci:v00005333d00008E48sv00005333sd00000130*
+- ID_MODEL_FROM_DATABASE=Chrome S27 256M DDR2
++ ID_MODEL_FROM_DATABASE=Matrix [Chrome S25 / S27] (Chrome S27 256M DDR2)
+ pci:v00005333d00009043*
+  ID_MODEL_FROM_DATABASE=Chrome 430 GT
+@@ -54528,28 +54528,28 @@ pci:v00005333d00009102*
+  ID_MODEL_FROM_DATABASE=86C410 [Savage 2000]
+ pci:v00005333d00009102sv00001092sd00005932*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005934*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005952*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005954*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005A35*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005A37*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005A55*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d00009102sv00001092sd00005A57*
+- ID_MODEL_FROM_DATABASE=Viper II Z200
++ ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] (Viper II Z200)
+ pci:v00005333d0000CA00*
+  ID_MODEL_FROM_DATABASE=SonicVibes
+@@ -54774,13 +54774,13 @@ pci:v00008086d00000044*
+  ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller
+ pci:v00008086d00000044sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller (Aspire 7740G)
+ pci:v00008086d00000044sv00001025sd00000487*
+- ID_MODEL_FROM_DATABASE=TravelMate 5742
++ ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller (TravelMate 5742)
+ pci:v00008086d00000044sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller (PC1-GROOVE)
+ pci:v00008086d00000045*
+  ID_MODEL_FROM_DATABASE=Core Processor PCI Express x16 Root Port
+@@ -54789,7 +54789,7 @@ pci:v00008086d00000046*
+  ID_MODEL_FROM_DATABASE=Core Processor Integrated Graphics Controller
+ pci:v00008086d00000046sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=Core Processor Integrated Graphics Controller (PC1-GROOVE)
+ pci:v00008086d00000047*
+  ID_MODEL_FROM_DATABASE=Core Processor Secondary PCI Express Root Port
+@@ -54816,202 +54816,202 @@ pci:v00008086d00000082*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak]
+ pci:v00008086d00000082sv00008086sd00001301*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 AGN)
+ pci:v00008086d00000082sv00008086sd00001306*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 ABG)
+ pci:v00008086d00000082sv00008086sd00001307*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 BG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 BG)
+ pci:v00008086d00000082sv00008086sd00001321*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 AGN)
+ pci:v00008086d00000082sv00008086sd00001326*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 ABG)
+ pci:v00008086d00000083*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak]
+ pci:v00008086d00000083sv00008086sd00001205*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BGN)
+ pci:v00008086d00000083sv00008086sd00001206*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BG)
+ pci:v00008086d00000083sv00008086sd00001225*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BGN)
+ pci:v00008086d00000083sv00008086sd00001226*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BG)
+ pci:v00008086d00000083sv00008086sd00001305*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BGN)
+ pci:v00008086d00000083sv00008086sd00001306*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BG)
+ pci:v00008086d00000083sv00008086sd00001325*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BGN)
+ pci:v00008086d00000083sv00008086sd00001326*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BG)
+ pci:v00008086d00000084*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak]
+ pci:v00008086d00000084sv00008086sd00001215*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BGN)
+ pci:v00008086d00000084sv00008086sd00001216*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BG)
+ pci:v00008086d00000084sv00008086sd00001315*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BGN)
+ pci:v00008086d00000084sv00008086sd00001316*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] (Centrino Wireless-N 1000 BG)
+ pci:v00008086d00000085*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak]
+ pci:v00008086d00000085sv00008086sd00001311*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 AGN)
+ pci:v00008086d00000085sv00008086sd00001316*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] (Centrino Advanced-N 6205 ABG)
+ pci:v00008086d00000087*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak]
+ pci:v00008086d00000087sv00008086sd00001301*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] (Centrino Advanced-N + WiMAX 6250 2x2 AGN)
+ pci:v00008086d00000087sv00008086sd00001306*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] (Centrino Advanced-N + WiMAX 6250 2x2 ABG)
+ pci:v00008086d00000087sv00008086sd00001321*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] (Centrino Advanced-N + WiMAX 6250 2x2 AGN)
+ pci:v00008086d00000087sv00008086sd00001326*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] (Centrino Advanced-N + WiMAX 6250 2x2 ABG)
+ pci:v00008086d00000089*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak]
+ pci:v00008086d00000089sv00008086sd00001311*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] (Centrino Advanced-N + WiMAX 6250 2x2 AGN)
+ pci:v00008086d00000089sv00008086sd00001316*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] (Centrino Advanced-N + WiMAX 6250 2x2 ABG)
+ pci:v00008086d0000008A*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak]
+ pci:v00008086d0000008Asv00008086sd00005305*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] (Centrino Wireless-N 1030 BGN)
+ pci:v00008086d0000008Asv00008086sd00005307*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] (Centrino Wireless-N 1030 BG)
+ pci:v00008086d0000008Asv00008086sd00005325*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] (Centrino Wireless-N 1030 BGN)
+ pci:v00008086d0000008Asv00008086sd00005327*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] (Centrino Wireless-N 1030 BG)
+ pci:v00008086d0000008B*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak]
+ pci:v00008086d0000008Bsv00008086sd00005315*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] (Centrino Wireless-N 1030 BGN)
+ pci:v00008086d0000008Bsv00008086sd00005317*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] (Centrino Wireless-N 1030 BG)
+ pci:v00008086d00000090*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak]
+ pci:v00008086d00000090sv00008086sd00005211*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 AGN)
+ pci:v00008086d00000090sv00008086sd00005215*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 BGN)
+ pci:v00008086d00000090sv00008086sd00005216*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 ABG)
+ pci:v00008086d00000091*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak]
+ pci:v00008086d00000091sv00008086sd00005201*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 AGN)
+ pci:v00008086d00000091sv00008086sd00005205*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 BGN)
+ pci:v00008086d00000091sv00008086sd00005206*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 ABG)
+ pci:v00008086d00000091sv00008086sd00005207*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 BG)
+ pci:v00008086d00000091sv00008086sd00005221*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 AGN)
+ pci:v00008086d00000091sv00008086sd00005225*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 BGN)
+ pci:v00008086d00000091sv00008086sd00005226*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] (Centrino Advanced-N 6230 ABG)
+ pci:v00008086d00000100*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller
+ pci:v00008086d00000100sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (XPS 8300)
+ pci:v00008086d00000100sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67/P8H67 Series Motherboard
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (P8P67/P8H67 Series Motherboard)
+ pci:v00008086d00000101*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
+ pci:v00008086d00000101sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (Vostro 3350)
+ pci:v00008086d00000101sv0000106Bsd000000DC*
+- ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00000102*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
+ pci:v00008086d00000102sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller (XPS 8300)
+ pci:v00008086d00000102sv00001043sd00000102*
+- ID_MODEL_FROM_DATABASE=P8H67 Series Motherboard
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller (P8H67 Series Motherboard)
+ pci:v00008086d00000104*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller
+ pci:v00008086d00000104sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (Precision M4600)
+ pci:v00008086d00000104sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (Vostro 3350)
+ pci:v00008086d00000104sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (Vostro 3750)
+ pci:v00008086d00000104sv0000106Bsd000000DC*
+- ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller (MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00000105*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
+ pci:v00008086d00000105sv0000106Bsd000000DC*
+- ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port (MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00000106*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
+@@ -55044,7 +55044,7 @@ pci:v00008086d00000116*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
+ pci:v00008086d00000116sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller (Vostro 3750)
+ pci:v00008086d00000122*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
+@@ -55053,64 +55053,64 @@ pci:v00008086d00000126*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller
+ pci:v00008086d00000126sv00001028sd000004CC*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller (Vostro 3350)
+ pci:v00008086d00000150*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller
+ pci:v00008086d00000150sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (P8H77-I Motherboard)
+ pci:v00008086d00000150sv00001849sd00000150*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (Motherboard)
+ pci:v00008086d00000151*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+ pci:v00008086d00000151sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (N56VZ)
+ pci:v00008086d00000151sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (P8 series motherboard)
+ pci:v00008086d00000151sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (P8H77-I Motherboard)
+ pci:v00008086d00000151sv00008086sd00002010*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (Server Board S1200BTS)
+ pci:v00008086d00000152*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+ pci:v00008086d00000152sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (P8H77-I Motherboard)
+ pci:v00008086d00000153*
+  ID_MODEL_FROM_DATABASE=3rd Gen Core Processor Thermal Subsystem
+ pci:v00008086d00000153sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=3rd Gen Core Processor Thermal Subsystem (Zenbook Prime UX31A)
+ pci:v00008086d00000154*
+  ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller
+ pci:v00008086d00000154sv00001025sd00000813*
+- ID_MODEL_FROM_DATABASE=Aspire R7-571
++ ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (Aspire R7-571)
+ pci:v00008086d00000154sv0000103Csd000017F6*
+- ID_MODEL_FROM_DATABASE=ProBook 4540s
++ ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (ProBook 4540s)
+ pci:v00008086d00000154sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (N56VZ)
+ pci:v00008086d00000154sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller (Zenbook Prime UX31A)
+ pci:v00008086d00000155*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+ pci:v00008086d00000155sv00008086sd00002010*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (Server Board S1200BTS)
+ pci:v00008086d00000156*
+  ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller
+@@ -55119,10 +55119,10 @@ pci:v00008086d00000158*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller
+ pci:v00008086d00000158sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller (P8 series motherboard)
+ pci:v00008086d00000158sv00008086sd00002010*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller (Server Board S1200BTS)
+ pci:v00008086d00000159*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+@@ -55137,7 +55137,7 @@ pci:v00008086d0000015D*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+ pci:v00008086d0000015Dsv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (P8 series motherboard)
+ pci:v00008086d0000015E*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+@@ -55146,22 +55146,22 @@ pci:v00008086d00000162*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+ pci:v00008086d00000162sv00001849sd00000162*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (Motherboard)
+ pci:v00008086d00000166*
+  ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller
+ pci:v00008086d00000166sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller (Zenbook Prime UX31A)
+ pci:v00008086d00000166sv00001043sd00002103*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller (N56VZ)
+ pci:v00008086d0000016A*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+ pci:v00008086d0000016Asv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8B WS Motherboard
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (P8B WS Motherboard)
+ pci:v00008086d00000172*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+@@ -55179,19 +55179,19 @@ pci:v00008086d00000326*
+  ID_MODEL_FROM_DATABASE=6700/6702PXH I/OxAPIC Interrupt Controller A
+ pci:v00008086d00000326sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=6700/6702PXH I/OxAPIC Interrupt Controller A (ProLiant DL140 G2)
+ pci:v00008086d00000326sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6700/6702PXH I/OxAPIC Interrupt Controller A (CR11/VR11 Single Board Computer)
+ pci:v00008086d00000327*
+  ID_MODEL_FROM_DATABASE=6700PXH I/OxAPIC Interrupt Controller B
+ pci:v00008086d00000327sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=6700PXH I/OxAPIC Interrupt Controller B (ProLiant DL140 G2)
+ pci:v00008086d00000327sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6700PXH I/OxAPIC Interrupt Controller B (CR11/VR11 Single Board Computer)
+ pci:v00008086d00000329*
+  ID_MODEL_FROM_DATABASE=6700PXH PCI Express-to-PCI Bridge A
+@@ -55260,7 +55260,7 @@ pci:v00008086d00000416*
+  ID_MODEL_FROM_DATABASE=4th Gen Core Processor Integrated Graphics Controller
+ pci:v00008086d00000416sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=4th Gen Core Processor Integrated Graphics Controller (ThinkPad T440p)
+ pci:v00008086d0000041A*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3 Processor Integrated Graphics Controller
+@@ -55365,16 +55365,16 @@ pci:v00008086d00000600*
+  ID_MODEL_FROM_DATABASE=RAID Controller
+ pci:v00008086d00000600sv00008086sd00000136*
+- ID_MODEL_FROM_DATABASE=SRCU31L
++ ID_MODEL_FROM_DATABASE=RAID Controller (SRCU31L)
+ pci:v00008086d00000600sv00008086sd000001AF*
+- ID_MODEL_FROM_DATABASE=SRCZCR
++ ID_MODEL_FROM_DATABASE=RAID Controller (SRCZCR)
+ pci:v00008086d00000600sv00008086sd000001C1*
+- ID_MODEL_FROM_DATABASE=ICP Vortex GDT8546RZ
++ ID_MODEL_FROM_DATABASE=RAID Controller (ICP Vortex GDT8546RZ)
+ pci:v00008086d00000600sv00008086sd000001F7*
+- ID_MODEL_FROM_DATABASE=SCRU32
++ ID_MODEL_FROM_DATABASE=RAID Controller (SCRU32)
+ pci:v00008086d0000061F*
+  ID_MODEL_FROM_DATABASE=80303 I/O Processor
+@@ -55467,301 +55467,301 @@ pci:v00008086d00000885*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150
+ pci:v00008086d00000885sv00008086sd00001305*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 (BGN)
+ pci:v00008086d00000885sv00008086sd00001307*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 (BG)
+ pci:v00008086d00000885sv00008086sd00001325*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 (BGN)
+ pci:v00008086d00000885sv00008086sd00001327*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 (BG)
+ pci:v00008086d00000886*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150
+ pci:v00008086d00000886sv00008086sd00001315*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 (BGN)
+ pci:v00008086d00000886sv00008086sd00001317*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 (BG)
+ pci:v00008086d00000887*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230
+ pci:v00008086d00000887sv00008086sd00004062*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 (BGN)
+ pci:v00008086d00000887sv00008086sd00004462*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 (BGN)
+ pci:v00008086d00000888*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230
+ pci:v00008086d00000888sv00008086sd00004262*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 (BGN)
+ pci:v00008086d0000088E*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235
+ pci:v00008086d0000088Esv00008086sd00004060*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 (AGN)
+ pci:v00008086d0000088Esv00008086sd00004460*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 (AGN)
+ pci:v00008086d0000088F*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235
+ pci:v00008086d0000088Fsv00008086sd00004260*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 (AGN)
+ pci:v00008086d00000890*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200
+ pci:v00008086d00000890sv00008086sd00004022*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 (BGN)
+ pci:v00008086d00000890sv00008086sd00004422*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 (BGN)
+ pci:v00008086d00000890sv00008086sd00004822*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 (BGN)
+ pci:v00008086d00000891*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200
+ pci:v00008086d00000891sv00008086sd00004222*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 (BGN)
+ pci:v00008086d00000892*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135
+ pci:v00008086d00000892sv00008086sd00000062*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 (BGN)
+ pci:v00008086d00000892sv00008086sd00000462*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 (BGN)
+ pci:v00008086d00000893*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135
+ pci:v00008086d00000893sv00008086sd00000262*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 (BGN)
+ pci:v00008086d00000894*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105
+ pci:v00008086d00000894sv00008086sd00000022*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 (BGN)
+ pci:v00008086d00000894sv00008086sd00000422*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 (BGN)
+ pci:v00008086d00000894sv00008086sd00000822*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 (BGN)
+ pci:v00008086d00000895*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105
+ pci:v00008086d00000895sv00008086sd00000222*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 (BGN)
+ pci:v00008086d00000896*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130
+ pci:v00008086d00000896sv00008086sd00005005*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 (BGN)
+ pci:v00008086d00000896sv00008086sd00005007*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 (BG)
+ pci:v00008086d00000896sv00008086sd00005025*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 (BGN)
+ pci:v00008086d00000896sv00008086sd00005027*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 (BG)
+ pci:v00008086d00000897*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130
+ pci:v00008086d00000897sv00008086sd00005015*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 (BGN)
+ pci:v00008086d00000897sv00008086sd00005017*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 (BG)
+ pci:v00008086d000008AE*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100
+ pci:v00008086d000008AEsv00008086sd00001005*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 (BGN)
+ pci:v00008086d000008AEsv00008086sd00001007*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 (BG)
+ pci:v00008086d000008AEsv00008086sd00001025*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 (BGN)
+ pci:v00008086d000008AEsv00008086sd00001027*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 (BG)
+ pci:v00008086d000008AF*
+  ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100
+ pci:v00008086d000008AFsv00008086sd00001015*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BGN
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 (BGN)
+ pci:v00008086d000008AFsv00008086sd00001017*
+- ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG
++ ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 (BG)
+ pci:v00008086d000008B1*
+  ID_MODEL_FROM_DATABASE=Wireless 7260
+ pci:v00008086d000008B1sv00008086sd00004060*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd00004062*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd00004070*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd00004160*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd00004162*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd00004170*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd00004460*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd00004462*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd00004470*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd0000486E*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd00004870*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd00004A6C*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd00004A6E*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd00004A70*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd0000C020*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C060*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C062*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C070*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd0000C160*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C162*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C170*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B1sv00008086sd0000C420*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C460*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C462*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B1sv00008086sd0000C470*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B2*
+  ID_MODEL_FROM_DATABASE=Wireless 7260
+ pci:v00008086d000008B2sv00008086sd00004220*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B2sv00008086sd00004260*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B2sv00008086sd00004262*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B2sv00008086sd00004270*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B2sv00008086sd0000C220*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B2sv00008086sd0000C260*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-N 7260)
+ pci:v00008086d000008B2sv00008086sd0000C262*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Wireless-N 7260)
+ pci:v00008086d000008B2sv00008086sd0000C270*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260
++ ID_MODEL_FROM_DATABASE=Wireless 7260 (Dual Band Wireless-AC 7260)
+ pci:v00008086d000008B3*
+  ID_MODEL_FROM_DATABASE=Wireless 3160
+ pci:v00008086d000008B3sv00008086sd00000060*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless-N 3160)
+ pci:v00008086d000008B3sv00008086sd00000062*
+- ID_MODEL_FROM_DATABASE=Wireless-N 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Wireless-N 3160)
+ pci:v00008086d000008B3sv00008086sd00000070*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless-AC 3160)
+ pci:v00008086d000008B3sv00008086sd00000170*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless-AC 3160)
+ pci:v00008086d000008B3sv00008086sd00000470*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless-AC 3160)
+ pci:v00008086d000008B3sv00008086sd00008060*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless N-3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless N-3160)
+ pci:v00008086d000008B3sv00008086sd00008062*
+- ID_MODEL_FROM_DATABASE=Wireless N-3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Wireless N-3160)
+ pci:v00008086d000008B3sv00008086sd00008070*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless AC 3160)
+ pci:v00008086d000008B3sv00008086sd00008170*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless AC 3160)
+ pci:v00008086d000008B3sv00008086sd00008470*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless AC 3160)
+ pci:v00008086d000008B4*
+  ID_MODEL_FROM_DATABASE=Wireless 3160
+ pci:v00008086d000008B4sv00008086sd00000270*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless-AC 3160)
+ pci:v00008086d000008B4sv00008086sd00008270*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160
++ ID_MODEL_FROM_DATABASE=Wireless 3160 (Dual Band Wireless AC 3160)
+ pci:v00008086d000008CF*
+  ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller
+@@ -55770,106 +55770,106 @@ pci:v00008086d0000095A*
+  ID_MODEL_FROM_DATABASE=Wireless 7265
+ pci:v00008086d0000095Asv00008086sd00001010*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005000*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-N 7265)
+ pci:v00008086d0000095Asv00008086sd00005002*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Wireless-N 7265)
+ pci:v00008086d0000095Asv00008086sd0000500A*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-N 7265)
+ pci:v00008086d0000095Asv00008086sd00005010*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005012*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005020*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-N 7265)
+ pci:v00008086d0000095Asv00008086sd0000502A*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-N 7265)
+ pci:v00008086d0000095Asv00008086sd00005090*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005100*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd0000510A*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005110*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005112*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005190*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005400*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005410*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005420*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-N 7265)
+ pci:v00008086d0000095Asv00008086sd00005490*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00005590*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009010*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009012*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009110*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009112*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009210*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009310*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009410*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Asv00008086sd00009510*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095B*
+  ID_MODEL_FROM_DATABASE=Wireless 7265
+ pci:v00008086d0000095Bsv00008086sd00005200*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-N 7265)
+ pci:v00008086d0000095Bsv00008086sd00005202*
+- ID_MODEL_FROM_DATABASE=Wireless-N 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Wireless-N 7265)
+ pci:v00008086d0000095Bsv00008086sd00005210*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Bsv00008086sd00005290*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Bsv00008086sd00005302*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d0000095Bsv00008086sd00005310*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Wireless 7265 (Dual Band Wireless-AC 7265)
+ pci:v00008086d00000960*
+  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge
+@@ -55884,7 +55884,7 @@ pci:v00008086d00000A04*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT DRAM Controller
+ pci:v00008086d00000A04sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Haswell-ULT DRAM Controller (ThinkPad X240)
+ pci:v00008086d00000A06*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+@@ -55893,13 +55893,13 @@ pci:v00008086d00000A0C*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT HD Audio Controller
+ pci:v00008086d00000A0Csv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Haswell-ULT HD Audio Controller (ThinkPad X240)
+ pci:v00008086d00000A16*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+ pci:v00008086d00000A16sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller (ThinkPad X240)
+ pci:v00008086d00000A22*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+@@ -55917,7 +55917,7 @@ pci:v00008086d00000BE1*
+  ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller
+ pci:v00008086d00000BE1sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller (D270S/D250S Motherboard)
+ pci:v00008086d00000BE2*
+  ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller
+@@ -55980,7 +55980,7 @@ pci:v00008086d00000BF5*
+  ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller
+ pci:v00008086d00000BF5sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller (D270S/D250S Motherboard)
+ pci:v00008086d00000BF6*
+  ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller
+@@ -55998,10 +55998,10 @@ pci:v00008086d00000C04*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
+ pci:v00008086d00000C04sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (ZBook 15)
+ pci:v00008086d00000C04sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller (ThinkPad T440p)
+ pci:v00008086d00000C05*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller
+@@ -56016,7 +56016,7 @@ pci:v00008086d00000C0C*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
+ pci:v00008086d00000C0Csv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (ThinkPad T440p)
+ pci:v00008086d00000C46*
+  ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1
+@@ -56787,34 +56787,34 @@ pci:v00008086d00001000*
+  ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d00001000sv00000E11sd0000B0DF*
+- ID_MODEL_FROM_DATABASE=NC6132 Gigabit Ethernet Adapter (1000-SX)
++ ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) (NC6132 Gigabit Ethernet Adapter (1000-SX))
+ pci:v00008086d00001000sv00000E11sd0000B0E0*
+- ID_MODEL_FROM_DATABASE=NC6133 Gigabit Ethernet Adapter (1000-LX)
++ ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) (NC6133 Gigabit Ethernet Adapter (1000-LX))
+ pci:v00008086d00001000sv00000E11sd0000B123*
+- ID_MODEL_FROM_DATABASE=NC6134 Gigabit Ethernet Adapter (1000-LX)
++ ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) (NC6134 Gigabit Ethernet Adapter (1000-LX))
+ pci:v00008086d00001000sv00001014sd00000119*
+- ID_MODEL_FROM_DATABASE=Netfinity Gigabit Ethernet SX Adapter
++ ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) (Netfinity Gigabit Ethernet SX Adapter)
+ pci:v00008086d00001000sv00008086sd00001000*
+- ID_MODEL_FROM_DATABASE=PRO/1000 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) (PRO/1000 Gigabit Server Adapter)
+ pci:v00008086d00001001*
+  ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d00001001sv00000E11sd0000004A*
+- ID_MODEL_FROM_DATABASE=NC6136 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber) (NC6136 Gigabit Server Adapter)
+ pci:v00008086d00001001sv00001014sd000001EA*
+- ID_MODEL_FROM_DATABASE=Netfinity Gigabit Ethernet SX Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber) (Netfinity Gigabit Ethernet SX Adapter)
+ pci:v00008086d00001001sv00008086sd00001002*
+- ID_MODEL_FROM_DATABASE=PRO/1000 F Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber) (PRO/1000 F Server Adapter)
+ pci:v00008086d00001001sv00008086sd00001003*
+- ID_MODEL_FROM_DATABASE=PRO/1000 F Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber) (PRO/1000 F Server Adapter)
+ pci:v00008086d00001002*
+  ID_MODEL_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II
+@@ -56823,64 +56823,64 @@ pci:v00008086d00001002sv00008086sd0000200E*
+  ID_MODEL_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II
+ pci:v00008086d00001002sv00008086sd00002013*
+- ID_MODEL_FROM_DATABASE=Pro 100 SR Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II (Pro 100 SR Mobile Combo Adapter)
+ pci:v00008086d00001002sv00008086sd00002017*
+- ID_MODEL_FROM_DATABASE=Pro 100 S Combo Mobile Adapter
++ ID_MODEL_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II (Pro 100 S Combo Mobile Adapter)
+ pci:v00008086d00001004*
+  ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper)
+ pci:v00008086d00001004sv00000E11sd00000049*
+- ID_MODEL_FROM_DATABASE=NC7132 Gigabit Upgrade Module
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) (NC7132 Gigabit Upgrade Module)
+ pci:v00008086d00001004sv00000E11sd0000B1A4*
+- ID_MODEL_FROM_DATABASE=NC7131 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) (NC7131 Gigabit Server Adapter)
+ pci:v00008086d00001004sv00001014sd000010F2*
+- ID_MODEL_FROM_DATABASE=Gigabit Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) (Gigabit Ethernet Server Adapter)
+ pci:v00008086d00001004sv00008086sd00001004*
+- ID_MODEL_FROM_DATABASE=PRO/1000 T Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) (PRO/1000 T Server Adapter)
+ pci:v00008086d00001004sv00008086sd00002004*
+- ID_MODEL_FROM_DATABASE=PRO/1000 T Server Adapter
++ ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) (PRO/1000 T Server Adapter)
+ pci:v00008086d00001008*
+  ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper)
+ pci:v00008086d00001008sv00001014sd00000269*
+- ID_MODEL_FROM_DATABASE=iSeries 1000/100/10 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (iSeries 1000/100/10 Ethernet Adapter)
+ pci:v00008086d00001008sv00001028sd0000011B*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1650/2550
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (PowerEdge 1650/2550)
+ pci:v00008086d00001008sv00001028sd0000011C*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XT Network Connection
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (PRO/1000 XT Network Connection)
+ pci:v00008086d00001008sv00008086sd00001107*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XT Server Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (PRO/1000 XT Server Adapter)
+ pci:v00008086d00001008sv00008086sd00002107*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XT Server Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (PRO/1000 XT Server Adapter)
+ pci:v00008086d00001008sv00008086sd00002110*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (PRO/1000 XT Desktop Adapter)
+ pci:v00008086d00001008sv00008086sd00003108*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XT Network Connection
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) (PRO/1000 XT Network Connection)
+ pci:v00008086d00001009*
+  ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d00001009sv00001014sd00000268*
+- ID_MODEL_FROM_DATABASE=iSeries Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Fiber) (iSeries Gigabit Ethernet Adapter)
+ pci:v00008086d00001009sv00008086sd00001109*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XF Server Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Fiber) (PRO/1000 XF Server Adapter)
+ pci:v00008086d00001009sv00008086sd00002109*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XF Server Adapter
++ ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Fiber) (PRO/1000 XF Server Adapter)
+ pci:v00008086d0000100A*
+  ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller
+@@ -56889,286 +56889,286 @@ pci:v00008086d0000100C*
+  ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (Copper)
+ pci:v00008086d0000100Csv00008086sd00001112*
+- ID_MODEL_FROM_DATABASE=PRO/1000 T Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (Copper) (PRO/1000 T Desktop Adapter)
+ pci:v00008086d0000100Csv00008086sd00002112*
+- ID_MODEL_FROM_DATABASE=PRO/1000 T Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (Copper) (PRO/1000 T Desktop Adapter)
+ pci:v00008086d0000100D*
+  ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM)
+ pci:v00008086d0000100Dsv00001028sd00000123*
+- ID_MODEL_FROM_DATABASE=PRO/1000 XT Network Connection
++ ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM) (PRO/1000 XT Network Connection)
+ pci:v00008086d0000100Dsv00001079sd0000891F*
+- ID_MODEL_FROM_DATABASE=82544GC Based Network Connection
++ ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM) (82544GC Based Network Connection)
+ pci:v00008086d0000100Dsv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM) (CT8 mainboard)
+ pci:v00008086d0000100Dsv00008086sd0000110D*
+- ID_MODEL_FROM_DATABASE=82544GC Based Network Connection
++ ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM) (82544GC Based Network Connection)
+ pci:v00008086d0000100E*
+  ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller
+ pci:v00008086d0000100Esv00001014sd00000265*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d0000100Esv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d0000100Esv00001014sd0000026A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d0000100Esv00001028sd0000002E*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (Optiplex GX260)
+ pci:v00008086d0000100Esv00001028sd00000134*
+- ID_MODEL_FROM_DATABASE=PowerEdge 600SC
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PowerEdge 600SC)
+ pci:v00008086d0000100Esv00001028sd00000151*
+- ID_MODEL_FROM_DATABASE=Optiplex GX270
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (Optiplex GX270)
+ pci:v00008086d0000100Esv0000107Bsd00008920*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
+ pci:v00008086d0000100Esv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (QEMU Virtual Machine)
+ pci:v00008086d0000100Esv00008086sd0000001E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
+ pci:v00008086d0000100Esv00008086sd0000002E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
+ pci:v00008086d0000100Esv00008086sd00001376*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 GT Desktop Adapter)
+ pci:v00008086d0000100Esv00008086sd00001476*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (PRO/1000 GT Desktop Adapter)
+ pci:v00008086d0000100F*
+  ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper)
+ pci:v00008086d0000100Fsv00001014sd00000269*
+- ID_MODEL_FROM_DATABASE=iSeries 1000/100/10 Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) (iSeries 1000/100/10 Ethernet Adapter)
+ pci:v00008086d0000100Fsv00001014sd0000028E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Network Connection)
+ pci:v00008086d0000100Fsv000015ADsd00000750*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Single Port Adapter
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Single Port Adapter)
+ pci:v00008086d0000100Fsv00008086sd00001000*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Network Connection)
+ pci:v00008086d0000100Fsv00008086sd00001001*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Adapter
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) (PRO/1000 MT Server Adapter)
+ pci:v00008086d00001010*
+  ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper)
+ pci:v00008086d00001010sv00000E11sd000000DB*
+- ID_MODEL_FROM_DATABASE=NC7170 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (NC7170 Gigabit Server Adapter)
+ pci:v00008086d00001010sv00001014sd0000027C*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (PRO/1000 MT Dual Port Network Adapter)
+ pci:v00008086d00001010sv000015ADsd00000760*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (PRO/1000 MT Dual Port Adapter)
+ pci:v00008086d00001010sv000018FBsd00007872*
+- ID_MODEL_FROM_DATABASE=RESlink-X
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (RESlink-X)
+ pci:v00008086d00001010sv00001FC1sd00000026*
+- ID_MODEL_FROM_DATABASE=Niagara 2260 Bypass Card
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (Niagara 2260 Bypass Card)
+ pci:v00008086d00001010sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (CT8 mainboard)
+ pci:v00008086d00001010sv00004C53sd000010A0*
+- ID_MODEL_FROM_DATABASE=CA3/CR3 mainboard
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (CA3/CR3 mainboard)
+ pci:v00008086d00001010sv00008086sd00001011*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (PRO/1000 MT Dual Port Server Adapter)
+ pci:v00008086d00001010sv00008086sd00001012*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (PRO/1000 MT Dual Port Server Adapter)
+ pci:v00008086d00001010sv00008086sd0000101A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (PRO/1000 MT Dual Port Network Connection)
+ pci:v00008086d00001010sv00008086sd00003424*
+- ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) (SE7501HG2 Mainboard)
+ pci:v00008086d00001011*
+  ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d00001011sv00001014sd00000268*
+- ID_MODEL_FROM_DATABASE=iSeries Gigabit Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Fiber) (iSeries Gigabit Ethernet Adapter)
+ pci:v00008086d00001011sv00008086sd00001002*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Fiber) (PRO/1000 MF Server Adapter)
+ pci:v00008086d00001011sv00008086sd00001003*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter (LX)
++ ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Fiber) (PRO/1000 MF Server Adapter (LX))
+ pci:v00008086d00001012*
+  ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d00001012sv00000E11sd000000DC*
+- ID_MODEL_FROM_DATABASE=NC6170 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Fiber) (NC6170 Gigabit Server Adapter)
+ pci:v00008086d00001012sv00008086sd00001012*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Fiber) (PRO/1000 MF Dual Port Server Adapter)
+ pci:v00008086d00001013*
+  ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller
+ pci:v00008086d00001013sv00008086sd00000013*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001013sv00008086sd00001013*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001013sv00008086sd00001113*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
+ pci:v00008086d00001014*
+  ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller
+ pci:v00008086d00001014sv00008086sd00000014*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Connection
++ ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller (PRO/1000 MT Desktop Connection)
+ pci:v00008086d00001014sv00008086sd00001014*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001015*
+  ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (LOM)
+ pci:v00008086d00001015sv00008086sd00001015*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (LOM) (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001016*
+  ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile)
+ pci:v00008086d00001016sv00001014sd0000052C*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001016sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001016sv00008086sd00001016*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001017*
+  ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller
+ pci:v00008086d00001017sv00008086sd00001017*
+- ID_MODEL_FROM_DATABASE=PR0/1000 MT Desktop Connection
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (PR0/1000 MT Desktop Connection)
+ pci:v00008086d00001018*
+  ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller
+ pci:v00008086d00001018sv00008086sd00001018*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001019*
+  ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller
+ pci:v00008086d00001019sv00001458sd00001019*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d00001019sv00001458sd0000E000*
+- ID_MODEL_FROM_DATABASE=Intel Gigabit Ethernet (Kenai II)
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Intel Gigabit Ethernet (Kenai II))
+ pci:v00008086d00001019sv00008086sd00001019*
+- ID_MODEL_FROM_DATABASE=PRO/1000 CT Desktop Connection
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (PRO/1000 CT Desktop Connection)
+ pci:v00008086d00001019sv00008086sd0000301F*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (D865PERL mainboard)
+ pci:v00008086d00001019sv00008086sd00003025*
+- ID_MODEL_FROM_DATABASE=D875PBZ motherboard
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (D875PBZ motherboard)
+ pci:v00008086d00001019sv00008086sd0000302C*
+- ID_MODEL_FROM_DATABASE=Intel 82865G Mainboard (D865GBF)
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Intel 82865G Mainboard (D865GBF))
+ pci:v00008086d00001019sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (S875WP1-E mainboard)
+ pci:v00008086d0000101A*
+  ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Mobile)
+ pci:v00008086d0000101Asv00008086sd0000101A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 CT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Mobile) (PRO/1000 CT Mobile Connection)
+ pci:v00008086d0000101D*
+  ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller
+ pci:v00008086d0000101Dsv00008086sd00001000*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (PRO/1000 MT Quad Port Server Adapter)
+ pci:v00008086d0000101E*
+  ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile)
+ pci:v00008086d0000101Esv00001014sd00000549*
+- ID_MODEL_FROM_DATABASE=Thinkpad
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) (Thinkpad)
+ pci:v00008086d0000101Esv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) (PRO/1000 MT Mobile Connection)
+ pci:v00008086d0000101Esv00008086sd0000101E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001026*
+  ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller
+ pci:v00008086d00001026sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d00001026sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (Precision 470)
+ pci:v00008086d00001026sv00008086sd00001000*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Connection
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MT Server Connection)
+ pci:v00008086d00001026sv00008086sd00001001*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Adapter
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MT Server Adapter)
+ pci:v00008086d00001026sv00008086sd00001002*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Adapter
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MT Server Adapter)
+ pci:v00008086d00001026sv00008086sd00001003*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Server Adapter
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 GT Server Adapter)
+ pci:v00008086d00001026sv00008086sd00001026*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Connection
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MT Server Connection)
+ pci:v00008086d00001027*
+  ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller
+ pci:v00008086d00001027sv0000103Csd00003103*
+- ID_MODEL_FROM_DATABASE=NC310F PCI-X Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (NC310F PCI-X Gigabit Server Adapter)
+ pci:v00008086d00001027sv00008086sd00001001*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter(LX)
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MF Server Adapter(LX))
+ pci:v00008086d00001027sv00008086sd00001002*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter(LX)
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MF Server Adapter(LX))
+ pci:v00008086d00001027sv00008086sd00001003*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter(LX)
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MF Server Adapter(LX))
+ pci:v00008086d00001027sv00008086sd00001027*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MF Server Adapter)
+ pci:v00008086d00001028*
+  ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller
+ pci:v00008086d00001028sv00008086sd00001028*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MB Server Connection
++ ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller (PRO/1000 MB Server Connection)
+ pci:v00008086d00001029*
+  ID_MODEL_FROM_DATABASE=82559 Ethernet Controller
+@@ -57180,31 +57180,31 @@ pci:v00008086d00001031*
+  ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
+ pci:v00008086d00001031sv00001014sd00000209*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (ThinkPad A/T/X Series)
+ pci:v00008086d00001031sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00001031sv0000104Dsd0000813C*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-GRV616G
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (Vaio PCG-GRV616G)
+ pci:v00008086d00001031sv0000107Bsd00005350*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00001031sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00001031sv0000144Dsd0000C000*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00001031sv0000144Dsd0000C001*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00001031sv0000144Dsd0000C003*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00001031sv0000144Dsd0000C006*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller (vpr Matrix 170B4)
+ pci:v00008086d00001032*
+  ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE Ethernet Controller
+@@ -57228,16 +57228,16 @@ pci:v00008086d00001038*
+  ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller
+ pci:v00008086d00001038sv00000E11sd00000098*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller (Evo N600c)
+ pci:v00008086d00001039*
+  ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (LOM) Ethernet Controller
+ pci:v00008086d00001039sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (LOM) Ethernet Controller (NetVista A30p)
+ pci:v00008086d00001039sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 onboard ethernet ETH1
++ ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (LOM) Ethernet Controller (PC8 onboard ethernet ETH1)
+ pci:v00008086d0000103A*
+  ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (CNR) Ethernet Controller
+@@ -57252,13 +57252,13 @@ pci:v00008086d0000103D*
+  ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (MOB) Ethernet Controller
+ pci:v00008086d0000103Dsv00001014sd00000522*
+- ID_MODEL_FROM_DATABASE=ThinkPad R40
++ ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (MOB) Ethernet Controller (ThinkPad R40)
+ pci:v00008086d0000103Dsv00001028sd00002002*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (MOB) Ethernet Controller (Latitude D500)
+ pci:v00008086d0000103Dsv00008086sd0000103D*
+- ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller
++ ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (MOB) Ethernet Controller (82562EZ 10/100 Ethernet Controller)
+ pci:v00008086d0000103E*
+  ID_MODEL_FROM_DATABASE=82801DB PRO/100 VM (MOB) Ethernet Controller
+@@ -57267,43 +57267,43 @@ pci:v00008086d00001040*
+  ID_MODEL_FROM_DATABASE=536EP Data Fax Modem
+ pci:v00008086d00001040sv000016BEsd00001040*
+- ID_MODEL_FROM_DATABASE=V.9X DSP Data Fax Modem
++ ID_MODEL_FROM_DATABASE=536EP Data Fax Modem (V.9X DSP Data Fax Modem)
+ pci:v00008086d00001043*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter
+ pci:v00008086d00001043sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter (tc1100 tablet)
+ pci:v00008086d00001043sv00008086sd00002522*
+- ID_MODEL_FROM_DATABASE=Samsung X10/P30 integrated WLAN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter (Samsung X10/P30 integrated WLAN)
+ pci:v00008086d00001043sv00008086sd00002527*
+- ID_MODEL_FROM_DATABASE=MIM2000/Centrino
++ ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter (MIM2000/Centrino)
+ pci:v00008086d00001043sv00008086sd00002561*
+- ID_MODEL_FROM_DATABASE=Dell Latitude D800
++ ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter (Dell Latitude D800)
+ pci:v00008086d00001043sv00008086sd00002581*
+- ID_MODEL_FROM_DATABASE=Toshiba Satellite M10
++ ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter (Toshiba Satellite M10)
+ pci:v00008086d00001048*
+  ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller
+ pci:v00008086d00001048sv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE LR Server Adapter)
+ pci:v00008086d00001048sv00008086sd0000A11F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE LR Server Adapter)
+ pci:v00008086d00001049*
+  ID_MODEL_FROM_DATABASE=82566MM Gigabit Network Connection
+ pci:v00008086d00001049sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82566MM Gigabit Network Connection (Compaq 6910p)
+ pci:v00008086d00001049sv000017AAsd000020B9*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82566MM Gigabit Network Connection (ThinkPad T61/R61)
+ pci:v00008086d0000104A*
+  ID_MODEL_FROM_DATABASE=82566DM Gigabit Network Connection
+@@ -57321,22 +57321,22 @@ pci:v00008086d00001050*
+  ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller
+ pci:v00008086d00001050sv00001028sd0000019D*
+- ID_MODEL_FROM_DATABASE=Dimension 3000
++ ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller (Dimension 3000)
+ pci:v00008086d00001050sv00001462sd0000728C*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller (865PE Neo2 (MS-6728))
+ pci:v00008086d00001050sv00001462sd0000758C*
+- ID_MODEL_FROM_DATABASE=MS-6758 (875P Neo)
++ ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller (MS-6758 (875P Neo))
+ pci:v00008086d00001050sv00008086sd00003020*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller (D865PERL mainboard)
+ pci:v00008086d00001050sv00008086sd0000302F*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller (Desktop Board D865GBF)
+ pci:v00008086d00001050sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller (S875WP1-E mainboard)
+ pci:v00008086d00001051*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) integrated LAN Controller
+@@ -57369,70 +57369,70 @@ pci:v00008086d0000105E*
+  ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller
+ pci:v00008086d0000105Esv0000103Csd00007044*
+- ID_MODEL_FROM_DATABASE=NC360T PCI Express Dual Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (NC360T PCI Express Dual Port Gigabit Server Adapter)
+ pci:v00008086d0000105Esv0000103Csd0000704E*
+- ID_MODEL_FROM_DATABASE=Dual Port 1000Base-T (PCIe) [AD337A]
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Dual Port 1000Base-T (PCIe) [AD337A])
+ pci:v00008086d0000105Esv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d0000105Esv00001775sd00006003*
+- ID_MODEL_FROM_DATABASE=Telum GE-QT
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Telum GE-QT)
+ pci:v00008086d0000105Esv000018DFsd00001214*
+- ID_MODEL_FROM_DATABASE=2x 1GbE, PCIe x1, dual Intel 82571EB chips
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (2x 1GbE, PCIe x1, dual Intel 82571EB chips)
+ pci:v00008086d0000105Esv00008086sd0000005E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Connection
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Dual Port Server Connection)
+ pci:v00008086d0000105Esv00008086sd0000105E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Network Connection
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Dual Port Network Connection)
+ pci:v00008086d0000105Esv00008086sd000010D5*
+- ID_MODEL_FROM_DATABASE=82571PT Gigabit PT Quad Port Server ExpressModule
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (82571PT Gigabit PT Quad Port Server ExpressModule)
+ pci:v00008086d0000105Esv00008086sd0000115E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Dual Port Server Adapter)
+ pci:v00008086d0000105Esv00008086sd0000125E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Dual Port Server Adapter)
+ pci:v00008086d0000105Esv00008086sd0000135E*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Dual Port Server Adapter)
+ pci:v00008086d0000105F*
+  ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller
+ pci:v00008086d0000105Fsv0000103Csd0000704F*
+- ID_MODEL_FROM_DATABASE=Dual Port 1000Base-SX (PCIe) [AD338A]
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Dual Port 1000Base-SX (PCIe) [AD338A])
+ pci:v00008086d0000105Fsv00008086sd0000005A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PF Dual Port Server Adapter)
+ pci:v00008086d0000105Fsv00008086sd0000115F*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PF Dual Port Server Adapter)
+ pci:v00008086d0000105Fsv00008086sd0000125F*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PF Dual Port Server Adapter)
+ pci:v00008086d0000105Fsv00008086sd0000135F*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PF Dual Port Server Adapter)
+ pci:v00008086d00001060*
+  ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller
+ pci:v00008086d00001060sv00008086sd00000060*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PB Dual Port Server Connection
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PB Dual Port Server Connection)
+ pci:v00008086d00001060sv00008086sd00001060*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PB Dual Port Server Connection
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PB Dual Port Server Connection)
+ pci:v00008086d00001064*
+  ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller
+ pci:v00008086d00001064sv00001043sd000080F8*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller (P5GD1-VW Mainboard)
+ pci:v00008086d00001065*
+  ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller
+@@ -57459,148 +57459,148 @@ pci:v00008086d00001075*
+  ID_MODEL_FROM_DATABASE=82547GI Gigabit Ethernet Controller
+ pci:v00008086d00001075sv00001028sd00000165*
+- ID_MODEL_FROM_DATABASE=PowerEdge 750
++ ID_MODEL_FROM_DATABASE=82547GI Gigabit Ethernet Controller (PowerEdge 750)
+ pci:v00008086d00001075sv00008086sd00000075*
+- ID_MODEL_FROM_DATABASE=PRO/1000 CT Network Connection
++ ID_MODEL_FROM_DATABASE=82547GI Gigabit Ethernet Controller (PRO/1000 CT Network Connection)
+ pci:v00008086d00001075sv00008086sd00001075*
+- ID_MODEL_FROM_DATABASE=PRO/1000 CT Network Connection
++ ID_MODEL_FROM_DATABASE=82547GI Gigabit Ethernet Controller (PRO/1000 CT Network Connection)
+ pci:v00008086d00001076*
+  ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller
+ pci:v00008086d00001076sv00001028sd00000165*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001076sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001076sv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001076sv00001028sd0000106D*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001076sv00008086sd00000076*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001076sv00008086sd00001076*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Connection)
+ pci:v00008086d00001076sv00008086sd00001176*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)
+ pci:v00008086d00001076sv00008086sd00001276*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Adapter
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Network Adapter)
+ pci:v00008086d00001077*
+  ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller
+ pci:v00008086d00001077sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001077sv00008086sd00000077*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001077sv00008086sd00001077*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection
++ ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller (PRO/1000 MT Mobile Connection)
+ pci:v00008086d00001078*
+  ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller
+ pci:v00008086d00001078sv00008086sd00001078*
+- ID_MODEL_FROM_DATABASE=82541ER-based Network Connection
++ ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller (82541ER-based Network Connection)
+ pci:v00008086d00001079*
+  ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller
+ pci:v00008086d00001079sv0000103Csd000012A6*
+- ID_MODEL_FROM_DATABASE=Dual Port 1000Base-T [A9900A]
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Dual Port 1000Base-T [A9900A])
+ pci:v00008086d00001079sv0000103Csd000012CF*
+- ID_MODEL_FROM_DATABASE=Core Dual Port 1000Base-T [AB352A]
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Core Dual Port 1000Base-T [AB352A])
+ pci:v00008086d00001079sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (V5D Single Board Computer Gigabit Ethernet)
+ pci:v00008086d00001079sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (CE9)
+ pci:v00008086d00001079sv00001FC1sd00000027*
+- ID_MODEL_FROM_DATABASE=Niagara 2261 Failover NIC
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Niagara 2261 Failover NIC)
+ pci:v00008086d00001079sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Cx9 / Vx9 mainboard)
+ pci:v00008086d00001079sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (CL9 mainboard)
+ pci:v00008086d00001079sv00008086sd00000079*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MT Dual Port Network Connection)
+ pci:v00008086d00001079sv00008086sd00001079*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MT Dual Port Network Connection)
+ pci:v00008086d00001079sv00008086sd00001179*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MT Dual Port Server Adapter)
+ pci:v00008086d00001079sv00008086sd0000117A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MT Dual Port Server Adapter)
+ pci:v00008086d0000107A*
+  ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller
+ pci:v00008086d0000107Asv0000103Csd000012A8*
+- ID_MODEL_FROM_DATABASE=Dual Port 1000base-SX [A9899A]
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Dual Port 1000base-SX [A9899A])
+ pci:v00008086d0000107Asv00008086sd0000107A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MF Dual Port Server Adapter)
+ pci:v00008086d0000107Asv00008086sd0000127A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MF Dual Port Server Adapter)
+ pci:v00008086d0000107B*
+  ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller
+ pci:v00008086d0000107Bsv00008086sd0000007B*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MB Dual Port Server Connection
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MB Dual Port Server Connection)
+ pci:v00008086d0000107Bsv00008086sd0000107B*
+- ID_MODEL_FROM_DATABASE=PRO/1000 MB Dual Port Server Connection
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 MB Dual Port Server Connection)
+ pci:v00008086d0000107C*
+  ID_MODEL_FROM_DATABASE=82541PI Gigabit Ethernet Controller
+ pci:v00008086d0000107Csv00008086sd00001376*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82541PI Gigabit Ethernet Controller (PRO/1000 GT Desktop Adapter)
+ pci:v00008086d0000107Csv00008086sd00001476*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82541PI Gigabit Ethernet Controller (PRO/1000 GT Desktop Adapter)
+ pci:v00008086d0000107D*
+  ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper)
+ pci:v00008086d0000107Dsv00008086sd00001082*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) (PRO/1000 PT Server Adapter)
+ pci:v00008086d0000107Dsv00008086sd00001084*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) (PRO/1000 PT Server Adapter)
+ pci:v00008086d0000107Dsv00008086sd00001092*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) (PRO/1000 PT Server Adapter)
+ pci:v00008086d0000107E*
+  ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d0000107Esv00008086sd00001084*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Fiber) (PRO/1000 PF Server Adapter)
+ pci:v00008086d0000107Esv00008086sd00001085*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Fiber) (PRO/1000 PF Server Adapter)
+ pci:v00008086d0000107Esv00008086sd00001094*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Fiber) (PRO/1000 PF Server Adapter)
+ pci:v00008086d0000107F*
+  ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller
+@@ -57636,16 +57636,16 @@ pci:v00008086d0000108A*
+  ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller
+ pci:v00008086d0000108Asv00008086sd0000108A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 P Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 P Dual Port Server Adapter)
+ pci:v00008086d0000108Asv00008086sd0000118A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 P Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (PRO/1000 P Dual Port Server Adapter)
+ pci:v00008086d0000108B*
+  ID_MODEL_FROM_DATABASE=82573V Gigabit Ethernet Controller (Copper)
+ pci:v00008086d0000108Bsv00001462sd0000176C*
+- ID_MODEL_FROM_DATABASE=on board on MSI 945P - NEO (MS-7176)
++ ID_MODEL_FROM_DATABASE=82573V Gigabit Ethernet Controller (Copper) (on board on MSI 945P - NEO (MS-7176))
+ pci:v00008086d0000108C*
+  ID_MODEL_FROM_DATABASE=82573E Gigabit Ethernet Controller (Copper)
+@@ -57675,13 +57675,13 @@ pci:v00008086d00001096*
+  ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
+ pci:v00008086d00001096sv000015D9sd00001096*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (Motherboard)
+ pci:v00008086d00001096sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (X7DVL-E-O motherboard)
+ pci:v00008086d00001096sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) (Intel S5000PSLSATA Server Board)
+ pci:v00008086d00001097*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB DPT LAN Controller (Fiber)
+@@ -57693,28 +57693,28 @@ pci:v00008086d00001099*
+  ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper)
+ pci:v00008086d00001099sv00008086sd00001099*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) (PRO/1000 GT Quad Port Server Adapter)
+ pci:v00008086d0000109A*
+  ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller
+ pci:v00008086d0000109Asv00001179sd0000FF10*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PL
++ ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller (PRO/1000 PL)
+ pci:v00008086d0000109Asv000017AAsd00002001*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60
++ ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller (ThinkPad T60)
+ pci:v00008086d0000109Asv000017AAsd0000207E*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
++ ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller (ThinkPad X60/X60s)
+ pci:v00008086d0000109Asv00008086sd0000109A*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PL Network Connection
++ ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller (PRO/1000 PL Network Connection)
+ pci:v00008086d0000109Asv00008086sd0000309C*
+- ID_MODEL_FROM_DATABASE=Desktop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller (Desktop Board D945GTP)
+ pci:v00008086d0000109Asv00008086sd000030A5*
+- ID_MODEL_FROM_DATABASE=Desktop Board D975XBX
++ ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller (Desktop Board D975XBX)
+ pci:v00008086d0000109B*
+  ID_MODEL_FROM_DATABASE=82546GB PRO/1000 GF Quad Port Server Adapter
+@@ -57723,10 +57723,10 @@ pci:v00008086d0000109E*
+  ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller
+ pci:v00008086d0000109Esv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE CX4 Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE CX4 Server Adapter)
+ pci:v00008086d0000109Esv00008086sd0000A11F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE CX4 Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE CX4 Server Adapter)
+ pci:v00008086d000010A0*
+  ID_MODEL_FROM_DATABASE=82571EB PRO/1000 AT Quad Port Bypass Adapter
+@@ -57738,19 +57738,19 @@ pci:v00008086d000010A4*
+  ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller
+ pci:v00008086d000010A4sv00008086sd000010A4*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Quad Port Server Adapter)
+ pci:v00008086d000010A4sv00008086sd000011A4*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (PRO/1000 PT Quad Port Server Adapter)
+ pci:v00008086d000010A5*
+  ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Fiber)
+ pci:v00008086d000010A5sv00008086sd000010A5*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Fiber) (PRO/1000 PF Quad Port Server Adapter)
+ pci:v00008086d000010A5sv00008086sd000010A6*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PF Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Fiber) (PRO/1000 PF Quad Port Server Adapter)
+ pci:v00008086d000010A6*
+  ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit Dummy Function
+@@ -57759,7 +57759,7 @@ pci:v00008086d000010A7*
+  ID_MODEL_FROM_DATABASE=82575EB Gigabit Network Connection
+ pci:v00008086d000010A7sv00008086sd000010A8*
+- ID_MODEL_FROM_DATABASE=82575EB Gigabit Riser Card
++ ID_MODEL_FROM_DATABASE=82575EB Gigabit Network Connection (82575EB Gigabit Riser Card)
+ pci:v00008086d000010A9*
+  ID_MODEL_FROM_DATABASE=82575EB Gigabit Backplane Connection
+@@ -57780,13 +57780,13 @@ pci:v00008086d000010B5*
+  ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper)
+ pci:v00008086d000010B5sv0000103Csd00003109*
+- ID_MODEL_FROM_DATABASE=NC340T PCI-X Quad-port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) (NC340T PCI-X Quad-port Gigabit Server Adapter)
+ pci:v00008086d000010B5sv00008086sd00001099*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) (PRO/1000 GT Quad Port Server Adapter)
+ pci:v00008086d000010B5sv00008086sd00001199*
+- ID_MODEL_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) (PRO/1000 GT Quad Port Server Adapter)
+ pci:v00008086d000010B6*
+  ID_MODEL_FROM_DATABASE=82598 10GbE PCI-Express Ethernet Controller
+@@ -57795,13 +57795,13 @@ pci:v00008086d000010B9*
+  ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper)
+ pci:v00008086d000010B9sv0000103Csd0000704A*
+- ID_MODEL_FROM_DATABASE=HP 110T PCIe Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) (HP 110T PCIe Gigabit Server Adapter)
+ pci:v00008086d000010B9sv00008086sd00001083*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) (PRO/1000 PT Desktop Adapter)
+ pci:v00008086d000010B9sv00008086sd00001093*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) (PRO/1000 PT Desktop Adapter)
+ pci:v00008086d000010BA*
+  ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper)
+@@ -57813,22 +57813,22 @@ pci:v00008086d000010BC*
+  ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper)
+ pci:v00008086d000010BCsv0000103Csd0000704B*
+- ID_MODEL_FROM_DATABASE=NC364T PCI Express Quad Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper) (NC364T PCI Express Quad Port Gigabit Server Adapter)
+ pci:v00008086d000010BCsv0000108Esd000011BC*
+- ID_MODEL_FROM_DATABASE=x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper) (x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter)
+ pci:v00008086d000010BCsv00008086sd000010BC*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port LP Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper) (PRO/1000 PT Quad Port LP Server Adapter)
+ pci:v00008086d000010BCsv00008086sd000011BC*
+- ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port LP Server Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper) (PRO/1000 PT Quad Port LP Server Adapter)
+ pci:v00008086d000010BD*
+  ID_MODEL_FROM_DATABASE=82566DM-2 Gigabit Network Connection
+ pci:v00008086d000010BDsv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82566DM-2 Gigabit Network Connection (OptiPlex 755)
+ pci:v00008086d000010BF*
+  ID_MODEL_FROM_DATABASE=82567LF Gigabit Network Connection
+@@ -57837,7 +57837,7 @@ pci:v00008086d000010C0*
+  ID_MODEL_FROM_DATABASE=82562V-2 10/100 Network Connection
+ pci:v00008086d000010C0sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82562V-2 10/100 Network Connection (Inspiron 530)
+ pci:v00008086d000010C2*
+  ID_MODEL_FROM_DATABASE=82562G-2 10/100 Network Connection
+@@ -57855,67 +57855,67 @@ pci:v00008086d000010C6*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection
+ pci:v00008086d000010C6sv00008086sd0000A05F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection (10-Gigabit XF SR Dual Port Server Adapter)
+ pci:v00008086d000010C6sv00008086sd0000A15F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection (10-Gigabit XF SR Dual Port Server Adapter)
+ pci:v00008086d000010C7*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection
+ pci:v00008086d000010C7sv00001014sd0000037F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF SR Server Adapter)
+ pci:v00008086d000010C7sv00001014sd00000380*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF LR Server Adapter)
+ pci:v00008086d000010C7sv00008086sd0000A05F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF SR Server Adapter)
+ pci:v00008086d000010C7sv00008086sd0000A15F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF SR Server Adapter)
+ pci:v00008086d000010C7sv00008086sd0000A16F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF SR Server Adapter)
+ pci:v00008086d000010C8*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT Network Connection
+ pci:v00008086d000010C8sv00008086sd0000A10C*
+- ID_MODEL_FROM_DATABASE=10-Gigabit AT Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT Network Connection (10-Gigabit AT Server Adapter)
+ pci:v00008086d000010C8sv00008086sd0000A11C*
+- ID_MODEL_FROM_DATABASE=10-Gigabit AT Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT Network Connection (10-Gigabit AT Server Adapter)
+ pci:v00008086d000010C8sv00008086sd0000A12C*
+- ID_MODEL_FROM_DATABASE=10-Gigabit AT Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT Network Connection (10-Gigabit AT Server Adapter)
+ pci:v00008086d000010C9*
+  ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection
+ pci:v00008086d000010C9sv0000103Csd000031EF*
+- ID_MODEL_FROM_DATABASE=NC362i Integrated Dual port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (NC362i Integrated Dual port Gigabit Server Adapter)
+ pci:v00008086d000010C9sv0000103Csd0000323F*
+- ID_MODEL_FROM_DATABASE=NC362i Integrated Dual port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (NC362i Integrated Dual port Gigabit Server Adapter)
+ pci:v00008086d000010C9sv000010A9sd00008028*
+- ID_MODEL_FROM_DATABASE=UV-BaseIO dual-port GbE
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (UV-BaseIO dual-port GbE)
+ pci:v00008086d000010C9sv000013A3sd00000037*
+- ID_MODEL_FROM_DATABASE=DS4100 Secure Multi-Gigabit Server Adapter with Compression
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (DS4100 Secure Multi-Gigabit Server Adapter with Compression)
+ pci:v00008086d000010C9sv000015D9sd0000A811*
+- ID_MODEL_FROM_DATABASE=H8DGU
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (H8DGU)
+ pci:v00008086d000010C9sv00008086sd0000A01C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET Dual Port Server Adapter)
+ pci:v00008086d000010C9sv00008086sd0000A03C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET Dual Port Server Adapter)
+ pci:v00008086d000010C9sv00008086sd0000A04C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET Dual Port Server Adapter)
+ pci:v00008086d000010CA*
+  ID_MODEL_FROM_DATABASE=82576 Virtual Function
+@@ -57936,34 +57936,34 @@ pci:v00008086d000010D3*
+  ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection
+ pci:v00008086d000010D3sv0000103Csd00003250*
+- ID_MODEL_FROM_DATABASE=NC112T PCI Express single Port Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (NC112T PCI Express single Port Gigabit Server Adapter)
+ pci:v00008086d000010D3sv00001043sd00008369*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Motherboard)
+ pci:v00008086d000010D3sv000010A9sd00008029*
+- ID_MODEL_FROM_DATABASE=Prism XL Single Port Gigabit Ethernet
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Prism XL Single Port Gigabit Ethernet)
+ pci:v00008086d000010D3sv000015D9sd0000060A*
+- ID_MODEL_FROM_DATABASE=X7SPA-H/X7SPA-HF Motherboard
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (X7SPA-H/X7SPA-HF Motherboard)
+ pci:v00008086d000010D3sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (C7SIM-Q Motherboard)
+ pci:v00008086d000010D3sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Gigabit CT2 Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Gigabit CT2 Desktop Adapter)
+ pci:v00008086d000010D3sv00008086sd0000357A*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Server Board S1200BTS)
+ pci:v00008086d000010D3sv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=Gigabit CT Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (Gigabit CT Desktop Adapter)
+ pci:v00008086d000010D3sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (PC1-GROOVE)
+ pci:v00008086d000010D3sv0000E4BFsd000050C2*
+- ID_MODEL_FROM_DATABASE=PC2-LIMBO
++ ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection (PC2-LIMBO)
+ pci:v00008086d000010D4*
+  ID_MODEL_FROM_DATABASE=Matrox Concord GE (customized Intel 82574)
+@@ -57975,13 +57975,13 @@ pci:v00008086d000010D6*
+  ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection
+ pci:v00008086d000010D6sv00008086sd000010D6*
+- ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection (Gigabit VT Quad Port Server Adapter)
+ pci:v00008086d000010D6sv00008086sd0000145A*
+- ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection (Gigabit VT Quad Port Server Adapter)
+ pci:v00008086d000010D6sv00008086sd0000147A*
+- ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection (Gigabit VT Quad Port Server Adapter)
+ pci:v00008086d000010D8*
+  ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit Unprogrammed
+@@ -57990,13 +57990,13 @@ pci:v00008086d000010D9*
+  ID_MODEL_FROM_DATABASE=82571EB Dual Port Gigabit Mezzanine Adapter
+ pci:v00008086d000010D9sv0000103Csd00001716*
+- ID_MODEL_FROM_DATABASE=NC360m Dual Port 1GbE BL-c Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Dual Port Gigabit Mezzanine Adapter (NC360m Dual Port 1GbE BL-c Adapter)
+ pci:v00008086d000010DA*
+  ID_MODEL_FROM_DATABASE=82571EB Quad Port Gigabit Mezzanine Adapter
+ pci:v00008086d000010DAsv0000103Csd00001717*
+- ID_MODEL_FROM_DATABASE=NC364m Quad Port 1GbE BL-c Adapter
++ ID_MODEL_FROM_DATABASE=82571EB Quad Port Gigabit Mezzanine Adapter (NC364m Quad Port 1GbE BL-c Adapter)
+ pci:v00008086d000010DB*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit Dual Port Network Connection
+@@ -58014,13 +58014,13 @@ pci:v00008086d000010E1*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection
+ pci:v00008086d000010E1sv00008086sd0000A15F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit SR Dual Port Express Module
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection (10-Gigabit SR Dual Port Express Module)
+ pci:v00008086d000010E2*
+  ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection
+ pci:v00008086d000010E2sv00008086sd000010E2*
+- ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection (Gigabit VT Quad Port Server Adapter)
+ pci:v00008086d000010E5*
+  ID_MODEL_FROM_DATABASE=82567LM-4 Gigabit Network Connection
+@@ -58029,37 +58029,37 @@ pci:v00008086d000010E6*
+  ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection
+ pci:v00008086d000010E6sv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=Gigabit EF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit EF Dual Port Server Adapter)
+ pci:v00008086d000010E6sv00008086sd0000A02F*
+- ID_MODEL_FROM_DATABASE=Gigabit EF Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit EF Dual Port Server Adapter)
+ pci:v00008086d000010E7*
+  ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection
+ pci:v00008086d000010E7sv0000103Csd000031FF*
+- ID_MODEL_FROM_DATABASE=NC362i Integrated Dual Port BL-c Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (NC362i Integrated Dual Port BL-c Gigabit Server Adapter)
+ pci:v00008086d000010E8*
+  ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection
+ pci:v00008086d000010E8sv00008086sd0000A02B*
+- ID_MODEL_FROM_DATABASE=Gigabit ET Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET Quad Port Server Adapter)
+ pci:v00008086d000010E8sv00008086sd0000A02C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET Quad Port Server Adapter)
+ pci:v00008086d000010EA*
+  ID_MODEL_FROM_DATABASE=82577LM Gigabit Network Connection
+ pci:v00008086d000010EAsv00001028sd0000040A*
+- ID_MODEL_FROM_DATABASE=Latitude E6410
++ ID_MODEL_FROM_DATABASE=82577LM Gigabit Network Connection (Latitude E6410)
+ pci:v00008086d000010EAsv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=82577LM Gigabit Network Connection (Latitude E6510)
+ pci:v00008086d000010EAsv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=82577LM Gigabit Network Connection (PC1-GROOVE)
+ pci:v00008086d000010EB*
+  ID_MODEL_FROM_DATABASE=82577LC Gigabit Network Connection
+@@ -58068,10 +58068,10 @@ pci:v00008086d000010EC*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection
+ pci:v00008086d000010ECsv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit CX4 Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection (10-Gigabit CX4 Dual Port Server Adapter)
+ pci:v00008086d000010ECsv00008086sd0000A11F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit CX4 Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection (10-Gigabit CX4 Dual Port Server Adapter)
+ pci:v00008086d000010ED*
+  ID_MODEL_FROM_DATABASE=82599 Ethernet Controller Virtual Function
+@@ -58080,10 +58080,10 @@ pci:v00008086d000010EF*
+  ID_MODEL_FROM_DATABASE=82578DM Gigabit Network Connection
+ pci:v00008086d000010EFsv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=82578DM Gigabit Network Connection (OptiPlex 980)
+ pci:v00008086d000010EFsv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=82578DM Gigabit Network Connection (C7SIM-Q Motherboard)
+ pci:v00008086d000010F0*
+  ID_MODEL_FROM_DATABASE=82578DC Gigabit Network Connection
+@@ -58092,19 +58092,19 @@ pci:v00008086d000010F1*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection
+ pci:v00008086d000010F1sv00008086sd0000A20F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit AF DA Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection (10-Gigabit AF DA Dual Port Server Adapter)
+ pci:v00008086d000010F1sv00008086sd0000A21F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit AF DA Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection (10-Gigabit AF DA Dual Port Server Adapter)
+ pci:v00008086d000010F4*
+  ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection
+ pci:v00008086d000010F4sv00008086sd0000106F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF LR Server Adapter)
+ pci:v00008086d000010F4sv00008086sd0000A06F*
+- ID_MODEL_FROM_DATABASE=10-Gigabit XF LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection (10-Gigabit XF LR Server Adapter)
+ pci:v00008086d000010F5*
+  ID_MODEL_FROM_DATABASE=82567LM Gigabit Network Connection
+@@ -58116,25 +58116,25 @@ pci:v00008086d000010F7*
+  ID_MODEL_FROM_DATABASE=10 Gigabit BR KX4 Dual Port Network Connection
+ pci:v00008086d000010F7sv0000108Esd00007B12*
+- ID_MODEL_FROM_DATABASE=Sun Dual 10GbE PCIe 2.0 FEM
++ ID_MODEL_FROM_DATABASE=10 Gigabit BR KX4 Dual Port Network Connection (Sun Dual 10GbE PCIe 2.0 FEM)
+ pci:v00008086d000010F7sv00008086sd0000000D*
+- ID_MODEL_FROM_DATABASE=Ethernet Mezzanine Adapter X520-KX4-2
++ ID_MODEL_FROM_DATABASE=10 Gigabit BR KX4 Dual Port Network Connection (Ethernet Mezzanine Adapter X520-KX4-2)
+ pci:v00008086d000010F8*
+  ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection
+ pci:v00008086d000010F8sv00001028sd00001F63*
+- ID_MODEL_FROM_DATABASE=10GbE 2P X520k bNDC
++ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (10GbE 2P X520k bNDC)
+ pci:v00008086d000010F8sv0000103Csd000017D2*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560M Adapter
++ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (Ethernet 10Gb 2-port 560M Adapter)
+ pci:v00008086d000010F8sv0000103Csd000018D0*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560FLB Adapter
++ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (Ethernet 10Gb 2-port 560FLB Adapter)
+ pci:v00008086d000010F8sv00008086sd0000000C*
+- ID_MODEL_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4-KR Mezz
++ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection (Ethernet X520 10GbE Dual Port KX4-KR Mezz)
+ pci:v00008086d000010F9*
+  ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Network Connection
+@@ -58143,58 +58143,58 @@ pci:v00008086d000010FB*
+  ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection
+ pci:v00008086d000010FBsv00001028sd00001F72*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X520/I350 rNDC
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10G 4P X520/I350 rNDC)
+ pci:v00008086d000010FBsv0000103Csd000017D0*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10Gb 2-port 560FLR-SFP+ Adapter)
+ pci:v00008086d000010FBsv0000103Csd000017D2*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560M Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10Gb 2-port 560M Adapter)
+ pci:v00008086d000010FBsv0000103Csd000017D3*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10Gb 2-port 560SFP+ Adapter)
+ pci:v00008086d000010FBsv0000103Csd0000211B*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port P560FLR-SFP+ Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10Gb 1-port P560FLR-SFP+ Adapter)
+ pci:v00008086d000010FBsv0000103Csd00002147*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10Gb 1-port 561i Adapter)
+ pci:v00008086d000010FBsv0000103Csd00002159*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 562i Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet 10Gb 2-port 562i Adapter)
+ pci:v00008086d000010FBsv0000108Esd00007B11*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+ pci:v00008086d000010FBsv00001734sd000011A9*
+- ID_MODEL_FROM_DATABASE=10 Gigabit Dual Port Network Connection
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (10 Gigabit Dual Port Network Connection)
+ pci:v00008086d000010FBsv000017AAsd00001071*
+- ID_MODEL_FROM_DATABASE=ThinkServer X520-2 AnyFabric
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (ThinkServer X520-2 AnyFabric)
+ pci:v00008086d000010FBsv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-DA2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-DA2)
+ pci:v00008086d000010FBsv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+ pci:v00008086d000010FBsv00008086sd00000006*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-1
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-1)
+ pci:v00008086d000010FBsv00008086sd00000008*
+- ID_MODEL_FROM_DATABASE=Ethernet OCP Server Adapter X520-2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet OCP Server Adapter X520-2)
+ pci:v00008086d000010FBsv00008086sd0000000A*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-1
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-1)
+ pci:v00008086d000010FBsv00008086sd0000000C*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+ pci:v00008086d000010FBsv00008086sd00007A11*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+ pci:v00008086d000010FBsv00008086sd00007A12*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
++ ID_MODEL_FROM_DATABASE=82599ES 10-Gigabit SFI/SFP+ Network Connection (Ethernet Server Adapter X520-2)
+ pci:v00008086d000010FC*
+  ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Network Connection
+@@ -58209,19 +58209,19 @@ pci:v00008086d00001130*
+  ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub
+ pci:v00008086d00001130sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (Travelmate 612 TX)
+ pci:v00008086d00001130sv00001043sd00008027*
+- ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard
++ ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (TUSL2-C Mainboard)
+ pci:v00008086d00001130sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (Vaio PCG-FX403)
+ pci:v00008086d00001130sv00008086sd00004532*
+- ID_MODEL_FROM_DATABASE=D815EEA2 mainboard
++ ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (D815EEA2 mainboard)
+ pci:v00008086d00001130sv00008086sd00004557*
+- ID_MODEL_FROM_DATABASE=D815EGEW Mainboard
++ ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub (D815EGEW Mainboard)
+ pci:v00008086d00001131*
+  ID_MODEL_FROM_DATABASE=82815 815 Chipset AGP Bridge
+@@ -58230,28 +58230,28 @@ pci:v00008086d00001132*
+  ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC)
+ pci:v00008086d00001132sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (Travelmate 612 TX)
+ pci:v00008086d00001132sv0000103Csd00002001*
+- ID_MODEL_FROM_DATABASE=e-pc 40
++ ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (e-pc 40)
+ pci:v00008086d00001132sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (Vaio PCG-FX403)
+ pci:v00008086d00001132sv00008086sd00004532*
+- ID_MODEL_FROM_DATABASE=D815EEA2 Mainboard
++ ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (D815EEA2 Mainboard)
+ pci:v00008086d00001132sv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=D815EEA Motherboard
++ ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (D815EEA Motherboard)
+ pci:v00008086d00001132sv00008086sd00004557*
+- ID_MODEL_FROM_DATABASE=D815EGEW Mainboard
++ ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) (D815EGEW Mainboard)
+ pci:v00008086d00001161*
+  ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Advanced Programmable Interrupt Controller
+ pci:v00008086d00001161sv00008086sd00001161*
+- ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub APIC
++ ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Advanced Programmable Interrupt Controller (82806AA PCI64 Hub APIC)
+ pci:v00008086d00001162*
+  ID_MODEL_FROM_DATABASE=Xscale 80200 Big Endian Companion Chip
+@@ -58260,25 +58260,25 @@ pci:v00008086d00001200*
+  ID_MODEL_FROM_DATABASE=IXP1200 Network Processor
+ pci:v00008086d00001200sv0000172Asd00000000*
+- ID_MODEL_FROM_DATABASE=AEP SSL Accelerator
++ ID_MODEL_FROM_DATABASE=IXP1200 Network Processor (AEP SSL Accelerator)
+ pci:v00008086d00001209*
+  ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller
+ pci:v00008086d00001209sv0000140Bsd00000610*
+- ID_MODEL_FROM_DATABASE=PMC610 quad Ethernet board
++ ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller (PMC610 quad Ethernet board)
+ pci:v00008086d00001209sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller (QEMU Virtual Machine)
+ pci:v00008086d00001209sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller (CT7 mainboard)
+ pci:v00008086d00001209sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller (CE7 mainboard)
+ pci:v00008086d00001209sv00004C53sd00001070*
+- ID_MODEL_FROM_DATABASE=PC6 mainboard
++ ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller (PC6 mainboard)
+ pci:v00008086d00001221*
+  ID_MODEL_FROM_DATABASE=82092AA PCI to PCMCIA Bridge
+@@ -58305,487 +58305,487 @@ pci:v00008086d00001229*
+  ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100
+ pci:v00008086d00001229sv00000E11sd00003001*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd00003002*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd00003003*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd00003004*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd00003005*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd00003006*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd00003007*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN*)
+ pci:v00008086d00001229sv00000E11sd0000B01E*
+- ID_MODEL_FROM_DATABASE=NC3120 Fast Ethernet NIC
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3120 Fast Ethernet NIC)
+ pci:v00008086d00001229sv00000E11sd0000B01F*
+- ID_MODEL_FROM_DATABASE=NC3122 Fast Ethernet NIC (dual port)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3122 Fast Ethernet NIC (dual port))
+ pci:v00008086d00001229sv00000E11sd0000B02F*
+- ID_MODEL_FROM_DATABASE=NC1120 Ethernet NIC
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC1120 Ethernet NIC)
+ pci:v00008086d00001229sv00000E11sd0000B04A*
+- ID_MODEL_FROM_DATABASE=Netelligent 10/100TX NIC with Wake on LAN
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (Netelligent 10/100TX NIC with Wake on LAN)
+ pci:v00008086d00001229sv00000E11sd0000B0C6*
+- ID_MODEL_FROM_DATABASE=NC3161 Fast Ethernet NIC (embedded, WOL)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3161 Fast Ethernet NIC (embedded, WOL))
+ pci:v00008086d00001229sv00000E11sd0000B0C7*
+- ID_MODEL_FROM_DATABASE=NC3160 Fast Ethernet NIC (embedded)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3160 Fast Ethernet NIC (embedded))
+ pci:v00008086d00001229sv00000E11sd0000B0D7*
+- ID_MODEL_FROM_DATABASE=NC3121 Fast Ethernet NIC (WOL)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3121 Fast Ethernet NIC (WOL))
+ pci:v00008086d00001229sv00000E11sd0000B0DD*
+- ID_MODEL_FROM_DATABASE=NC3131 Fast Ethernet NIC (dual port)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3131 Fast Ethernet NIC (dual port))
+ pci:v00008086d00001229sv00000E11sd0000B0DE*
+- ID_MODEL_FROM_DATABASE=NC3132 Fast Ethernet Module (dual port)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3132 Fast Ethernet Module (dual port))
+ pci:v00008086d00001229sv00000E11sd0000B0E1*
+- ID_MODEL_FROM_DATABASE=NC3133 Fast Ethernet Module (100-FX)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3133 Fast Ethernet Module (100-FX))
+ pci:v00008086d00001229sv00000E11sd0000B134*
+- ID_MODEL_FROM_DATABASE=NC3163 Fast Ethernet NIC (embedded, WOL)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3163 Fast Ethernet NIC (embedded, WOL))
+ pci:v00008086d00001229sv00000E11sd0000B13C*
+- ID_MODEL_FROM_DATABASE=NC3162 Fast Ethernet NIC (embedded)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3162 Fast Ethernet NIC (embedded))
+ pci:v00008086d00001229sv00000E11sd0000B144*
+- ID_MODEL_FROM_DATABASE=NC3123 Fast Ethernet NIC (WOL)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3123 Fast Ethernet NIC (WOL))
+ pci:v00008086d00001229sv00000E11sd0000B163*
+- ID_MODEL_FROM_DATABASE=NC3134 Fast Ethernet NIC (dual port)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3134 Fast Ethernet NIC (dual port))
+ pci:v00008086d00001229sv00000E11sd0000B164*
+- ID_MODEL_FROM_DATABASE=NC3135 Fast Ethernet Upgrade Module (dual port)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC3135 Fast Ethernet Upgrade Module (dual port))
+ pci:v00008086d00001229sv00000E11sd0000B1A4*
+- ID_MODEL_FROM_DATABASE=NC7131 Gigabit Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NC7131 Gigabit Server Adapter)
+ pci:v00008086d00001229sv00001014sd0000005C*
+- ID_MODEL_FROM_DATABASE=82558B Ethernet Pro 10/100
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82558B Ethernet Pro 10/100)
+ pci:v00008086d00001229sv00001014sd000001BC*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LAN On Motherboard
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LAN On Motherboard)
+ pci:v00008086d00001229sv00001014sd000001F1*
+- ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Ethernet Server Adapter)
+ pci:v00008086d00001229sv00001014sd000001F2*
+- ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Ethernet Server Adapter)
+ pci:v00008086d00001229sv00001014sd00000207*
+- ID_MODEL_FROM_DATABASE=Ethernet Pro/100 S
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (Ethernet Pro/100 S)
+ pci:v00008086d00001229sv00001014sd00000232*
+- ID_MODEL_FROM_DATABASE=10/100 Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Dual Port Server Adapter)
+ pci:v00008086d00001229sv00001014sd0000023A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R30
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (ThinkPad R30)
+ pci:v00008086d00001229sv00001014sd0000105C*
+- ID_MODEL_FROM_DATABASE=Netfinity 10/100
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (Netfinity 10/100)
+ pci:v00008086d00001229sv00001014sd00002205*
+- ID_MODEL_FROM_DATABASE=ThinkPad A22p
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (ThinkPad A22p)
+ pci:v00008086d00001229sv00001014sd0000305C*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 EtherJet Management Adapter)
+ pci:v00008086d00001229sv00001014sd0000405C*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Adapter with Alert on LAN
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 EtherJet Adapter with Alert on LAN)
+ pci:v00008086d00001229sv00001014sd0000505C*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Secure Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 EtherJet Secure Management Adapter)
+ pci:v00008086d00001229sv00001014sd0000605C*
+- ID_MODEL_FROM_DATABASE=10/100 EtherJet Secure Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 EtherJet Secure Management Adapter)
+ pci:v00008086d00001229sv00001014sd0000705C*
+- ID_MODEL_FROM_DATABASE=10/100 Netfinity 10/100 Ethernet Security Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Netfinity 10/100 Ethernet Security Adapter)
+ pci:v00008086d00001229sv00001014sd0000805C*
+- ID_MODEL_FROM_DATABASE=10/100 Netfinity 10/100 Ethernet Security Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Netfinity 10/100 Ethernet Security Adapter)
+ pci:v00008086d00001229sv00001028sd0000009B*
+- ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Ethernet Server Adapter)
+ pci:v00008086d00001229sv00001028sd000000CE*
+- ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (10/100 Ethernet Server Adapter)
+ pci:v00008086d00001229sv00001033sd00008000*
+- ID_MODEL_FROM_DATABASE=PC-9821X-B06
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PC-9821X-B06)
+ pci:v00008086d00001229sv00001033sd00008016*
+- ID_MODEL_FROM_DATABASE=PK-UG-X006
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PK-UG-X006)
+ pci:v00008086d00001229sv00001033sd0000801F*
+- ID_MODEL_FROM_DATABASE=PK-UG-X006
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PK-UG-X006)
+ pci:v00008086d00001229sv00001033sd00008026*
+- ID_MODEL_FROM_DATABASE=PK-UG-X006
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PK-UG-X006)
+ pci:v00008086d00001229sv00001033sd00008063*
+- ID_MODEL_FROM_DATABASE=82559-based Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559-based Fast Ethernet Adapter)
+ pci:v00008086d00001229sv00001033sd00008064*
+- ID_MODEL_FROM_DATABASE=82559-based Fast Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559-based Fast Ethernet Adapter)
+ pci:v00008086d00001229sv0000103Csd000010C0*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000103Csd000010C3*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000103Csd000010CA*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000103Csd000010CB*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000103Csd000010E3*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000103Csd000010E4*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000103Csd00001200*
+- ID_MODEL_FROM_DATABASE=NetServer 10/100TX
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NetServer 10/100TX)
+ pci:v00008086d00001229sv0000108Esd000010CF*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100(B)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100(B))
+ pci:v00008086d00001229sv000010C3sd00001100*
+- ID_MODEL_FROM_DATABASE=SmartEther100 SC1100
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (SmartEther100 SC1100)
+ pci:v00008086d00001229sv000010CFsd00001115*
+- ID_MODEL_FROM_DATABASE=8255x-based Ethernet Adapter (10/100)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (8255x-based Ethernet Adapter (10/100))
+ pci:v00008086d00001229sv000010CFsd00001143*
+- ID_MODEL_FROM_DATABASE=8255x-based Ethernet Adapter (10/100)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (8255x-based Ethernet Adapter (10/100))
+ pci:v00008086d00001229sv0000110Asd0000008B*
+- ID_MODEL_FROM_DATABASE=82551QM Fast Ethernet Multifuction PCI/CardBus Controller
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82551QM Fast Ethernet Multifuction PCI/CardBus Controller)
+ pci:v00008086d00001229sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 onboard ethernet ETH2
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PC8 onboard ethernet ETH2)
+ pci:v00008086d00001229sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=8255x-based Ethernet Adapter (10/100)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (8255x-based Ethernet Adapter (10/100))
+ pci:v00008086d00001229sv00001179sd00000002*
+- ID_MODEL_FROM_DATABASE=PCI FastEther LAN on Docker
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PCI FastEther LAN on Docker)
+ pci:v00008086d00001229sv00001179sd00000003*
+- ID_MODEL_FROM_DATABASE=8255x-based Fast Ethernet
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (8255x-based Fast Ethernet)
+ pci:v00008086d00001229sv00001259sd00002560*
+- ID_MODEL_FROM_DATABASE=AT-2560 100
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (AT-2560 100)
+ pci:v00008086d00001229sv00001259sd00002561*
+- ID_MODEL_FROM_DATABASE=AT-2560 100 FX Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (AT-2560 100 FX Ethernet Adapter)
+ pci:v00008086d00001229sv00001266sd00000001*
+- ID_MODEL_FROM_DATABASE=NE10/100 Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (NE10/100 Adapter)
+ pci:v00008086d00001229sv000013E9sd00001000*
+- ID_MODEL_FROM_DATABASE=6221L-4U
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (6221L-4U)
+ pci:v00008086d00001229sv0000144Dsd00002501*
+- ID_MODEL_FROM_DATABASE=SEM-2000 MiniPCI LAN Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (SEM-2000 MiniPCI LAN Adapter)
+ pci:v00008086d00001229sv0000144Dsd00002502*
+- ID_MODEL_FROM_DATABASE=SEM-2100IL MiniPCI LAN Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (SEM-2100IL MiniPCI LAN Adapter)
+ pci:v00008086d00001229sv00001668sd00001100*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem))
+ pci:v00008086d00001229sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (CR11/VR11 Single Board Computer)
+ pci:v00008086d00001229sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (CE9)
+ pci:v00008086d00001229sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (QEMU Virtual Machine)
+ pci:v00008086d00001229sv00004C53sd00001080*
+- ID_MODEL_FROM_DATABASE=CT8 mainboard
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (CT8 mainboard)
+ pci:v00008086d00001229sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (PSL09 PrPMC)
+ pci:v00008086d00001229sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100B (TX)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100B (TX))
+ pci:v00008086d00001229sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100B (T4)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100B (T4))
+ pci:v00008086d00001229sv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/10+
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/10+)
+ pci:v00008086d00001229sv00008086sd00000004*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 WfM
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 WfM)
+ pci:v00008086d00001229sv00008086sd00000005*
+- ID_MODEL_FROM_DATABASE=82557 10/100
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82557 10/100)
+ pci:v00008086d00001229sv00008086sd00000006*
+- ID_MODEL_FROM_DATABASE=82557 10/100 with Wake on LAN
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82557 10/100 with Wake on LAN)
+ pci:v00008086d00001229sv00008086sd00000007*
+- ID_MODEL_FROM_DATABASE=82558 10/100 Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82558 10/100 Adapter)
+ pci:v00008086d00001229sv00008086sd00000008*
+- ID_MODEL_FROM_DATABASE=82558 10/100 with Wake on LAN
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82558 10/100 with Wake on LAN)
+ pci:v00008086d00001229sv00008086sd00000009*
+- ID_MODEL_FROM_DATABASE=82558B PRO/100+ PCI (TP)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82558B PRO/100+ PCI (TP))
+ pci:v00008086d00001229sv00008086sd0000000A*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Management Adapter)
+ pci:v00008086d00001229sv00008086sd0000000B*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+)
+ pci:v00008086d00001229sv00008086sd0000000C*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Management Adapter)
+ pci:v00008086d00001229sv00008086sd0000000D*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Alert On LAN II* Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Alert On LAN II* Adapter)
+ pci:v00008086d00001229sv00008086sd0000000E*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter with Alert On LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Management Adapter with Alert On LAN*)
+ pci:v00008086d00001229sv00008086sd0000000F*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Desktop Adapter)
+ pci:v00008086d00001229sv00008086sd00000010*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Management Adapter)
+ pci:v00008086d00001229sv00008086sd00000011*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Management Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Management Adapter)
+ pci:v00008086d00001229sv00008086sd00000012*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Advanced Management Adapter (D)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Advanced Management Adapter (D))
+ pci:v00008086d00001229sv00008086sd00000013*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Advanced Management Adapter (E)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Advanced Management Adapter (E))
+ pci:v00008086d00001229sv00008086sd00000030*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100  Management Adapter with Alert On LAN* GC
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100  Management Adapter with Alert On LAN* GC)
+ pci:v00008086d00001229sv00008086sd00000031*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Desktop Adapter)
+ pci:v00008086d00001229sv00008086sd00000040*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Desktop Adapter)
+ pci:v00008086d00001229sv00008086sd00000041*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Desktop Adapter)
+ pci:v00008086d00001229sv00008086sd00000042*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Desktop Adapter)
+ pci:v00008086d00001229sv00008086sd00000050*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Desktop Adapter)
+ pci:v00008086d00001229sv00008086sd00001009*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Server Adapter)
+ pci:v00008086d00001229sv00008086sd0000100C*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Server Adapter (PILA8470B)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Server Adapter (PILA8470B))
+ pci:v00008086d00001229sv00008086sd00001012*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter (D)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Server Adapter (D))
+ pci:v00008086d00001229sv00008086sd00001013*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter (E)
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Server Adapter (E))
+ pci:v00008086d00001229sv00008086sd00001015*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Dual Port Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001017*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Dual Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Dual Port Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001030*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server)
+ pci:v00008086d00001229sv00008086sd00001040*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001041*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001042*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001050*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001051*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Server Adapter)
+ pci:v00008086d00001229sv00008086sd00001052*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Server Adapter)
+ pci:v00008086d00001229sv00008086sd000010F0*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Dual Port Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ Dual Port Adapter)
+ pci:v00008086d00001229sv00008086sd00001229*
+- ID_MODEL_FROM_DATABASE=82557/8/9 [Ethernet Pro 100]
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82557/8/9 [Ethernet Pro 100])
+ pci:v00008086d00001229sv00008086sd00002009*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd0000200D*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Cardbus
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Cardbus)
+ pci:v00008086d00001229sv00008086sd0000200E*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 LAN+V90 Cardbus Modem
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 LAN+V90 Cardbus Modem)
+ pci:v00008086d00001229sv00008086sd0000200F*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SR Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002010*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002013*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SR Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002016*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002017*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Combo Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Combo Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002018*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SR Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002019*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Combo Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SR Combo Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002101*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 P Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002102*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002103*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002104*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002105*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002106*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 P Mobile Adapter)
+ pci:v00008086d00001229sv00008086sd00002107*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Network Connection)
+ pci:v00008086d00001229sv00008086sd00002108*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Network Connection)
+ pci:v00008086d00001229sv00008086sd00002200*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 P Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002201*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 P Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002202*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002203*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002204*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002205*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002206*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002207*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 SP Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002208*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 P Mobile Combo Adapter)
+ pci:v00008086d00001229sv00008086sd00002402*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002407*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002408*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002409*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd0000240F*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002410*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002411*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002412*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00002413*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100+ MiniPCI)
+ pci:v00008086d00001229sv00008086sd00003000*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LAN on Motherboard
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LAN on Motherboard)
+ pci:v00008086d00001229sv00008086sd00003001*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Basic Alert on LAN*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Basic Alert on LAN*)
+ pci:v00008086d00001229sv00008086sd00003002*
+- ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN II*
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (82559 Fast Ethernet LOM with Alert on LAN II*)
+ pci:v00008086d00001229sv00008086sd00003006*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Network Connection)
+ pci:v00008086d00001229sv00008086sd00003007*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Network Connection)
+ pci:v00008086d00001229sv00008086sd00003008*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Network Connection)
+ pci:v00008086d00001229sv00008086sd00003010*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Network Connection)
+ pci:v00008086d00001229sv00008086sd00003011*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 S Network Connection)
+ pci:v00008086d00001229sv00008086sd00003012*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (EtherExpress PRO/100 Network Connection)
+ pci:v00008086d00001229sv00008086sd0000301A*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (S845WD1-E mainboard)
+ pci:v00008086d00001229sv00008086sd00003411*
+- ID_MODEL_FROM_DATABASE=SDS2 Mainboard
++ ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 (SDS2 Mainboard)
+ pci:v00008086d0000122D*
+  ID_MODEL_FROM_DATABASE=430FX - 82437FX TSC [Triton I]
+@@ -58809,7 +58809,7 @@ pci:v00008086d00001237*
+  ID_MODEL_FROM_DATABASE=440FX - 82441FX PMC [Natoma]
+ pci:v00008086d00001237sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=Qemu virtual machine
++ ID_MODEL_FROM_DATABASE=440FX - 82441FX PMC [Natoma] (Qemu virtual machine)
+ pci:v00008086d00001239*
+  ID_MODEL_FROM_DATABASE=82371FB PIIX IDE Interface
+@@ -58857,10 +58857,10 @@ pci:v00008086d00001461*
+  ID_MODEL_FROM_DATABASE=82870P2 P64H2 I/OxAPIC
+ pci:v00008086d00001461sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=82870P2 P64H2 I/OxAPIC (P4DP6)
+ pci:v00008086d00001461sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9/Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82870P2 P64H2 I/OxAPIC (Cx9/Vx9 mainboard)
+ pci:v00008086d00001462*
+  ID_MODEL_FROM_DATABASE=82870P2 P64H2 Hot Plug Controller
+@@ -58872,16 +58872,16 @@ pci:v00008086d00001502*
+  ID_MODEL_FROM_DATABASE=82579LM Gigabit Network Connection
+ pci:v00008086d00001502sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=82579LM Gigabit Network Connection (Precision M4600)
+ pci:v00008086d00001502sv00008086sd0000357A*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=82579LM Gigabit Network Connection (Server Board S1200BTS)
+ pci:v00008086d00001503*
+  ID_MODEL_FROM_DATABASE=82579V Gigabit Network Connection
+ pci:v00008086d00001503sv00001043sd0000849C*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82579V Gigabit Network Connection (P8P67 Deluxe Motherboard)
+ pci:v00008086d00001507*
+  ID_MODEL_FROM_DATABASE=Ethernet Express Module X520-P2
+@@ -58911,19 +58911,19 @@ pci:v00008086d0000150D*
+  ID_MODEL_FROM_DATABASE=82576 Gigabit Backplane Connection
+ pci:v00008086d0000150Dsv00008086sd0000A10C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET Quad Port Mezzanine Card
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Backplane Connection (Gigabit ET Quad Port Mezzanine Card)
+ pci:v00008086d0000150E*
+  ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection
+ pci:v00008086d0000150Esv0000103Csd00001780*
+- ID_MODEL_FROM_DATABASE=NC365T 4-port Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection (NC365T 4-port Ethernet Server Adapter)
+ pci:v00008086d0000150Esv00008086sd000012A1*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T4
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection (Ethernet Server Adapter I340-T4)
+ pci:v00008086d0000150Esv00008086sd000012A2*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T4
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection (Ethernet Server Adapter I340-T4)
+ pci:v00008086d0000150F*
+  ID_MODEL_FROM_DATABASE=82580 Gigabit Fiber Network Connection
+@@ -58947,16 +58947,16 @@ pci:v00008086d00001516*
+  ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection
+ pci:v00008086d00001516sv00008086sd000012B1*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T2
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection (Ethernet Server Adapter I340-T2)
+ pci:v00008086d00001516sv00008086sd000012B2*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T2
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection (Ethernet Server Adapter I340-T2)
+ pci:v00008086d00001517*
+  ID_MODEL_FROM_DATABASE=82599ES 10 Gigabit Network Connection
+ pci:v00008086d00001517sv00001137sd0000006A*
+- ID_MODEL_FROM_DATABASE=UCS CNA M61KR-I Intel Converged Network Adapter
++ ID_MODEL_FROM_DATABASE=82599ES 10 Gigabit Network Connection (UCS CNA M61KR-I Intel Converged Network Adapter)
+ pci:v00008086d00001518*
+  ID_MODEL_FROM_DATABASE=82576NS SerDes Gigabit Network Connection
+@@ -58965,7 +58965,7 @@ pci:v00008086d0000151C*
+  ID_MODEL_FROM_DATABASE=82599 10 Gigabit TN Network Connection
+ pci:v00008086d0000151Csv0000108Esd00007B13*
+- ID_MODEL_FROM_DATABASE=Dual 10GBASE-T LP
++ ID_MODEL_FROM_DATABASE=82599 10 Gigabit TN Network Connection (Dual 10GBASE-T LP)
+ pci:v00008086d00001520*
+  ID_MODEL_FROM_DATABASE=I350 Ethernet Controller Virtual Function
+@@ -58974,115 +58974,115 @@ pci:v00008086d00001521*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection
+ pci:v00008086d00001521sv00001028sd00000602*
+- ID_MODEL_FROM_DATABASE=Gigabit 2P I350-t LOM
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 2P I350-t LOM)
+ pci:v00008086d00001521sv00001028sd00001F60*
+- ID_MODEL_FROM_DATABASE=Intel GbE 4P I350crNDC
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Intel GbE 4P I350crNDC)
+ pci:v00008086d00001521sv00001028sd00001F62*
+- ID_MODEL_FROM_DATABASE=Intel GbE 2P I350crNDC
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Intel GbE 2P I350crNDC)
+ pci:v00008086d00001521sv00001028sd0000FF9A*
+- ID_MODEL_FROM_DATABASE=Gigabit 4P X710/I350 rNDC
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X710/I350 rNDC)
+ pci:v00008086d00001521sv0000103Csd000017D1*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366FLR Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 4-port 366FLR Adapter)
+ pci:v00008086d00001521sv0000103Csd00002003*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 367i Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 2-port 367i Adapter)
+ pci:v00008086d00001521sv0000103Csd00002226*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 1-port 364i Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 1-port 364i Adapter)
+ pci:v00008086d00001521sv0000103Csd0000337F*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 2-port 361i Adapter)
+ pci:v00008086d00001521sv0000103Csd00003380*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366i Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 4-port 366i Adapter)
+ pci:v00008086d00001521sv0000103Csd0000339E*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361T Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 2-port 361T Adapter)
+ pci:v00008086d00001521sv0000108Esd00007B16*
+- ID_MODEL_FROM_DATABASE=Quad Port GbE PCIe 2.0 ExpressModule, UTP
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Quad Port GbE PCIe 2.0 ExpressModule, UTP)
+ pci:v00008086d00001521sv0000108Esd00007B18*
+- ID_MODEL_FROM_DATABASE=Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP)
+ pci:v00008086d00001521sv000010A9sd0000802A*
+- ID_MODEL_FROM_DATABASE=UV2-BaseIO dual-port GbE
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (UV2-BaseIO dual-port GbE)
+ pci:v00008086d00001521sv000017AAsd00001074*
+- ID_MODEL_FROM_DATABASE=ThinkServer I350-T4 AnyFabric
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (ThinkServer I350-T4 AnyFabric)
+ pci:v00008086d00001521sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T4)
+ pci:v00008086d00001521sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T2)
+ pci:v00008086d00001521sv00008086sd000000A1*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T4)
+ pci:v00008086d00001521sv00008086sd000000A2*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T2)
+ pci:v00008086d00001521sv00008086sd00005001*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T4)
+ pci:v00008086d00001521sv00008086sd00005002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet Server Adapter I350-T2)
+ pci:v00008086d00001522*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection
+ pci:v00008086d00001522sv0000108Esd00007B17*
+- ID_MODEL_FROM_DATABASE=Quad Port GbE PCIe 2.0 ExpressModule, MMF
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Quad Port GbE PCIe 2.0 ExpressModule, MMF)
+ pci:v00008086d00001522sv0000108Esd00007B19*
+- ID_MODEL_FROM_DATABASE=Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF)
+ pci:v00008086d00001522sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-T2)
+ pci:v00008086d00001522sv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F4
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-F4)
+ pci:v00008086d00001522sv00008086sd00000004*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-F2)
+ pci:v00008086d00001522sv00008086sd00000005*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F1
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-F1)
+ pci:v00008086d00001522sv00008086sd000000A2*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-T2)
+ pci:v00008086d00001522sv00008086sd000000A3*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F4
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-F4)
+ pci:v00008086d00001522sv00008086sd000000A4*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F2
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection (Ethernet Server Adapter I350-F2)
+ pci:v00008086d00001523*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection
+ pci:v00008086d00001523sv00001028sd00001F9B*
+- ID_MODEL_FROM_DATABASE=Gigabit 4P I350 bNDC
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Gigabit 4P I350 bNDC)
+ pci:v00008086d00001523sv0000103Csd00001784*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Ethernet 1Gb 2-port 361FLB Adapter)
+ pci:v00008086d00001523sv0000103Csd000018D1*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Ethernet 1Gb 2-port 361FLB Adapter)
+ pci:v00008086d00001523sv0000103Csd00001989*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 363i Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Ethernet 1Gb 2-port 363i Adapter)
+ pci:v00008086d00001523sv0000103Csd0000339F*
+- ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366M Adapter
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Ethernet 1Gb 4-port 366M Adapter)
+ pci:v00008086d00001523sv00008086sd00001F52*
+- ID_MODEL_FROM_DATABASE=1GbE 4P I350 Mezz
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (1GbE 4P I350 Mezz)
+ pci:v00008086d00001524*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Connection
+@@ -59094,64 +59094,64 @@ pci:v00008086d00001526*
+  ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection
+ pci:v00008086d00001526sv00008086sd0000A05C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET2 Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET2 Quad Port Server Adapter)
+ pci:v00008086d00001526sv00008086sd0000A06C*
+- ID_MODEL_FROM_DATABASE=Gigabit ET2 Quad Port Server Adapter
++ ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection (Gigabit ET2 Quad Port Server Adapter)
+ pci:v00008086d00001527*
+  ID_MODEL_FROM_DATABASE=82580 Gigabit Fiber Network Connection
+ pci:v00008086d00001527sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-F4
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Fiber Network Connection (Ethernet Server Adapter I340-F4)
+ pci:v00008086d00001527sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-F4
++ ID_MODEL_FROM_DATABASE=82580 Gigabit Fiber Network Connection (Ethernet Server Adapter I340-F4)
+ pci:v00008086d00001528*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2
+ pci:v00008086d00001528sv00001028sd00001F61*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X540/I350 rNDC
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet 10G 4P X540/I350 rNDC)
+ pci:v00008086d00001528sv0000103Csd0000192D*
+- ID_MODEL_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (561FLR-T 2-port 10Gb Ethernet Adapter)
+ pci:v00008086d00001528sv0000103Csd00002004*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561i Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet 10Gb 2-port 561i Adapter)
+ pci:v00008086d00001528sv0000103Csd0000211A*
+- ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet 10Gb 2-port 561T Adapter)
+ pci:v00008086d00001528sv0000108Esd00007B14*
+- ID_MODEL_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T)
+ pci:v00008086d00001528sv0000108Esd00007B15*
+- ID_MODEL_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T)
+ pci:v00008086d00001528sv00001137sd000000BF*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet Converged Network Adapter X540-T2)
+ pci:v00008086d00001528sv000017AAsd00001073*
+- ID_MODEL_FROM_DATABASE=ThinkServer X540-T2 AnyFabric
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (ThinkServer X540-T2 AnyFabric)
+ pci:v00008086d00001528sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet Converged Network Adapter X540-T2)
+ pci:v00008086d00001528sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T1
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet Converged Network Adapter X540-T1)
+ pci:v00008086d00001528sv00008086sd0000001A*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet Converged Network Adapter X540-T2)
+ pci:v00008086d00001528sv00008086sd000000A2*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T1
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet Converged Network Adapter X540-T1)
+ pci:v00008086d00001528sv00008086sd00001F61*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X540/I350 rNDC
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet 10G 4P X540/I350 rNDC)
+ pci:v00008086d00001528sv00008086sd00005003*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X540-t Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 (Ethernet 10G 2P X540-t Adapter)
+ pci:v00008086d00001529*
+  ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Network Connection with FCoE
+@@ -59163,16 +59163,16 @@ pci:v00008086d00001533*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+ pci:v00008086d00001533sv0000103Csd00000003*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet Server Adapter I210-T1)
+ pci:v00008086d00001533sv000017AAsd00001100*
+- ID_MODEL_FROM_DATABASE=ThinkServer Ethernet Server Adapter
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (ThinkServer Ethernet Server Adapter)
+ pci:v00008086d00001533sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet Server Adapter I210-T1)
+ pci:v00008086d00001533sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet Server Adapter I210-T1)
+ pci:v00008086d00001534*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+@@ -59193,10 +59193,10 @@ pci:v00008086d0000153A*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM
+ pci:v00008086d0000153Asv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM (ZBook 15)
+ pci:v00008086d0000153Asv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM (ThinkPad T440p)
+ pci:v00008086d0000153B*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-V
+@@ -59211,13 +59211,13 @@ pci:v00008086d0000154A*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-4
+ pci:v00008086d0000154Asv00008086sd0000011A*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4
++ ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-4 (Ethernet Converged Network Adapter X520-4)
+ pci:v00008086d0000154Asv00008086sd0000011B*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4
++ ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-4 (Ethernet Converged Network Adapter X520-4)
+ pci:v00008086d0000154Asv00008086sd0000011C*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4
++ ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-4 (Ethernet Converged Network Adapter X520-4)
+ pci:v00008086d0000154C*
+  ID_MODEL_FROM_DATABASE=XL710 X710 Virtual Function
+@@ -59226,13 +59226,13 @@ pci:v00008086d0000154D*
+  ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X520 Adapter
+ pci:v00008086d0000154Dsv00008086sd00007B11*
+- ID_MODEL_FROM_DATABASE=10GbE 2P X520 Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X520 Adapter (10GbE 2P X520 Adapter)
+ pci:v00008086d00001557*
+  ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection
+ pci:v00008086d00001557sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet OCP Server Adapter X520-1
++ ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection (Ethernet OCP Server Adapter X520-1)
+ pci:v00008086d00001558*
+  ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-Q1
+@@ -59250,22 +59250,22 @@ pci:v00008086d0000155A*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I218-LM
+ pci:v00008086d0000155Asv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Ethernet Connection I218-LM (ThinkPad X240)
+ pci:v00008086d0000155C*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter
+ pci:v00008086d0000155Csv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X540-T2
++ ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter (X540-T2)
+ pci:v00008086d0000155D*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter
+ pci:v00008086d0000155Dsv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-SR2
++ ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter (X520-SR2)
+ pci:v00008086d0000155Dsv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-LR2
++ ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter (X520-LR2)
+ pci:v00008086d00001560*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X540
+@@ -59277,28 +59277,28 @@ pci:v00008086d00001572*
+  ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter
+ pci:v00008086d00001572sv00001028sd00001F99*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X710/I350 rNDC
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet 10G 4P X710/I350 rNDC)
+ pci:v00008086d00001572sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-4
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet Converged Network Adapter X710-4)
+ pci:v00008086d00001572sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-4
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet Converged Network Adapter X710-4)
+ pci:v00008086d00001572sv00008086sd00000004*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-4
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet Converged Network Adapter X710-4)
+ pci:v00008086d00001572sv00008086sd00000005*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X710 Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet 10G 4P X710 Adapter)
+ pci:v00008086d00001572sv00008086sd00000006*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G2P X710 Adapter
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet 10G2P X710 Adapter)
+ pci:v00008086d00001572sv00008086sd00000007*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-2
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet Converged Network Adapter X710-2)
+ pci:v00008086d00001572sv00008086sd00000008*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-2
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter (Ethernet Converged Network Adapter X710-2)
+ pci:v00008086d0000157B*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+@@ -59313,31 +59313,31 @@ pci:v00008086d00001581*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10Gbe backplane
+ pci:v00008086d00001581sv00001028sd00001F98*
+- ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X710-k bNDC
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10Gbe backplane (Ethernet 10G 4P X710-k bNDC)
+ pci:v00008086d00001583*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+
+ pci:v00008086d00001583sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q2
++ ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
+ pci:v00008086d00001583sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q2
++ ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
+ pci:v00008086d00001583sv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=Ethernet I/O Module XL710-Q2
++ ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+ (Ethernet I/O Module XL710-Q2)
+ pci:v00008086d00001584*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+
+ pci:v00008086d00001584sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q1
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q1)
+ pci:v00008086d00001584sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q1
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q1)
+ pci:v00008086d00001584sv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=Ethernet I/O Module XL710-Q1
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet I/O Module XL710-Q1)
+ pci:v00008086d00001585*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 10GbE QSFP+
+@@ -59469,82 +59469,82 @@ pci:v00008086d00001960*
+  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor
+ pci:v00008086d00001960sv0000101Esd00000431*
+- ID_MODEL_FROM_DATABASE=MegaRAID 431 RAID Controller
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 431 RAID Controller)
+ pci:v00008086d00001960sv0000101Esd00000438*
+- ID_MODEL_FROM_DATABASE=MegaRAID 438 Ultra2 LVD RAID Controller
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 438 Ultra2 LVD RAID Controller)
+ pci:v00008086d00001960sv0000101Esd00000466*
+- ID_MODEL_FROM_DATABASE=MegaRAID 466 Express Plus RAID Controller
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 466 Express Plus RAID Controller)
+ pci:v00008086d00001960sv0000101Esd00000467*
+- ID_MODEL_FROM_DATABASE=MegaRAID 467 Enterprise 1500 RAID Controller
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 467 Enterprise 1500 RAID Controller)
+ pci:v00008086d00001960sv0000101Esd00000490*
+- ID_MODEL_FROM_DATABASE=MegaRAID 490 Express 300 RAID Controller
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 490 Express 300 RAID Controller)
+ pci:v00008086d00001960sv0000101Esd00000762*
+- ID_MODEL_FROM_DATABASE=MegaRAID 762 Express RAID Controller
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 762 Express RAID Controller)
+ pci:v00008086d00001960sv0000101Esd000009A0*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (PowerEdge Expandable RAID Controller 2/SC)
+ pci:v00008086d00001960sv00001028sd00000467*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/DC
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (PowerEdge Expandable RAID Controller 2/DC)
+ pci:v00008086d00001960sv00001028sd00001111*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (PowerEdge Expandable RAID Controller 2/SC)
+ pci:v00008086d00001960sv0000103Csd000003A2*
+- ID_MODEL_FROM_DATABASE=MegaRAID
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID)
+ pci:v00008086d00001960sv0000103Csd000010C6*
+- ID_MODEL_FROM_DATABASE=MegaRAID 438, NetRAID-3Si
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 438, NetRAID-3Si)
+ pci:v00008086d00001960sv0000103Csd000010C7*
+- ID_MODEL_FROM_DATABASE=MegaRAID T5, Integrated NetRAID
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID T5, Integrated NetRAID)
+ pci:v00008086d00001960sv0000103Csd000010CC*
+- ID_MODEL_FROM_DATABASE=MegaRAID, Integrated NetRAID
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID, Integrated NetRAID)
+ pci:v00008086d00001960sv0000103Csd000010CD*
+- ID_MODEL_FROM_DATABASE=NetRAID-1Si
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (NetRAID-1Si)
+ pci:v00008086d00001960sv0000105Asd00000000*
+- ID_MODEL_FROM_DATABASE=SuperTrak
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (SuperTrak)
+ pci:v00008086d00001960sv0000105Asd00002168*
+- ID_MODEL_FROM_DATABASE=SuperTrak Pro
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (SuperTrak Pro)
+ pci:v00008086d00001960sv0000105Asd00005168*
+- ID_MODEL_FROM_DATABASE=SuperTrak66/100
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (SuperTrak66/100)
+ pci:v00008086d00001960sv00001111sd00001111*
+- ID_MODEL_FROM_DATABASE=MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC)
+ pci:v00008086d00001960sv00001111sd00001112*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (PowerEdge Expandable RAID Controller 2/SC)
+ pci:v00008086d00001960sv0000113Csd000003A2*
+- ID_MODEL_FROM_DATABASE=MegaRAID
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (MegaRAID)
+ pci:v00008086d00001960sv0000E4BFsd00001010*
+- ID_MODEL_FROM_DATABASE=CG1-RADIO
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (CG1-RADIO)
+ pci:v00008086d00001960sv0000E4BFsd00001020*
+- ID_MODEL_FROM_DATABASE=CU2-QUARTET
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (CU2-QUARTET)
+ pci:v00008086d00001960sv0000E4BFsd00001040*
+- ID_MODEL_FROM_DATABASE=CU1-CHORUS
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (CU1-CHORUS)
+ pci:v00008086d00001960sv0000E4BFsd00003100*
+- ID_MODEL_FROM_DATABASE=CX1-BAND
++ ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor (CX1-BAND)
+ pci:v00008086d00001962*
+  ID_MODEL_FROM_DATABASE=80960RM (i960RM) Microprocessor
+ pci:v00008086d00001962sv0000105Asd00000000*
+- ID_MODEL_FROM_DATABASE=SuperTrak SX6000 I2O CPU
++ ID_MODEL_FROM_DATABASE=80960RM (i960RM) Microprocessor (SuperTrak SX6000 I2O CPU)
+ pci:v00008086d00001A21*
+  ID_MODEL_FROM_DATABASE=82840 840 [Carmel] Chipset Host Bridge (Hub A)
+@@ -59559,10 +59559,10 @@ pci:v00008086d00001A30*
+  ID_MODEL_FROM_DATABASE=82845 845 [Brookdale] Chipset Host Bridge
+ pci:v00008086d00001A30sv00001028sd0000010E*
+- ID_MODEL_FROM_DATABASE=Optiplex GX240
++ ID_MODEL_FROM_DATABASE=82845 845 [Brookdale] Chipset Host Bridge (Optiplex GX240)
+ pci:v00008086d00001A30sv000015D9sd00003280*
+- ID_MODEL_FROM_DATABASE=Supermicro P4SBE Mainboard
++ ID_MODEL_FROM_DATABASE=82845 845 [Brookdale] Chipset Host Bridge (Supermicro P4SBE Mainboard)
+ pci:v00008086d00001A31*
+  ID_MODEL_FROM_DATABASE=82845 845 [Brookdale] Chipset AGP Bridge
+@@ -59571,28 +59571,28 @@ pci:v00008086d00001A38*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine
+ pci:v00008086d00001A38sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (X7DVL-E-O motherboard)
+ pci:v00008086d00001A38sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine (Intel S5000PSLSATA Server Board)
+ pci:v00008086d00001A48*
+  ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller
+ pci:v00008086d00001A48sv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE SR Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE SR Server Adapter)
+ pci:v00008086d00001A48sv00008086sd0000A11F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE SR Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE SR Server Adapter)
+ pci:v00008086d00001B48*
+  ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller
+ pci:v00008086d00001B48sv00008086sd0000A01F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE LR Server Adapter)
+ pci:v00008086d00001B48sv00008086sd0000A11F*
+- ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter
++ ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller (PRO/10GbE LR Server Adapter)
+ pci:v00008086d00001C00*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 4 port SATA IDE Controller
+@@ -59604,28 +59604,28 @@ pci:v00008086d00001C02*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA AHCI Controller
+ pci:v00008086d00001C02sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA AHCI Controller (XPS 8300)
+ pci:v00008086d00001C02sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA AHCI Controller (P8 series motherboard)
+ pci:v00008086d00001C02sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA AHCI Controller (Server Board S1200BTS)
+ pci:v00008086d00001C03*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller
+ pci:v00008086d00001C03sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (Precision M4600)
+ pci:v00008086d00001C03sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (Vostro 3350)
+ pci:v00008086d00001C03sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (Vostro 3750)
+ pci:v00008086d00001C03sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C04*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA RAID Controller
+@@ -59643,58 +59643,58 @@ pci:v00008086d00001C10*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1
+ pci:v00008086d00001C10sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 (XPS 8300)
+ pci:v00008086d00001C10sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 (Vostro 3750)
+ pci:v00008086d00001C10sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 (P8 series motherboard)
+ pci:v00008086d00001C10sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 (Server Board S1200BTS / Apple MacBook Pro 8,1/8,2)
+ pci:v00008086d00001C12*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2
+ pci:v00008086d00001C12sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2 (XPS 8300)
+ pci:v00008086d00001C12sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2 (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C14*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 3
+ pci:v00008086d00001C14sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 3 (Vostro 3750)
+ pci:v00008086d00001C14sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 3 (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C16*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 4
+ pci:v00008086d00001C16sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 4 (XPS 8300)
+ pci:v00008086d00001C18*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 5
+ pci:v00008086d00001C18sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 5 (Vostro 3750)
+ pci:v00008086d00001C18sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 5 (Server Board S1200BTS)
+ pci:v00008086d00001C1A*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 6
+ pci:v00008086d00001C1Asv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 6 (Vostro 3750)
+ pci:v00008086d00001C1Asv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 6 (P8 series motherboard)
+ pci:v00008086d00001C1C*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 7
+@@ -59703,58 +59703,58 @@ pci:v00008086d00001C1E*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 8
+ pci:v00008086d00001C1Esv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 8 (P8 series motherboard)
+ pci:v00008086d00001C20*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller
+ pci:v00008086d00001C20sv00001028sd00000490*
+- ID_MODEL_FROM_DATABASE=Alienware M17x R3
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (Alienware M17x R3)
+ pci:v00008086d00001C20sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (Precision M4600)
+ pci:v00008086d00001C20sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (XPS 8300)
+ pci:v00008086d00001C20sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (Vostro 3350)
+ pci:v00008086d00001C20sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (Vostro 3750)
+ pci:v00008086d00001C20sv00001043sd00008418*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (P8P67 Deluxe Motherboard)
+ pci:v00008086d00001C20sv00001043sd0000841B*
+- ID_MODEL_FROM_DATABASE=P8H67 Series Motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (P8H67 Series Motherboard)
+ pci:v00008086d00001C20sv00008086sd00002008*
+- ID_MODEL_FROM_DATABASE=DQ67SW board
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (DQ67SW board)
+ pci:v00008086d00001C20sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C22*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller
+ pci:v00008086d00001C22sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (Precision M4600)
+ pci:v00008086d00001C22sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (XPS 8300)
+ pci:v00008086d00001C22sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (Vostro 3350)
+ pci:v00008086d00001C22sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (Vostro 3750)
+ pci:v00008086d00001C22sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (P8 series motherboard)
+ pci:v00008086d00001C22sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller (Server Board S1200BTS / Apple MacBook Pro 8,1/8,2)
+ pci:v00008086d00001C24*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family Thermal Management Controller
+@@ -59766,55 +59766,55 @@ pci:v00008086d00001C26*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1
+ pci:v00008086d00001C26sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (Precision M4600)
+ pci:v00008086d00001C26sv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (XPS 8300)
+ pci:v00008086d00001C26sv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (Vostro 3350)
+ pci:v00008086d00001C26sv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (Vostro 3750)
+ pci:v00008086d00001C26sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (P8 series motherboard)
+ pci:v00008086d00001C26sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 (Server Board S1200BTS / Apple MacBook Pro 8,1/8,2)
+ pci:v00008086d00001C27*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #1
+ pci:v00008086d00001C27sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #1 (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C2C*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #5
+ pci:v00008086d00001C2Csv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #5 (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C2D*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2
+ pci:v00008086d00001C2Dsv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (Precision M4600)
+ pci:v00008086d00001C2Dsv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (XPS 8300)
+ pci:v00008086d00001C2Dsv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (Vostro 3350)
+ pci:v00008086d00001C2Dsv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (Vostro 3750)
+ pci:v00008086d00001C2Dsv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (P8 series motherboard)
+ pci:v00008086d00001C2Dsv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 (Server Board S1200BTS / Apple MacBook Pro 8,1/8,2)
+ pci:v00008086d00001C33*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LAN Controller
+@@ -59826,22 +59826,22 @@ pci:v00008086d00001C3A*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1
+ pci:v00008086d00001C3Asv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (Precision M4600)
+ pci:v00008086d00001C3Asv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (XPS 8300)
+ pci:v00008086d00001C3Asv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (Vostro 3350)
+ pci:v00008086d00001C3Asv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (Vostro 3750)
+ pci:v00008086d00001C3Asv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (P8 series motherboard)
+ pci:v00008086d00001C3Asv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C3B*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #2
+@@ -59874,7 +59874,7 @@ pci:v00008086d00001C46*
+  ID_MODEL_FROM_DATABASE=P67 Express Chipset Family LPC Controller
+ pci:v00008086d00001C46sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P67 Express Chipset Family LPC Controller (P8P67 Deluxe Motherboard)
+ pci:v00008086d00001C47*
+  ID_MODEL_FROM_DATABASE=UM67 Express Chipset Family LPC Controller
+@@ -59886,25 +59886,25 @@ pci:v00008086d00001C49*
+  ID_MODEL_FROM_DATABASE=HM65 Express Chipset Family LPC Controller
+ pci:v00008086d00001C49sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=HM65 Express Chipset Family LPC Controller (Apple MacBookPro8,2 [Core i7, 15", 2011])
+ pci:v00008086d00001C4A*
+  ID_MODEL_FROM_DATABASE=H67 Express Chipset Family LPC Controller
+ pci:v00008086d00001C4Asv00001028sd000004AA*
+- ID_MODEL_FROM_DATABASE=XPS 8300
++ ID_MODEL_FROM_DATABASE=H67 Express Chipset Family LPC Controller (XPS 8300)
+ pci:v00008086d00001C4Asv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8H67 Series Motherboard
++ ID_MODEL_FROM_DATABASE=H67 Express Chipset Family LPC Controller (P8H67 Series Motherboard)
+ pci:v00008086d00001C4B*
+  ID_MODEL_FROM_DATABASE=HM67 Express Chipset Family LPC Controller
+ pci:v00008086d00001C4Bsv00001028sd000004B2*
+- ID_MODEL_FROM_DATABASE=Vostro 3350
++ ID_MODEL_FROM_DATABASE=HM67 Express Chipset Family LPC Controller (Vostro 3350)
+ pci:v00008086d00001C4Bsv00001028sd000004DA*
+- ID_MODEL_FROM_DATABASE=Vostro 3750
++ ID_MODEL_FROM_DATABASE=HM67 Express Chipset Family LPC Controller (Vostro 3750)
+ pci:v00008086d00001C4C*
+  ID_MODEL_FROM_DATABASE=Q65 Express Chipset Family LPC Controller
+@@ -59919,7 +59919,7 @@ pci:v00008086d00001C4F*
+  ID_MODEL_FROM_DATABASE=QM67 Express Chipset Family LPC Controller
+ pci:v00008086d00001C4Fsv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=Precision M4600
++ ID_MODEL_FROM_DATABASE=QM67 Express Chipset Family LPC Controller (Precision M4600)
+ pci:v00008086d00001C50*
+  ID_MODEL_FROM_DATABASE=B65 Express Chipset Family LPC Controller
+@@ -59931,7 +59931,7 @@ pci:v00008086d00001C52*
+  ID_MODEL_FROM_DATABASE=C202 Chipset Family LPC Controller
+ pci:v00008086d00001C52sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=C202 Chipset Family LPC Controller (Server Board S1200BTS)
+ pci:v00008086d00001C53*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller
+@@ -59946,7 +59946,7 @@ pci:v00008086d00001C56*
+  ID_MODEL_FROM_DATABASE=C206 Chipset Family LPC Controller
+ pci:v00008086d00001C56sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8B WS Motherboard
++ ID_MODEL_FROM_DATABASE=C206 Chipset Family LPC Controller (P8B WS Motherboard)
+ pci:v00008086d00001C57*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller
+@@ -60177,19 +60177,19 @@ pci:v00008086d00001E02*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode]
+ pci:v00008086d00001E02sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (P8H77-I Motherboard)
+ pci:v00008086d00001E02sv00001849sd00001E02*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (Motherboard)
+ pci:v00008086d00001E03*
+  ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode]
+ pci:v00008086d00001E03sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] (N56VZ)
+ pci:v00008086d00001E03sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] (Zenbook Prime UX31A)
+ pci:v00008086d00001E04*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode]
+@@ -60216,25 +60216,25 @@ pci:v00008086d00001E10*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1
+ pci:v00008086d00001E10sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (N56VZ)
+ pci:v00008086d00001E10sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (Zenbook Prime UX31A)
+ pci:v00008086d00001E10sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (P8H77-I Motherboard)
+ pci:v00008086d00001E10sv00001849sd00001E10*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 (Motherboard)
+ pci:v00008086d00001E12*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2
+ pci:v00008086d00001E12sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 (N56VZ)
+ pci:v00008086d00001E12sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 (Zenbook Prime UX31A)
+ pci:v00008086d00001E14*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 3
+@@ -60243,25 +60243,25 @@ pci:v00008086d00001E16*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4
+ pci:v00008086d00001E16sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (N56VZ)
+ pci:v00008086d00001E16sv00001849sd00001618*
+- ID_MODEL_FROM_DATABASE=Z77 Extreme4 motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 (Z77 Extreme4 motherboard)
+ pci:v00008086d00001E18*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5
+ pci:v00008086d00001E18sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5 (P8H77-I Motherboard)
+ pci:v00008086d00001E18sv00001849sd00001E18*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5 (Motherboard)
+ pci:v00008086d00001E1A*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 6
+ pci:v00008086d00001E1Asv00001849sd00001E1A*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 6 (Motherboard)
+ pci:v00008086d00001E1C*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 7
+@@ -60270,43 +60270,43 @@ pci:v00008086d00001E1E*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 8
+ pci:v00008086d00001E1Esv00001849sd00001E1E*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 8 (Motherboard)
+ pci:v00008086d00001E20*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller
+ pci:v00008086d00001E20sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (N56VZ)
+ pci:v00008086d00001E20sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E20sv00001043sd00008415*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (P8H77-I Motherboard)
+ pci:v00008086d00001E20sv00001849sd00001898*
+- ID_MODEL_FROM_DATABASE=Z77 Extreme4 motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (Z77 Extreme4 motherboard)
+ pci:v00008086d00001E22*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller
+ pci:v00008086d00001E22sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (N56VZ)
+ pci:v00008086d00001E22sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E22sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (P8H77-I Motherboard)
+ pci:v00008086d00001E22sv00001849sd00001E22*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (Motherboard)
+ pci:v00008086d00001E24*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family Thermal Management Controller
+ pci:v00008086d00001E24sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family Thermal Management Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E25*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family DMI to PCI Bridge
+@@ -60315,49 +60315,49 @@ pci:v00008086d00001E26*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1
+ pci:v00008086d00001E26sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (N56VZ)
+ pci:v00008086d00001E26sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (Zenbook Prime UX31A)
+ pci:v00008086d00001E26sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (P8H77-I Motherboard)
+ pci:v00008086d00001E26sv00001849sd00001E26*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (Motherboard)
+ pci:v00008086d00001E2D*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2
+ pci:v00008086d00001E2Dsv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (N56VZ)
+ pci:v00008086d00001E2Dsv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (Zenbook Prime UX31A)
+ pci:v00008086d00001E2Dsv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (P8H77-I Motherboard)
+ pci:v00008086d00001E2Dsv00001849sd00001E2D*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (Motherboard)
+ pci:v00008086d00001E31*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller
+ pci:v00008086d00001E31sv0000103Csd000017AB*
+- ID_MODEL_FROM_DATABASE=ProBook 6570b
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (ProBook 6570b)
+ pci:v00008086d00001E31sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (N56VZ)
+ pci:v00008086d00001E31sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E31sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (P8H77-I Motherboard)
+ pci:v00008086d00001E31sv00001849sd00001E31*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (Motherboard)
+ pci:v00008086d00001E33*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family LAN Controller
+@@ -60366,16 +60366,16 @@ pci:v00008086d00001E3A*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1
+ pci:v00008086d00001E3Asv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (N56VZ)
+ pci:v00008086d00001E3Asv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (Zenbook Prime UX31A)
+ pci:v00008086d00001E3Asv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (P8H77-I Motherboard)
+ pci:v00008086d00001E3Asv00001849sd00001E3A*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (Motherboard)
+ pci:v00008086d00001E3B*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #2
+@@ -60399,7 +60399,7 @@ pci:v00008086d00001E44*
+  ID_MODEL_FROM_DATABASE=Z77 Express Chipset LPC Controller
+ pci:v00008086d00001E44sv00001849sd00001E44*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=Z77 Express Chipset LPC Controller (Motherboard)
+ pci:v00008086d00001E45*
+  ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller
+@@ -60420,7 +60420,7 @@ pci:v00008086d00001E4A*
+  ID_MODEL_FROM_DATABASE=H77 Express Chipset LPC Controller
+ pci:v00008086d00001E4Asv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++ ID_MODEL_FROM_DATABASE=H77 Express Chipset LPC Controller (P8H77-I Motherboard)
+ pci:v00008086d00001E4B*
+  ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller
+@@ -60468,10 +60468,10 @@ pci:v00008086d00001E59*
+  ID_MODEL_FROM_DATABASE=HM76 Express Chipset LPC Controller
+ pci:v00008086d00001E59sv00001043sd00001477*
+- ID_MODEL_FROM_DATABASE=N56VZ
++ ID_MODEL_FROM_DATABASE=HM76 Express Chipset LPC Controller (N56VZ)
+ pci:v00008086d00001E59sv00001043sd00001517*
+- ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A
++ ID_MODEL_FROM_DATABASE=HM76 Express Chipset LPC Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E5A*
+  ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller
+@@ -60804,28 +60804,28 @@ pci:v00008086d00002415*
+  ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller
+ pci:v00008086d00002415sv00001028sd00000095*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 220 Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (Precision Workstation 220 Integrated Digital Audio)
+ pci:v00008086d00002415sv00001028sd000000B4*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX110
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (OptiPlex GX110)
+ pci:v00008086d00002415sv0000110Asd00000051*
+- ID_MODEL_FROM_DATABASE=Activy 2xx
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (Activy 2xx)
+ pci:v00008086d00002415sv000011D4sd00000040*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00002415sv000011D4sd00000048*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00002415sv000011D4sd00005340*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00002415sv00001734sd00001025*
+- ID_MODEL_FROM_DATABASE=Activy 3xx
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (Activy 3xx)
+ pci:v00008086d00002415sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller (QEMU Virtual Machine)
+ pci:v00008086d00002416*
+  ID_MODEL_FROM_DATABASE=82801AA AC'97 Modem Controller
+@@ -60849,10 +60849,10 @@ pci:v00008086d00002425*
+  ID_MODEL_FROM_DATABASE=82801AB AC'97 Audio Controller
+ pci:v00008086d00002425sv000011D4sd00000040*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801AB AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00002425sv000011D4sd00000048*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801AB AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00002426*
+  ID_MODEL_FROM_DATABASE=82801AB AC'97 Modem Controller
+@@ -60864,352 +60864,352 @@ pci:v00008086d00002440*
+  ID_MODEL_FROM_DATABASE=82801BA ISA Bridge (LPC)
+ pci:v00008086d00002440sv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E
++ ID_MODEL_FROM_DATABASE=82801BA ISA Bridge (LPC) (S845WD1-E)
+ pci:v00008086d00002442*
+  ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1
+ pci:v00008086d00002442sv00001014sd000001C6*
+- ID_MODEL_FROM_DATABASE=Netvista A40/A40p
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Netvista A40/A40p)
+ pci:v00008086d00002442sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Travelmate 612 TX)
+ pci:v00008086d00002442sv00001028sd000000C7*
+- ID_MODEL_FROM_DATABASE=Dimension 8100
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Dimension 8100)
+ pci:v00008086d00002442sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Precision 530)
+ pci:v00008086d00002442sv00001028sd0000010E*
+- ID_MODEL_FROM_DATABASE=Optiplex GX240
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Optiplex GX240)
+ pci:v00008086d00002442sv0000103Csd0000126F*
+- ID_MODEL_FROM_DATABASE=e-pc 40
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (e-pc 40)
+ pci:v00008086d00002442sv00001043sd00008027*
+- ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (TUSL2-C Mainboard)
+ pci:v00008086d00002442sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Vaio PCG-FX403)
+ pci:v00008086d00002442sv0000147Bsd00000507*
+- ID_MODEL_FROM_DATABASE=TH7II-RAID
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (TH7II-RAID)
+ pci:v00008086d00002442sv00008086sd00004532*
+- ID_MODEL_FROM_DATABASE=D815EEA2 mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (D815EEA2 mainboard)
+ pci:v00008086d00002442sv00008086sd00004557*
+- ID_MODEL_FROM_DATABASE=D815EGEW Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (D815EGEW Mainboard)
+ pci:v00008086d00002442sv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (S845WD1-E mainboard)
+ pci:v00008086d00002443*
+  ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller
+ pci:v00008086d00002443sv00001014sd000001C6*
+- ID_MODEL_FROM_DATABASE=Netvista A40/A40p
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Netvista A40/A40p)
+ pci:v00008086d00002443sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Travelmate 612 TX)
+ pci:v00008086d00002443sv00001028sd000000C7*
+- ID_MODEL_FROM_DATABASE=Dimension 8100
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Dimension 8100)
+ pci:v00008086d00002443sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Precision 530)
+ pci:v00008086d00002443sv00001028sd0000010E*
+- ID_MODEL_FROM_DATABASE=Optiplex GX240
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Optiplex GX240)
+ pci:v00008086d00002443sv0000103Csd0000126F*
+- ID_MODEL_FROM_DATABASE=e-pc 40
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (e-pc 40)
+ pci:v00008086d00002443sv00001043sd00008027*
+- ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (TUSL2-C Mainboard)
+ pci:v00008086d00002443sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Vaio PCG-FX403)
+ pci:v00008086d00002443sv0000147Bsd00000507*
+- ID_MODEL_FROM_DATABASE=TH7II-RAID
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (TH7II-RAID)
+ pci:v00008086d00002443sv000015D9sd00003280*
+- ID_MODEL_FROM_DATABASE=Supermicro P4SBE Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (Supermicro P4SBE Mainboard)
+ pci:v00008086d00002443sv00008086sd00004532*
+- ID_MODEL_FROM_DATABASE=D815EEA2 mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (D815EEA2 mainboard)
+ pci:v00008086d00002443sv00008086sd00004557*
+- ID_MODEL_FROM_DATABASE=D815EGEW Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (D815EGEW Mainboard)
+ pci:v00008086d00002443sv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller (S845WD1-E mainboard)
+ pci:v00008086d00002444*
+  ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1
+ pci:v00008086d00002444sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Travelmate 612 TX)
+ pci:v00008086d00002444sv00001028sd000000C7*
+- ID_MODEL_FROM_DATABASE=Dimension 8100
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Dimension 8100)
+ pci:v00008086d00002444sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Precision 530)
+ pci:v00008086d00002444sv00001028sd0000010E*
+- ID_MODEL_FROM_DATABASE=Optiplex GX240
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Optiplex GX240)
+ pci:v00008086d00002444sv0000103Csd0000126F*
+- ID_MODEL_FROM_DATABASE=e-pc 40
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (e-pc 40)
+ pci:v00008086d00002444sv00001043sd00008027*
+- ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (TUSL2-C Mainboard)
+ pci:v00008086d00002444sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (Vaio PCG-FX403)
+ pci:v00008086d00002444sv0000147Bsd00000507*
+- ID_MODEL_FROM_DATABASE=TH7II-RAID
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (TH7II-RAID)
+ pci:v00008086d00002444sv00008086sd00004532*
+- ID_MODEL_FROM_DATABASE=D815EEA2 mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (D815EEA2 mainboard)
+ pci:v00008086d00002444sv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 (S845WD1-E mainboard)
+ pci:v00008086d00002445*
+  ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller
+ pci:v00008086d00002445sv00000E11sd0000000B*
+- ID_MODEL_FROM_DATABASE=Compaq Deskpro EN Audio
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Compaq Deskpro EN Audio)
+ pci:v00008086d00002445sv00000E11sd00000088*
+- ID_MODEL_FROM_DATABASE=Evo D500
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Evo D500)
+ pci:v00008086d00002445sv00001014sd000001C6*
+- ID_MODEL_FROM_DATABASE=Netvista A40/A40p
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Netvista A40/A40p)
+ pci:v00008086d00002445sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Travelmate 612 TX)
+ pci:v00008086d00002445sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Precision 530)
+ pci:v00008086d00002445sv0000103Csd0000126F*
+- ID_MODEL_FROM_DATABASE=e-pc 40
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (e-pc 40)
+ pci:v00008086d00002445sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (Vaio PCG-FX403)
+ pci:v00008086d00002445sv00001462sd00003370*
+- ID_MODEL_FROM_DATABASE=STAC9721 AC
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (STAC9721 AC)
+ pci:v00008086d00002445sv0000147Bsd00000507*
+- ID_MODEL_FROM_DATABASE=TH7II-RAID
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (TH7II-RAID)
+ pci:v00008086d00002445sv00008086sd00004557*
+- ID_MODEL_FROM_DATABASE=D815EGEW Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller (D815EGEW Mainboard)
+ pci:v00008086d00002446*
+  ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller
+ pci:v00008086d00002446sv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612 TX
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller (Travelmate 612 TX)
+ pci:v00008086d00002446sv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller (Vaio PCG-FX403)
+ pci:v00008086d00002448*
+  ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge
+ pci:v00008086d00002448sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Latitude E6510)
+ pci:v00008086d00002448sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (HP Compaq nw8240 Mobile Workstation)
+ pci:v00008086d00002448sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (NX6110/NC6120)
+ pci:v00008086d00002448sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Compaq nx9420 Notebook)
+ pci:v00008086d00002448sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Compaq nw8440)
+ pci:v00008086d00002448sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Compaq 6910p)
+ pci:v00008086d00002448sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (VAIO VGN-NR120E)
+ pci:v00008086d00002448sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (D270S/D250S Motherboard)
+ pci:v00008086d00002448sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30 notebook
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (P30 notebook)
+ pci:v00008086d00002448sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Notebook N150P)
+ pci:v00008086d00002448sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (GA-D525TUD)
+ pci:v00008086d00002448sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Amilo M1420)
+ pci:v00008086d00002448sv000017AAsd000020AE*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (ThinkPad T61/R61)
+ pci:v00008086d00002448sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (Desktop Board D425KT)
+ pci:v00008086d00002448sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge (CCG-RUMBA)
+ pci:v00008086d00002449*
+  ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller
+ pci:v00008086d00002449sv00000E11sd00000012*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VM
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VM)
+ pci:v00008086d00002449sv00000E11sd00000091*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd000001CE*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd000001DC*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd000001EB*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd000001EC*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000202*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000205*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000217*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000234*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd0000023D*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000244*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000245*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001014sd00000265*
+- ID_MODEL_FROM_DATABASE=PRO/100 VE Desktop Connection
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (PRO/100 VE Desktop Connection)
+ pci:v00008086d00002449sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=PRO/100 VE Desktop Connection
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (PRO/100 VE Desktop Connection)
+ pci:v00008086d00002449sv00001014sd0000026A*
+- ID_MODEL_FROM_DATABASE=PRO/100 VE Desktop Connection
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (PRO/100 VE Desktop Connection)
+ pci:v00008086d00002449sv0000109Fsd0000315D*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv0000109Fsd00003181*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00001179sd0000FF01*
+- ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (PRO/100 VE Network Connection)
+ pci:v00008086d00002449sv00001186sd00007801*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv0000144Dsd00002602*
+- ID_MODEL_FROM_DATABASE=HomePNA 1M CNR
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (HomePNA 1M CNR)
+ pci:v00008086d00002449sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (QEMU Virtual Machine)
+ pci:v00008086d00002449sv00008086sd00003010*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00008086sd00003011*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VM
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VM)
+ pci:v00008086d00002449sv00008086sd00003012*
+- ID_MODEL_FROM_DATABASE=82562EH based Phoneline
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (82562EH based Phoneline)
+ pci:v00008086d00002449sv00008086sd00003013*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VE)
+ pci:v00008086d00002449sv00008086sd00003014*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VM
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 VM)
+ pci:v00008086d00002449sv00008086sd00003015*
+- ID_MODEL_FROM_DATABASE=82562EH based Phoneline
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (82562EH based Phoneline)
+ pci:v00008086d00002449sv00008086sd00003016*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 P Mobile Combo)
+ pci:v00008086d00002449sv00008086sd00003017*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100 P Mobile)
+ pci:v00008086d00002449sv00008086sd00003018*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100
++ ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller (EtherExpress PRO/100)
+ pci:v00008086d0000244A*
+  ID_MODEL_FROM_DATABASE=82801BAM IDE U100 Controller
+ pci:v00008086d0000244Asv00001025sd00001016*
+- ID_MODEL_FROM_DATABASE=Travelmate 612TX
++ ID_MODEL_FROM_DATABASE=82801BAM IDE U100 Controller (Travelmate 612TX)
+ pci:v00008086d0000244Asv0000104Dsd000080DF*
+- ID_MODEL_FROM_DATABASE=Vaio PCG-FX403
++ ID_MODEL_FROM_DATABASE=82801BAM IDE U100 Controller (Vaio PCG-FX403)
+ pci:v00008086d0000244B*
+  ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller
+ pci:v00008086d0000244Bsv00001014sd000001C6*
+- ID_MODEL_FROM_DATABASE=Netvista A40/A40p
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Netvista A40/A40p)
+ pci:v00008086d0000244Bsv00001028sd000000C7*
+- ID_MODEL_FROM_DATABASE=Dimension 8100
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Dimension 8100)
+ pci:v00008086d0000244Bsv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Precision 530)
+ pci:v00008086d0000244Bsv00001028sd0000010E*
+- ID_MODEL_FROM_DATABASE=Optiplex GX240
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Optiplex GX240)
+ pci:v00008086d0000244Bsv0000103Csd0000126F*
+- ID_MODEL_FROM_DATABASE=e-pc 40
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (e-pc 40)
+ pci:v00008086d0000244Bsv00001043sd00008027*
+- ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (TUSL2-C Mainboard)
+ pci:v00008086d0000244Bsv0000147Bsd00000507*
+- ID_MODEL_FROM_DATABASE=TH7II-RAID
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (TH7II-RAID)
+ pci:v00008086d0000244Bsv000015D9sd00003280*
+- ID_MODEL_FROM_DATABASE=Supermicro P4SBE Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (Supermicro P4SBE Mainboard)
+ pci:v00008086d0000244Bsv00008086sd00004532*
+- ID_MODEL_FROM_DATABASE=D815EEA2 mainboard
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (D815EEA2 mainboard)
+ pci:v00008086d0000244Bsv00008086sd00004557*
+- ID_MODEL_FROM_DATABASE=D815EGEW Mainboard
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (D815EGEW Mainboard)
+ pci:v00008086d0000244Bsv00008086sd00005744*
+- ID_MODEL_FROM_DATABASE=S845WD1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller (S845WD1-E mainboard)
+ pci:v00008086d0000244C*
+  ID_MODEL_FROM_DATABASE=82801BAM ISA Bridge (LPC)
+@@ -61218,52 +61218,52 @@ pci:v00008086d0000244E*
+  ID_MODEL_FROM_DATABASE=82801 PCI Bridge
+ pci:v00008086d0000244Esv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (NetVista A30p)
+ pci:v00008086d0000244Esv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Inspiron 530)
+ pci:v00008086d0000244Esv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Optiplex 755)
+ pci:v00008086d0000244Esv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (OptiPlex 980)
+ pci:v00008086d0000244Esv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Pavilion A1512X)
+ pci:v00008086d0000244Esv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Asus IPIBL-LB Motherboard)
+ pci:v00008086d0000244Esv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (ProLiant DL140 G3)
+ pci:v00008086d0000244Esv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (ProLiant ML150 G6 Server)
+ pci:v00008086d0000244Esv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (P5K PRO Motherboard)
+ pci:v00008086d0000244Esv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8 series motherboard
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (P8 series motherboard)
+ pci:v00008086d0000244Esv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Motherboard)
+ pci:v00008086d0000244Esv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Wind PC MS-7418)
+ pci:v00008086d0000244Esv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (C7SIM-Q Motherboard)
+ pci:v00008086d0000244Esv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (X7DBN Motherboard)
+ pci:v00008086d0000244Esv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (CC11/CL11)
+ pci:v00008086d0000244Esv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++ ID_MODEL_FROM_DATABASE=82801 PCI Bridge (Server Board S1200BTS)
+ pci:v00008086d00002450*
+  ID_MODEL_FROM_DATABASE=82801E ISA Bridge (LPC)
+@@ -61293,160 +61293,160 @@ pci:v00008086d00002482*
+  ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1
+ pci:v00008086d00002482sv00000E11sd00000030*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (Evo N600c)
+ pci:v00008086d00002482sv00001014sd00000220*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (ThinkPad A/T/X Series)
+ pci:v00008086d00002482sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00002482sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (P4DP6)
+ pci:v00008086d00002482sv00008086sd00001958*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (vpr Matrix 170B4)
+ pci:v00008086d00002482sv00008086sd00003424*
+- ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (SE7501HG2 Mainboard)
+ pci:v00008086d00002482sv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=Latitude C640
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 (Latitude C640)
+ pci:v00008086d00002483*
+  ID_MODEL_FROM_DATABASE=82801CA/CAM SMBus Controller
+ pci:v00008086d00002483sv00001014sd00000220*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM SMBus Controller (ThinkPad A/T/X Series)
+ pci:v00008086d00002483sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CA/CAM SMBus Controller (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00002483sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=82801CA/CAM SMBus Controller (P4DP6)
+ pci:v00008086d00002483sv00008086sd00001958*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CA/CAM SMBus Controller (vpr Matrix 170B4)
+ pci:v00008086d00002484*
+  ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2
+ pci:v00008086d00002484sv00000E11sd00000030*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2 (Evo N600c)
+ pci:v00008086d00002484sv00001014sd00000220*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2 (ThinkPad A/T/X Series)
+ pci:v00008086d00002484sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2 (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00002484sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2 (P4DP6)
+ pci:v00008086d00002484sv00008086sd00001958*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2 (vpr Matrix 170B4)
+ pci:v00008086d00002485*
+  ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller
+ pci:v00008086d00002485sv00001013sd00005959*
+- ID_MODEL_FROM_DATABASE=Crystal WMD Audio Codec
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (Crystal WMD Audio Codec)
+ pci:v00008086d00002485sv00001014sd00000222*
+- ID_MODEL_FROM_DATABASE=ThinkPad A30/A30p/T23
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (ThinkPad A30/A30p/T23)
+ pci:v00008086d00002485sv00001014sd00000508*
+- ID_MODEL_FROM_DATABASE=ThinkPad T30
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (ThinkPad T30)
+ pci:v00008086d00002485sv00001014sd0000051C*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (ThinkPad A/T/X Series)
+ pci:v00008086d00002485sv00001043sd00001583*
+- ID_MODEL_FROM_DATABASE=L3C (SPDIF)
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (L3C (SPDIF))
+ pci:v00008086d00002485sv00001043sd00001623*
+- ID_MODEL_FROM_DATABASE=L2B (no SPDIF)
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (L2B (no SPDIF))
+ pci:v00008086d00002485sv00001043sd00001643*
+- ID_MODEL_FROM_DATABASE=L3F
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (L3F)
+ pci:v00008086d00002485sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00002485sv0000144Dsd0000C006*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller (vpr Matrix 170B4)
+ pci:v00008086d00002486*
+  ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller
+ pci:v00008086d00002486sv00001014sd00000223*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (ThinkPad A/T/X Series)
+ pci:v00008086d00002486sv00001014sd00000503*
+- ID_MODEL_FROM_DATABASE=ThinkPad R31
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (ThinkPad R31)
+ pci:v00008086d00002486sv00001014sd0000051A*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (ThinkPad A/T/X Series)
+ pci:v00008086d00002486sv0000101Fsd00001025*
+- ID_MODEL_FROM_DATABASE=620 Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (620 Series)
+ pci:v00008086d00002486sv00001043sd00001496*
+- ID_MODEL_FROM_DATABASE=PCtel HSP56 MR
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (PCtel HSP56 MR)
+ pci:v00008086d00002486sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00002486sv0000134Dsd00004C21*
+- ID_MODEL_FROM_DATABASE=Dell Inspiron 2100 internal modem
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (Dell Inspiron 2100 internal modem)
+ pci:v00008086d00002486sv0000144Dsd00002115*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 internal modem
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (vpr Matrix 170B4 internal modem)
+ pci:v00008086d00002486sv000014F1sd00005421*
+- ID_MODEL_FROM_DATABASE=MD56ORD V.92 MDC Modem
++ ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller (MD56ORD V.92 MDC Modem)
+ pci:v00008086d00002487*
+  ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3
+ pci:v00008086d00002487sv00000E11sd00000030*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3 (Evo N600c)
+ pci:v00008086d00002487sv00001014sd00000220*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3 (ThinkPad A/T/X Series)
+ pci:v00008086d00002487sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3 (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00002487sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3 (P4DP6)
+ pci:v00008086d00002487sv00008086sd00001958*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3 (vpr Matrix 170B4)
+ pci:v00008086d0000248A*
+  ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller
+ pci:v00008086d0000248Asv00000E11sd00000030*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller (Evo N600c)
+ pci:v00008086d0000248Asv00001014sd00000220*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller (ThinkPad A/T/X Series)
+ pci:v00008086d0000248Asv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d0000248Asv00008086sd00001958*
+- ID_MODEL_FROM_DATABASE=vpr Matrix 170B4
++ ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller (vpr Matrix 170B4)
+ pci:v00008086d0000248Asv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=Latitude C640
++ ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller (Latitude C640)
+ pci:v00008086d0000248B*
+  ID_MODEL_FROM_DATABASE=82801CA Ultra ATA Storage Controller
+ pci:v00008086d0000248Bsv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=82801CA Ultra ATA Storage Controller (P4DP6)
+ pci:v00008086d0000248C*
+  ID_MODEL_FROM_DATABASE=82801CAM ISA Bridge (LPC)
+@@ -61455,10 +61455,10 @@ pci:v00008086d000024C0*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge
+ pci:v00008086d000024C0sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (NetVista A30p)
+ pci:v00008086d000024C0sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge (845PE Max (MS-6580))
+ pci:v00008086d000024C1*
+  ID_MODEL_FROM_DATABASE=82801DBL (ICH4-L) IDE Controller
+@@ -61467,574 +61467,574 @@ pci:v00008086d000024C2*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1
+ pci:v00008086d000024C2sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (NetVista A30p)
+ pci:v00008086d000024C2sv00001014sd0000052D*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (ThinkPad)
+ pci:v00008086d000024C2sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (TravelMate 290)
+ pci:v00008086d000024C2sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Optiplex GX260)
+ pci:v00008086d000024C2sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Latitude D505)
+ pci:v00008086d000024C2sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Inspiron 700m/710m)
+ pci:v00008086d000024C2sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Inspiron 5160)
+ pci:v00008086d000024C2sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (NC8000 laptop)
+ pci:v00008086d000024C2sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (NC6000 laptop)
+ pci:v00008086d000024C2sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (tc1100 tablet)
+ pci:v00008086d000024C2sv00001043sd00008089*
+- ID_MODEL_FROM_DATABASE=P4B533
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (P4B533)
+ pci:v00008086d000024C2sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (MIM2000)
+ pci:v00008086d000024C2sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 onboard USB 1.x
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (PC8 onboard USB 1.x)
+ pci:v00008086d000024C2sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (X10 Laptop)
+ pci:v00008086d000024C2sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (P30/P35 notebook)
+ pci:v00008086d000024C2sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (845PE Max (MS-6580))
+ pci:v00008086d000024C2sv00001509sd00002990*
+- ID_MODEL_FROM_DATABASE=Averatec 5110H laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Averatec 5110H laptop)
+ pci:v00008086d000024C2sv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d000024C2sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Amilo M1420)
+ pci:v00008086d000024C2sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Cx9 / Vx9 mainboard)
+ pci:v00008086d000024C2sv00008086sd000024C2*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Latitude X300)
+ pci:v00008086d000024C2sv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=Latitude D400/D500
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (Latitude D400/D500)
+ pci:v00008086d000024C2sv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (CC9-SAMBA)
+ pci:v00008086d000024C2sv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (CD2-BEBOP)
+ pci:v00008086d000024C3*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller
+ pci:v00008086d000024C3sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (NetVista A30p)
+ pci:v00008086d000024C3sv00001014sd0000052D*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (ThinkPad)
+ pci:v00008086d000024C3sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (TravelMate 290)
+ pci:v00008086d000024C3sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Optiplex GX260)
+ pci:v00008086d000024C3sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Latitude X300)
+ pci:v00008086d000024C3sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Inspiron 700m/710m)
+ pci:v00008086d000024C3sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (NC8000 laptop)
+ pci:v00008086d000024C3sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (NC6000 laptop)
+ pci:v00008086d000024C3sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (tc1100 tablet)
+ pci:v00008086d000024C3sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (MIM2000)
+ pci:v00008086d000024C3sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 onboard SMbus
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (PC8 onboard SMbus)
+ pci:v00008086d000024C3sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (X10 Laptop)
+ pci:v00008086d000024C3sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (P30/P35 notebook)
+ pci:v00008086d000024C3sv00001458sd000024C2*
+- ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (GA-8PE667 Ultra)
+ pci:v00008086d000024C3sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (845PE Max (MS-6580))
+ pci:v00008086d000024C3sv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d000024C3sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Amilo M1420)
+ pci:v00008086d000024C3sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (Cx9 / Vx9 mainboard)
+ pci:v00008086d000024C3sv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (CC9-SAMBA)
+ pci:v00008086d000024C3sv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (CD2-BEBOP)
+ pci:v00008086d000024C4*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2
+ pci:v00008086d000024C4sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (NetVista A30p)
+ pci:v00008086d000024C4sv00001014sd0000052D*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (ThinkPad)
+ pci:v00008086d000024C4sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (TravelMate 290)
+ pci:v00008086d000024C4sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Optiplex GX260)
+ pci:v00008086d000024C4sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Latitude D505)
+ pci:v00008086d000024C4sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Inspiron 700m/710m)
+ pci:v00008086d000024C4sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Inspiron 5160)
+ pci:v00008086d000024C4sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (NC8000 laptop)
+ pci:v00008086d000024C4sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (NC6000 laptop)
+ pci:v00008086d000024C4sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (tc1100 tablet)
+ pci:v00008086d000024C4sv00001043sd00008089*
+- ID_MODEL_FROM_DATABASE=P4B533
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (P4B533)
+ pci:v00008086d000024C4sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (MIM2000)
+ pci:v00008086d000024C4sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (P30/P35 notebook)
+ pci:v00008086d000024C4sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (845PE Max (MS-6580))
+ pci:v00008086d000024C4sv00001509sd00002990*
+- ID_MODEL_FROM_DATABASE=Averatec 5110H
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Averatec 5110H)
+ pci:v00008086d000024C4sv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d000024C4sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Cx9 / Vx9 mainboard)
+ pci:v00008086d000024C4sv00008086sd000024C2*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Latitude X300)
+ pci:v00008086d000024C4sv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=Latitude D400/D500
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (Latitude D400/D500)
+ pci:v00008086d000024C4sv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (CC9-SAMBA)
+ pci:v00008086d000024C4sv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (CD2-BEBOP)
+ pci:v00008086d000024C5*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller
+ pci:v00008086d000024C5sv00000E11sd000000B8*
+- ID_MODEL_FROM_DATABASE=Analog Devices Inc. codec [SoundMAX]
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Analog Devices Inc. codec [SoundMAX])
+ pci:v00008086d000024C5sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (NetVista A30p)
+ pci:v00008086d000024C5sv00001014sd00000537*
+- ID_MODEL_FROM_DATABASE=ThinkPad T41
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (ThinkPad T41)
+ pci:v00008086d000024C5sv00001014sd0000055F*
+- ID_MODEL_FROM_DATABASE=Thinkpad R50e model 1634
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Thinkpad R50e model 1634)
+ pci:v00008086d000024C5sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (TravelMate 290)
+ pci:v00008086d000024C5sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Latitude D400)
+ pci:v00008086d000024C5sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Latitude X300)
+ pci:v00008086d000024C5sv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Latitude D500)
+ pci:v00008086d000024C5sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Latitude D505)
+ pci:v00008086d000024C5sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m [SigmaTel STAC9750,51]
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Inspiron 700m/710m [SigmaTel STAC9750,51])
+ pci:v00008086d000024C5sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Inspiron 5160)
+ pci:v00008086d000024C5sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (NC8000 laptop)
+ pci:v00008086d000024C5sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (NC6000 laptop)
+ pci:v00008086d000024C5sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (tc1100 tablet)
+ pci:v00008086d000024C5sv00001043sd00001713*
+- ID_MODEL_FROM_DATABASE=M2400N/M6800N laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (M2400N/M6800N laptop)
+ pci:v00008086d000024C5sv00001043sd000080B0*
+- ID_MODEL_FROM_DATABASE=P4B533
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (P4B533)
+ pci:v00008086d000024C5sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (MIM2000)
+ pci:v00008086d000024C5sv00001179sd00000201*
+- ID_MODEL_FROM_DATABASE=Toshiba Tecra M1
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Toshiba Tecra M1)
+ pci:v00008086d000024C5sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (X10 Laptop)
+ pci:v00008086d000024C5sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (P30/P35 notebook)
+ pci:v00008086d000024C5sv00001458sd0000A002*
+- ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (GA-8PE667 Ultra)
+ pci:v00008086d000024C5sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (845PE Max (MS-6580))
+ pci:v00008086d000024C5sv00001734sd00001005*
+- ID_MODEL_FROM_DATABASE=D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T)
+ pci:v00008086d000024C5sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Amilo M1420)
+ pci:v00008086d000024C5sv00008086sd000024C5*
+- ID_MODEL_FROM_DATABASE=Dell Dimension 2400
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (Dell Dimension 2400)
+ pci:v00008086d000024C6*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller
+ pci:v00008086d000024C6sv00001014sd00000524*
+- ID_MODEL_FROM_DATABASE=ThinkPad T41
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (ThinkPad T41)
+ pci:v00008086d000024C6sv00001014sd00000525*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (ThinkPad)
+ pci:v00008086d000024C6sv00001014sd00000559*
+- ID_MODEL_FROM_DATABASE=ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (ThinkPad R50e)
+ pci:v00008086d000024C6sv00001025sd0000003C*
+- ID_MODEL_FROM_DATABASE=Aspire 2001WLCi (Compal CL50 motherboard) implementation
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (Aspire 2001WLCi (Compal CL50 motherboard) implementation)
+ pci:v00008086d000024C6sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (TravelMate 290)
+ pci:v00008086d000024C6sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (Inspiron 5160)
+ pci:v00008086d000024C6sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (NC8000 laptop)
+ pci:v00008086d000024C6sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (NC6000 laptop)
+ pci:v00008086d000024C6sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (tc1100 tablet)
+ pci:v00008086d000024C6sv00001043sd00001716*
+- ID_MODEL_FROM_DATABASE=M2400N laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (M2400N laptop)
+ pci:v00008086d000024C6sv00001043sd00001826*
+- ID_MODEL_FROM_DATABASE=M6800N
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (M6800N)
+ pci:v00008086d000024C6sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (MIM2000)
+ pci:v00008086d000024C6sv0000134Dsd00004C21*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (Latitude D500)
+ pci:v00008086d000024C6sv0000144Dsd00002115*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (X10 Laptop)
+ pci:v00008086d000024C6sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (P30/P35 notebook)
+ pci:v00008086d000024C6sv000014F1sd00005422*
+- ID_MODEL_FROM_DATABASE=D480 MDC V.9x Modem
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (D480 MDC V.9x Modem)
+ pci:v00008086d000024C7*
+  ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3
+ pci:v00008086d000024C7sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (NetVista A30p)
+ pci:v00008086d000024C7sv00001014sd0000052D*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (ThinkPad)
+ pci:v00008086d000024C7sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (TravelMate 290)
+ pci:v00008086d000024C7sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Optiplex GX260)
+ pci:v00008086d000024C7sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Latitude D505)
+ pci:v00008086d000024C7sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Inspiron 700m/710m)
+ pci:v00008086d000024C7sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Inspiron 5160)
+ pci:v00008086d000024C7sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (NC8000 laptop)
+ pci:v00008086d000024C7sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (NC6000 laptop)
+ pci:v00008086d000024C7sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (tc1100 tablet)
+ pci:v00008086d000024C7sv00001043sd00008089*
+- ID_MODEL_FROM_DATABASE=P4B533
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (P4B533)
+ pci:v00008086d000024C7sv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (MIM2000)
+ pci:v00008086d000024C7sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (P30/P35 notebook)
+ pci:v00008086d000024C7sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (845PE Max (MS-6580))
+ pci:v00008086d000024C7sv00001509sd00002990*
+- ID_MODEL_FROM_DATABASE=Averatec 5110H
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Averatec 5110H)
+ pci:v00008086d000024C7sv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d000024C7sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Cx9 / Vx9 mainboard)
+ pci:v00008086d000024C7sv00008086sd000024C2*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Latitude X300)
+ pci:v00008086d000024C7sv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=Latitude D400/D500
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (Latitude D400/D500)
+ pci:v00008086d000024C7sv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (CC9-SAMBA)
+ pci:v00008086d000024C7sv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (CD2-BEBOP)
+ pci:v00008086d000024CA*
+  ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller
+ pci:v00008086d000024CAsv00001014sd0000052D*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (ThinkPad)
+ pci:v00008086d000024CAsv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (TravelMate 290)
+ pci:v00008086d000024CAsv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (Latitude X300)
+ pci:v00008086d000024CAsv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (Latitude D505)
+ pci:v00008086d000024CAsv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (Inspiron 700m/710m)
+ pci:v00008086d000024CAsv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (Inspiron 5160)
+ pci:v00008086d000024CAsv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (NC8000 laptop)
+ pci:v00008086d000024CAsv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (NC6000 laptop)
+ pci:v00008086d000024CAsv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (tc1100 tablet)
+ pci:v00008086d000024CAsv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (MIM2000)
+ pci:v00008086d000024CAsv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (X10 Laptop)
+ pci:v00008086d000024CAsv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (P30/P35 notebook)
+ pci:v00008086d000024CAsv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (Amilo M1420)
+ pci:v00008086d000024CAsv00008086sd00004541*
+- ID_MODEL_FROM_DATABASE=Latitude D400/D500
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller (Latitude D400/D500)
+ pci:v00008086d000024CB*
+  ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller
+ pci:v00008086d000024CBsv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (NetVista A30p)
+ pci:v00008086d000024CBsv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (Optiplex GX260)
+ pci:v00008086d000024CBsv00001043sd00008089*
+- ID_MODEL_FROM_DATABASE=P4B533
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (P4B533)
+ pci:v00008086d000024CBsv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 onboard IDE
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (PC8 onboard IDE)
+ pci:v00008086d000024CBsv00001458sd000024C2*
+- ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (GA-8PE667 Ultra)
+ pci:v00008086d000024CBsv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (845PE Max (MS-6580))
+ pci:v00008086d000024CBsv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d000024CBsv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (Cx9 / Vx9 mainboard)
+ pci:v00008086d000024CBsv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (CC9-SAMBA)
+ pci:v00008086d000024CBsv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller (CD2-BEBOP)
+ pci:v00008086d000024CC*
+  ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) LPC Interface Bridge
+ pci:v00008086d000024CCsv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30 notebook
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) LPC Interface Bridge (P30 notebook)
+ pci:v00008086d000024CCsv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) LPC Interface Bridge (Amilo M1420)
+ pci:v00008086d000024CD*
+  ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller
+ pci:v00008086d000024CDsv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (NetVista A30p)
+ pci:v00008086d000024CDsv00001014sd0000052E*
+- ID_MODEL_FROM_DATABASE=ThinkPad
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (ThinkPad)
+ pci:v00008086d000024CDsv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (TravelMate 290)
+ pci:v00008086d000024CDsv00001028sd0000011D*
+- ID_MODEL_FROM_DATABASE=Latitude D600
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude D600)
+ pci:v00008086d000024CDsv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Optiplex GX260)
+ pci:v00008086d000024CDsv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude D400)
+ pci:v00008086d000024CDsv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude D500)
+ pci:v00008086d000024CDsv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude D505)
+ pci:v00008086d000024CDsv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Inspiron 700m/710m)
+ pci:v00008086d000024CDsv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Inspiron 5160)
+ pci:v00008086d000024CDsv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (NC8000 laptop)
+ pci:v00008086d000024CDsv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (NC6000 laptop)
+ pci:v00008086d000024CDsv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (tc1100 tablet)
+ pci:v00008086d000024CDsv00001043sd00008089*
+- ID_MODEL_FROM_DATABASE=P4B533
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (P4B533)
+ pci:v00008086d000024CDsv00001071sd00008160*
+- ID_MODEL_FROM_DATABASE=MIM2000
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (MIM2000)
+ pci:v00008086d000024CDsv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 onboard USB 2.0
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (PC8 onboard USB 2.0)
+ pci:v00008086d000024CDsv00001179sd0000FF00*
+- ID_MODEL_FROM_DATABASE=Satellite 2430
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Satellite 2430)
+ pci:v00008086d000024CDsv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (X10 Laptop)
+ pci:v00008086d000024CDsv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (P30/P35 notebook)
+ pci:v00008086d000024CDsv00001462sd00003981*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (845PE Max (MS-6580))
+ pci:v00008086d000024CDsv00001509sd00001968*
+- ID_MODEL_FROM_DATABASE=Averatec 5110H
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Averatec 5110H)
+ pci:v00008086d000024CDsv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d000024CDsv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Amilo M1420)
+ pci:v00008086d000024CDsv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (QEMU Virtual Machine)
+ pci:v00008086d000024CDsv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Cx9 / Vx9 mainboard)
+ pci:v00008086d000024CDsv00008086sd000024C2*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (Latitude X300)
+ pci:v00008086d000024CDsv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (CC9-SAMBA)
+ pci:v00008086d000024CDsv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (CD2-BEBOP)
+ pci:v00008086d000024D0*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
+@@ -62043,436 +62043,436 @@ pci:v00008086d000024D1*
+  ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller
+ pci:v00008086d000024D1sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024D1sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (Precision 470)
+ pci:v00008086d000024D1sv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (PowerEdge SC1425)
+ pci:v00008086d000024D1sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (d530 CMT (DG746A))
+ pci:v00008086d000024D1sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (ProLiant DL140 G2)
+ pci:v00008086d000024D1sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (P4P800 series motherboard)
+ pci:v00008086d000024D1sv00001458sd000024D1*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024D1sv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (865PE Neo2 (MS-6728))
+ pci:v00008086d000024D1sv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024D1sv00001565sd00005200*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (P4TSV Motherboard (865G))
+ pci:v00008086d000024D1sv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (P4SCE Mainboard)
+ pci:v00008086d000024D1sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (S875WP1-E mainboard)
+ pci:v00008086d000024D1sv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (Desktop Board D865GBF)
+ pci:v00008086d000024D1sv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (Desktop Board D865GLC)
+ pci:v00008086d000024D1sv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller (D865PERL mainboard)
+ pci:v00008086d000024D2*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
+ pci:v00008086d000024D2sv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (eServer xSeries server mainboard)
+ pci:v00008086d000024D2sv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (eServer xSeries server mainboard)
+ pci:v00008086d000024D2sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024D2sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (Precision 470)
+ pci:v00008086d000024D2sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (PowerEdge 1850 onboard UHCI)
+ pci:v00008086d000024D2sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (PowerEdge 2850 onboard UHCI)
+ pci:v00008086d000024D2sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (PowerEdge 6850 onboard UHCI)
+ pci:v00008086d000024D2sv00001028sd00000183*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1800
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (PowerEdge 1800)
+ pci:v00008086d000024D2sv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (PowerEdge SC1425)
+ pci:v00008086d000024D2sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (NX9500)
+ pci:v00008086d000024D2sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (d530 CMT (DG746A))
+ pci:v00008086d000024D2sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (ProLiant DL140 G2)
+ pci:v00008086d000024D2sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024D2sv00001458sd000024D2*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000/8KNXP motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (GA-8IPE1000/8KNXP motherboard)
+ pci:v00008086d000024D2sv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (865PE Neo2 (MS-6728))
+ pci:v00008086d000024D2sv00001565sd00003101*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (P4TSV Motherboard (865G))
+ pci:v00008086d000024D2sv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (P4SCE Mainboard)
+ pci:v00008086d000024D2sv00001734sd0000101C*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (PRIMERGY RX/TX series onboard UHCI)
+ pci:v00008086d000024D2sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (S875WP1-E mainboard)
+ pci:v00008086d000024D2sv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (Desktop Board D865GBF)
+ pci:v00008086d000024D2sv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (Desktop Board D865GLC)
+ pci:v00008086d000024D2sv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 (D865PERL mainboard)
+ pci:v00008086d000024D3*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller
+ pci:v00008086d000024D3sv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (eServer xSeries server mainboard)
+ pci:v00008086d000024D3sv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (eServer xSeries server mainboard)
+ pci:v00008086d000024D3sv00001028sd00000156*
+- ID_MODEL_FROM_DATABASE=Precision 360
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (Precision 360)
+ pci:v00008086d000024D3sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024D3sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (Precision 470)
+ pci:v00008086d000024D3sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d330 uT
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (d330 uT)
+ pci:v00008086d000024D3sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (ProLiant DL140 G2)
+ pci:v00008086d000024D3sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024D3sv00001458sd000024D2*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024D3sv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (865PE Neo2 (MS-6728))
+ pci:v00008086d000024D3sv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024D3sv00001565sd00003101*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (P4TSV Motherboard (865G))
+ pci:v00008086d000024D3sv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (P4SCE Mainboard)
+ pci:v00008086d000024D3sv00001734sd0000101C*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series SMBus
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (PRIMERGY RX/TX S2 series SMBus)
+ pci:v00008086d000024D3sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (S875WP1-E mainboard)
+ pci:v00008086d000024D3sv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (Desktop Board D865GBF)
+ pci:v00008086d000024D3sv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (Desktop Board D865GLC)
+ pci:v00008086d000024D3sv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller (D865PERL mainboard)
+ pci:v00008086d000024D4*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
+ pci:v00008086d000024D4sv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (eServer xSeries server mainboard)
+ pci:v00008086d000024D4sv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (eServer xSeries server mainboard)
+ pci:v00008086d000024D4sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024D4sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (Precision 470)
+ pci:v00008086d000024D4sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (PowerEdge 1850 onboard UHCI)
+ pci:v00008086d000024D4sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (PowerEdge 2850 onboard UHCI)
+ pci:v00008086d000024D4sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (PowerEdge 6850 onboard UHCI)
+ pci:v00008086d000024D4sv00001028sd00000183*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1800
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (PowerEdge 1800)
+ pci:v00008086d000024D4sv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (PowerEdge SC1425)
+ pci:v00008086d000024D4sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (NX9500)
+ pci:v00008086d000024D4sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (d530 CMT (DG746A))
+ pci:v00008086d000024D4sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (ProLiant DL140 G2)
+ pci:v00008086d000024D4sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024D4sv00001458sd000024D2*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024D4sv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (865PE Neo2 (MS-6728))
+ pci:v00008086d000024D4sv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024D4sv00001565sd00003101*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (P4TSV Motherboard (865G))
+ pci:v00008086d000024D4sv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (P4SCE Mainboard)
+ pci:v00008086d000024D4sv00001734sd0000101C*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (PRIMERGY RX/TX S2 series onboard UHCI)
+ pci:v00008086d000024D4sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (S875WP1-E mainboard)
+ pci:v00008086d000024D4sv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (Desktop Board D865GBF)
+ pci:v00008086d000024D4sv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (Desktop Board D865GLC)
+ pci:v00008086d000024D4sv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 (D865PERL mainboard)
+ pci:v00008086d000024D5*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
+ pci:v00008086d000024D5sv0000100Asd0000147B*
+- ID_MODEL_FROM_DATABASE=Abit IS7-E motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (Abit IS7-E motherboard)
+ pci:v00008086d000024D5sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024D5sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (Precision 470)
+ pci:v00008086d000024D5sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (NX9500)
+ pci:v00008086d000024D5sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d330 uT
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (d330 uT)
+ pci:v00008086d000024D5sv00001043sd000080F3*
+- ID_MODEL_FROM_DATABASE=P4P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (P4P800 series motherboard)
+ pci:v00008086d000024D5sv00001043sd0000810F*
+- ID_MODEL_FROM_DATABASE=P5P800-MX Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (P5P800-MX Mainboard)
+ pci:v00008086d000024D5sv00001458sd0000A002*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000/8KNXP motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (GA-8IPE1000/8KNXP motherboard)
+ pci:v00008086d000024D5sv00001462sd00000080*
+- ID_MODEL_FROM_DATABASE=865PE Neo2-V (MS-6788) Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (865PE Neo2-V (MS-6788) Mainboard)
+ pci:v00008086d000024D5sv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (865PE Neo2 (MS-6728))
+ pci:v00008086d000024D5sv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024D5sv00008086sd0000A000*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (D865PERL mainboard)
+ pci:v00008086d000024D5sv00008086sd0000E000*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (D865PERL mainboard)
+ pci:v00008086d000024D5sv00008086sd0000E001*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (Desktop Board D865GBF)
+ pci:v00008086d000024D5sv00008086sd0000E002*
+- ID_MODEL_FROM_DATABASE=SoundMax Intergrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller (SoundMax Intergrated Digital Audio)
+ pci:v00008086d000024D6*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller
+ pci:v00008086d000024D6sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller (NX9500)
+ pci:v00008086d000024D7*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3
+ pci:v00008086d000024D7sv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (xSeries server mainboard)
+ pci:v00008086d000024D7sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024D7sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (Precision 470)
+ pci:v00008086d000024D7sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (PowerEdge 1850 onboard UHCI)
+ pci:v00008086d000024D7sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (PowerEdge 2850 onboard UHCI)
+ pci:v00008086d000024D7sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (PowerEdge 6850 onboard UHCI)
+ pci:v00008086d000024D7sv00001028sd00000183*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1800
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (PowerEdge 1800)
+ pci:v00008086d000024D7sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (NX9500)
+ pci:v00008086d000024D7sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (d530 CMT (DG746A))
+ pci:v00008086d000024D7sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024D7sv00001458sd000024D2*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024D7sv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (865PE Neo2 (MS-6728))
+ pci:v00008086d000024D7sv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024D7sv00001565sd00003101*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (P4TSV Motherboard (865G))
+ pci:v00008086d000024D7sv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (P4SCE Mainboard)
+ pci:v00008086d000024D7sv00001734sd0000101C*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (PRIMERGY RX/TX S2 series onboard UHCI)
+ pci:v00008086d000024D7sv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (S875WP1-E mainboard)
+ pci:v00008086d000024D7sv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (Desktop Board D865GBF)
+ pci:v00008086d000024D7sv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (Desktop Board D865GLC)
+ pci:v00008086d000024D7sv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 (D865PERL mainboard)
+ pci:v00008086d000024DB*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller
+ pci:v00008086d000024DBsv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (eServer xSeries server mainboard)
+ pci:v00008086d000024DBsv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (eServer xSeries server mainboard)
+ pci:v00008086d000024DBsv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024DBsv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (Precision 470)
+ pci:v00008086d000024DBsv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 IDE Controller
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (PowerEdge 1850 IDE Controller)
+ pci:v00008086d000024DBsv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 IDE Controller
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (PowerEdge 2850 IDE Controller)
+ pci:v00008086d000024DBsv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 IDE Controller
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (PowerEdge 6850 IDE Controller)
+ pci:v00008086d000024DBsv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (PowerEdge SC1425)
+ pci:v00008086d000024DBsv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (NX9500)
+ pci:v00008086d000024DBsv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (d530 CMT (DG746A))
+ pci:v00008086d000024DBsv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024DBsv00001458sd000024D2*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024DBsv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (865PE Neo2 (MS-6728))
+ pci:v00008086d000024DBsv00001462sd00007580*
+- ID_MODEL_FROM_DATABASE=MSI 875P
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (MSI 875P)
+ pci:v00008086d000024DBsv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024DBsv00001565sd00003101*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (P4TSV Motherboard (865G))
+ pci:v00008086d000024DBsv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (P4SCE Mainboard)
+ pci:v00008086d000024DBsv00001734sd0000101C*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard IDE
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (PRIMERGY RX/TX S2 series onboard IDE)
+ pci:v00008086d000024DBsv00008086sd000024DB*
+- ID_MODEL_FROM_DATABASE=P4C800 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (P4C800 Mainboard)
+ pci:v00008086d000024DBsv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (S875WP1-E mainboard)
+ pci:v00008086d000024DBsv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (Desktop Board D865GBF)
+ pci:v00008086d000024DBsv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (Desktop Board D865GLC)
+ pci:v00008086d000024DBsv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller (D865PERL mainboard)
+ pci:v00008086d000024DC*
+  ID_MODEL_FROM_DATABASE=82801EB (ICH5) LPC Interface Bridge
+@@ -62481,142 +62481,142 @@ pci:v00008086d000024DD*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller
+ pci:v00008086d000024DDsv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (eServer xSeries server mainboard)
+ pci:v00008086d000024DDsv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (eServer xSeries server mainboard)
+ pci:v00008086d000024DDsv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024DDsv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (Precision 470)
+ pci:v00008086d000024DDsv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (PowerEdge 1850 onboard EHCI)
+ pci:v00008086d000024DDsv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (PowerEdge 2850 onboard EHCI)
+ pci:v00008086d000024DDsv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (PowerEdge 6850 onboard EHCI)
+ pci:v00008086d000024DDsv00001028sd00000183*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1800
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (PowerEdge 1800)
+ pci:v00008086d000024DDsv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (PowerEdge SC1425)
+ pci:v00008086d000024DDsv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (NX9500)
+ pci:v00008086d000024DDsv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d530 CMT (DG746A)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (d530 CMT (DG746A))
+ pci:v00008086d000024DDsv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (ProLiant DL140 G2)
+ pci:v00008086d000024DDsv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024DDsv00001458sd00005006*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024DDsv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (865PE Neo2 (MS-6728))
+ pci:v00008086d000024DDsv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024DDsv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (S875WP1-E mainboard)
+ pci:v00008086d000024DDsv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (Desktop Board D865GBF)
+ pci:v00008086d000024DDsv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (Desktop Board D865GLC)
+ pci:v00008086d000024DDsv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller (D865PERL mainboard)
+ pci:v00008086d000024DE*
+  ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4
+ pci:v00008086d000024DEsv00001014sd000002ED*
+- ID_MODEL_FROM_DATABASE=xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (xSeries server mainboard)
+ pci:v00008086d000024DEsv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024DEsv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (Precision 470)
+ pci:v00008086d000024DEsv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (P4P800/P5P800 series motherboard)
+ pci:v00008086d000024DEsv00001458sd000024D2*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d000024DEsv00001462sd00007280*
+- ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (865PE Neo2 (MS-6728))
+ pci:v00008086d000024DEsv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (Hetis 865GV-E (MS-7065))
+ pci:v00008086d000024DEsv00001565sd00003101*
+- ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G)
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (P4TSV Motherboard (865G))
+ pci:v00008086d000024DEsv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (P4SCE Mainboard)
+ pci:v00008086d000024DEsv00001734sd0000101C*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (PRIMERGY RX/TX S2 series onboard UHCI)
+ pci:v00008086d000024DEsv00008086sd00003427*
+- ID_MODEL_FROM_DATABASE=S875WP1-E mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (S875WP1-E mainboard)
+ pci:v00008086d000024DEsv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (Desktop Board D865GBF)
+ pci:v00008086d000024DEsv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (Desktop Board D865GLC)
+ pci:v00008086d000024DEsv00008086sd0000524C*
+- ID_MODEL_FROM_DATABASE=D865PERL mainboard
++ ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 (D865PERL mainboard)
+ pci:v00008086d000024DF*
+  ID_MODEL_FROM_DATABASE=82801ER (ICH5R) SATA Controller
+ pci:v00008086d000024DFsv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=82801ER (ICH5R) SATA Controller (Precision Workstation 670 Mainboard)
+ pci:v00008086d000024F3*
+  ID_MODEL_FROM_DATABASE=Wireless 8260
+ pci:v00008086d000024F3sv00008086sd00000010*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 8260
++ ID_MODEL_FROM_DATABASE=Wireless 8260 (Dual Band Wireless-AC 8260)
+ pci:v00008086d000024F4*
+  ID_MODEL_FROM_DATABASE=Wireless 8260
+ pci:v00008086d000024F4sv00008086sd00000030*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 8260
++ ID_MODEL_FROM_DATABASE=Wireless 8260 (Dual Band Wireless-AC 8260)
+ pci:v00008086d00002500*
+  ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH)
+ pci:v00008086d00002500sv00001028sd00000095*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 220 Chipset
++ ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) (Precision Workstation 220 Chipset)
+ pci:v00008086d00002500sv00001043sd0000801C*
+- ID_MODEL_FROM_DATABASE=P3C-2000 system chipset
++ ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) (P3C-2000 system chipset)
+ pci:v00008086d00002501*
+  ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH)
+ pci:v00008086d00002501sv00001043sd0000801C*
+- ID_MODEL_FROM_DATABASE=P3C-2000 system chipset
++ ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) (P3C-2000 system chipset)
+ pci:v00008086d0000250B*
+  ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge
+@@ -62634,16 +62634,16 @@ pci:v00008086d00002530*
+  ID_MODEL_FROM_DATABASE=82850 850 (Tehama) Chipset Host Bridge (MCH)
+ pci:v00008086d00002530sv00001028sd000000C7*
+- ID_MODEL_FROM_DATABASE=Dimension 8100
++ ID_MODEL_FROM_DATABASE=82850 850 (Tehama) Chipset Host Bridge (MCH) (Dimension 8100)
+ pci:v00008086d00002530sv0000147Bsd00000507*
+- ID_MODEL_FROM_DATABASE=TH7II-RAID
++ ID_MODEL_FROM_DATABASE=82850 850 (Tehama) Chipset Host Bridge (MCH) (TH7II-RAID)
+ pci:v00008086d00002531*
+  ID_MODEL_FROM_DATABASE=82860 860 (Wombat) Chipset Host Bridge (MCH)
+ pci:v00008086d00002531sv00001028sd000000D8*
+- ID_MODEL_FROM_DATABASE=Precision 530
++ ID_MODEL_FROM_DATABASE=82860 860 (Wombat) Chipset Host Bridge (MCH) (Precision 530)
+ pci:v00008086d00002532*
+  ID_MODEL_FROM_DATABASE=82850 850 (Tehama) Chipset AGP Bridge
+@@ -62658,19 +62658,19 @@ pci:v00008086d00002540*
+  ID_MODEL_FROM_DATABASE=E7500 Memory Controller Hub
+ pci:v00008086d00002540sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=E7500 Memory Controller Hub (P4DP6)
+ pci:v00008086d00002541*
+  ID_MODEL_FROM_DATABASE=E7500/E7501 Host RASUM Controller
+ pci:v00008086d00002541sv000015D9sd00003480*
+- ID_MODEL_FROM_DATABASE=P4DP6
++ ID_MODEL_FROM_DATABASE=E7500/E7501 Host RASUM Controller (P4DP6)
+ pci:v00008086d00002541sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=E7500/E7501 Host RASUM Controller (Cx9 / Vx9 mainboard)
+ pci:v00008086d00002541sv00008086sd00003424*
+- ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard
++ ID_MODEL_FROM_DATABASE=E7500/E7501 Host RASUM Controller (SE7501HG2 Mainboard)
+ pci:v00008086d00002543*
+  ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface B PCI-to-PCI Bridge
+@@ -62679,7 +62679,7 @@ pci:v00008086d00002544*
+  ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface B RASUM Controller
+ pci:v00008086d00002544sv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface B RASUM Controller (Cx9 / Vx9 mainboard)
+ pci:v00008086d00002545*
+  ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface C PCI-to-PCI Bridge
+@@ -62697,10 +62697,10 @@ pci:v00008086d0000254C*
+  ID_MODEL_FROM_DATABASE=E7501 Memory Controller Hub
+ pci:v00008086d0000254Csv00004C53sd00001090*
+- ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
++ ID_MODEL_FROM_DATABASE=E7501 Memory Controller Hub (Cx9 / Vx9 mainboard)
+ pci:v00008086d0000254Csv00008086sd00003424*
+- ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard
++ ID_MODEL_FROM_DATABASE=E7501 Memory Controller Hub (SE7501HG2 Mainboard)
+ pci:v00008086d00002550*
+  ID_MODEL_FROM_DATABASE=E7505 Memory Controller Hub
+@@ -62724,13 +62724,13 @@ pci:v00008086d00002560*
+  ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface
+ pci:v00008086d00002560sv00001028sd00000126*
+- ID_MODEL_FROM_DATABASE=Optiplex GX260
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (Optiplex GX260)
+ pci:v00008086d00002560sv00001458sd00002560*
+- ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (GA-8PE667 Ultra)
+ pci:v00008086d00002560sv00001462sd00005800*
+- ID_MODEL_FROM_DATABASE=845PE Max (MS-6580)
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface (845PE Max (MS-6580))
+ pci:v00008086d00002561*
+  ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge
+@@ -62739,31 +62739,31 @@ pci:v00008086d00002562*
+  ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device
+ pci:v00008086d00002562sv00000E11sd000000B9*
+- ID_MODEL_FROM_DATABASE=Evo D510 SFF
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (Evo D510 SFF)
+ pci:v00008086d00002562sv00001014sd00000267*
+- ID_MODEL_FROM_DATABASE=NetVista A30p
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (NetVista A30p)
+ pci:v00008086d00002562sv00001734sd00001003*
+- ID_MODEL_FROM_DATABASE=D1521 Mainboard (Fujitsu-Siemens)
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (D1521 Mainboard (Fujitsu-Siemens))
+ pci:v00008086d00002562sv00001734sd00001004*
+- ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV)
++ ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device (D1451 Mainboard (SCENIC N300, i845GV))
+ pci:v00008086d00002570*
+  ID_MODEL_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface
+ pci:v00008086d00002570sv0000103Csd0000006A*
+- ID_MODEL_FROM_DATABASE=NX9500
++ ID_MODEL_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface (NX9500)
+ pci:v00008086d00002570sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=d330 uT
++ ID_MODEL_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface (d330 uT)
+ pci:v00008086d00002570sv00001043sd000080F2*
+- ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard
++ ID_MODEL_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface (P4P800/P5P800 series motherboard)
+ pci:v00008086d00002570sv00001458sd00002570*
+- ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE)
++ ID_MODEL_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface (GA-8IPE1000 Pro2 motherboard (865PE))
+ pci:v00008086d00002571*
+  ID_MODEL_FROM_DATABASE=82865G/PE/P AGP Bridge
+@@ -62772,25 +62772,25 @@ pci:v00008086d00002572*
+  ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller
+ pci:v00008086d00002572sv00001028sd0000019D*
+- ID_MODEL_FROM_DATABASE=Dimension 3000
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (Dimension 3000)
+ pci:v00008086d00002572sv0000103Csd000012BC*
+- ID_MODEL_FROM_DATABASE=D530 sff(dc578av)
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (D530 sff(dc578av))
+ pci:v00008086d00002572sv00001043sd000080A5*
+- ID_MODEL_FROM_DATABASE=P5P800-MX Mainboard
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (P5P800-MX Mainboard)
+ pci:v00008086d00002572sv00001462sd00007650*
+- ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065)
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (Hetis 865GV-E (MS-7065))
+ pci:v00008086d00002572sv00001734sd0000101B*
+- ID_MODEL_FROM_DATABASE=Fujitsu-Siemens Scenic E300 i865GV
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (Fujitsu-Siemens Scenic E300 i865GV)
+ pci:v00008086d00002572sv00008086sd00004246*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GBF
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (Desktop Board D865GBF)
+ pci:v00008086d00002572sv00008086sd00004C43*
+- ID_MODEL_FROM_DATABASE=Desktop Board D865GLC
++ ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller (Desktop Board D865GLC)
+ pci:v00008086d00002573*
+  ID_MODEL_FROM_DATABASE=82865G/PE/P PCI to CSA Bridge
+@@ -62802,13 +62802,13 @@ pci:v00008086d00002578*
+  ID_MODEL_FROM_DATABASE=82875P/E7210 Memory Controller Hub
+ pci:v00008086d00002578sv00001458sd00002578*
+- ID_MODEL_FROM_DATABASE=GA-8KNXP motherboard (875P)
++ ID_MODEL_FROM_DATABASE=82875P/E7210 Memory Controller Hub (GA-8KNXP motherboard (875P))
+ pci:v00008086d00002578sv00001462sd00007580*
+- ID_MODEL_FROM_DATABASE=MS-6758 (875P Neo)
++ ID_MODEL_FROM_DATABASE=82875P/E7210 Memory Controller Hub (MS-6758 (875P Neo))
+ pci:v00008086d00002578sv000015D9sd00004580*
+- ID_MODEL_FROM_DATABASE=P4SCE Motherboard
++ ID_MODEL_FROM_DATABASE=82875P/E7210 Memory Controller Hub (P4SCE Motherboard)
+ pci:v00008086d00002579*
+  ID_MODEL_FROM_DATABASE=82875P Processor to AGP Controller
+@@ -62823,13 +62823,13 @@ pci:v00008086d00002580*
+  ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL Memory Controller Hub
+ pci:v00008086d00002580sv00001458sd00002580*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL Memory Controller Hub (GA-8I915ME-G Mainboard)
+ pci:v00008086d00002580sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL Memory Controller Hub (915P/G Neo2)
+ pci:v00008086d00002580sv00001734sd0000105B*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL Memory Controller Hub (Scenic W620)
+ pci:v00008086d00002581*
+  ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL PCI Express Root Port
+@@ -62838,28 +62838,28 @@ pci:v00008086d00002582*
+  ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller
+ pci:v00008086d00002582sv00001028sd00001079*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller (Optiplex GX280)
+ pci:v00008086d00002582sv0000103Csd00003006*
+- ID_MODEL_FROM_DATABASE=DC7100 SFF(DX878AV)
++ ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller (DC7100 SFF(DX878AV))
+ pci:v00008086d00002582sv00001043sd00002582*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller (P5GD1-VW Mainboard)
+ pci:v00008086d00002582sv00001458sd00002582*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller (GA-8I915ME-G Mainboard)
+ pci:v00008086d00002582sv00001734sd0000105B*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller (Scenic W620)
+ pci:v00008086d00002582sv00001849sd00002582*
+- ID_MODEL_FROM_DATABASE=ASRock P4Dual-915GL
++ ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller (ASRock P4Dual-915GL)
+ pci:v00008086d00002584*
+  ID_MODEL_FROM_DATABASE=82925X/XE Memory Controller Hub
+ pci:v00008086d00002584sv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82925X/XE Memory Controller Hub (Dimension 8400)
+ pci:v00008086d00002585*
+  ID_MODEL_FROM_DATABASE=82925X/XE PCI Express Root Port
+@@ -62877,58 +62877,58 @@ pci:v00008086d00002590*
+  ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller
+ pci:v00008086d00002590sv00001014sd00000575*
+- ID_MODEL_FROM_DATABASE=ThinkPad Z60t
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (ThinkPad Z60t)
+ pci:v00008086d00002590sv00001028sd00000182*
+- ID_MODEL_FROM_DATABASE=Dell Latitude C610
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (Dell Latitude C610)
+ pci:v00008086d00002590sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (Compaq nw8240/nx8220)
+ pci:v00008086d00002590sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (NX6110/NC6120)
+ pci:v00008086d00002590sv0000104Dsd000081B7*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-S3XP
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (Vaio VGN-S3XP)
+ pci:v00008086d00002590sv0000A304sd000081B7*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-S3XP
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (Vaio VGN-S3XP)
+ pci:v00008086d00002590sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (CCD-CALYPSO)
+ pci:v00008086d00002590sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (CD3-JIVE)
+ pci:v00008086d00002590sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (XB1)
+ pci:v00008086d00002591*
+  ID_MODEL_FROM_DATABASE=Mobile 915GM/PM Express PCI Express Root Port
+ pci:v00008086d00002591sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/PM Express PCI Express Root Port (HP Compaq nw8240 Mobile Workstation)
+ pci:v00008086d00002592*
+  ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller
+ pci:v00008086d00002592sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (NX6110/NC6120)
+ pci:v00008086d00002592sv0000103Csd0000308A*
+- ID_MODEL_FROM_DATABASE=NC6220
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (NC6220)
+ pci:v00008086d00002592sv00001043sd00001881*
+- ID_MODEL_FROM_DATABASE=GMA 900 915GM Integrated Graphics
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (GMA 900 915GM Integrated Graphics)
+ pci:v00008086d00002592sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (CCD-CALYPSO)
+ pci:v00008086d00002592sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (CD3-JIVE)
+ pci:v00008086d00002592sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (XB1)
+ pci:v00008086d000025A1*
+  ID_MODEL_FROM_DATABASE=6300ESB LPC Interface Controller
+@@ -62937,79 +62937,79 @@ pci:v00008086d000025A2*
+  ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller
+ pci:v00008086d000025A2sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025A2sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer IDE
++ ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller (V5D Single Board Computer IDE)
+ pci:v00008086d000025A2sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025A2sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller (CE9)
+ pci:v00008086d000025A2sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller (CL9 mainboard)
+ pci:v00008086d000025A2sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller (PSL09 PrPMC)
+ pci:v00008086d000025A3*
+  ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller
+ pci:v00008086d000025A3sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025A3sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025A3sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller (CE9)
+ pci:v00008086d000025A3sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller (CL9 mainboard)
+ pci:v00008086d000025A3sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025A3sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller (PSL09 PrPMC)
+ pci:v00008086d000025A4*
+  ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller
+ pci:v00008086d000025A4sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025A4sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (V5D Single Board Computer)
+ pci:v00008086d000025A4sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025A4sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (CE9)
+ pci:v00008086d000025A4sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (CL9 mainboard)
+ pci:v00008086d000025A4sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025A4sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller (PSL09 PrPMC)
+ pci:v00008086d000025A6*
+  ID_MODEL_FROM_DATABASE=6300ESB AC'97 Audio Controller
+ pci:v00008086d000025A6sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB AC'97 Audio Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025A6sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB AC'97 Audio Controller (CE9)
+ pci:v00008086d000025A6sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB AC'97 Audio Controller (CL9 mainboard)
+ pci:v00008086d000025A7*
+  ID_MODEL_FROM_DATABASE=6300ESB AC'97 Modem Controller
+@@ -63018,121 +63018,121 @@ pci:v00008086d000025A9*
+  ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller
+ pci:v00008086d000025A9sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025A9sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer USB
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (V5D Single Board Computer USB)
+ pci:v00008086d000025A9sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025A9sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (CE9)
+ pci:v00008086d000025A9sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (CL9 mainboard)
+ pci:v00008086d000025A9sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025A9sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (PSL09 PrPMC)
+ pci:v00008086d000025AA*
+  ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller
+ pci:v00008086d000025AAsv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025AAsv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025AAsv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (CE9)
+ pci:v00008086d000025AAsv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (CL9 mainboard)
+ pci:v00008086d000025AAsv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025AAsv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller (PSL09 PrPMC)
+ pci:v00008086d000025AB*
+  ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer
+ pci:v00008086d000025ABsv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025ABsv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (V5D Single Board Computer)
+ pci:v00008086d000025ABsv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025ABsv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (CE9)
+ pci:v00008086d000025ABsv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (QEMU Virtual Machine)
+ pci:v00008086d000025ABsv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (CL9 mainboard)
+ pci:v00008086d000025ABsv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025ABsv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer (PSL09 PrPMC)
+ pci:v00008086d000025AC*
+  ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller
+ pci:v00008086d000025ACsv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025ACsv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (V5D Single Board Computer)
+ pci:v00008086d000025ACsv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025ACsv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (CE9)
+ pci:v00008086d000025ACsv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (CL9 mainboard)
+ pci:v00008086d000025ACsv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025ACsv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller (PSL09 PrPMC)
+ pci:v00008086d000025AD*
+  ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller
+ pci:v00008086d000025ADsv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d000025ADsv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer USB 2.0
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (V5D Single Board Computer USB 2.0)
+ pci:v00008086d000025ADsv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025ADsv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (CE9)
+ pci:v00008086d000025ADsv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (CL9 mainboard)
+ pci:v00008086d000025ADsv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025ADsv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller (PSL09 PrPMC)
+ pci:v00008086d000025AE*
+  ID_MODEL_FROM_DATABASE=6300ESB 64-bit PCI-X Bridge
+@@ -63141,13 +63141,13 @@ pci:v00008086d000025B0*
+  ID_MODEL_FROM_DATABASE=6300ESB SATA RAID Controller
+ pci:v00008086d000025B0sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=6300ESB SATA RAID Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d000025B0sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=6300ESB SATA RAID Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d000025B0sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=6300ESB SATA RAID Controller (PSL09 PrPMC)
+ pci:v00008086d000025C0*
+  ID_MODEL_FROM_DATABASE=5000X Chipset Memory Controller Hub
+@@ -63159,16 +63159,16 @@ pci:v00008086d000025D4*
+  ID_MODEL_FROM_DATABASE=5000V Chipset Memory Controller Hub
+ pci:v00008086d000025D4sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000V Chipset Memory Controller Hub (X7DVL-E-O motherboard)
+ pci:v00008086d000025D8*
+  ID_MODEL_FROM_DATABASE=5000P Chipset Memory Controller Hub
+ pci:v00008086d000025D8sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=5000P Chipset Memory Controller Hub (X7DBN Motherboard)
+ pci:v00008086d000025D8sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000P Chipset Memory Controller Hub (S5000PSLSATA Server Board)
+ pci:v00008086d000025E2*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 2
+@@ -63192,79 +63192,79 @@ pci:v00008086d000025F0*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers
+ pci:v00008086d000025F0sv00001028sd000001BB*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1955 FSB Registers
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers (PowerEdge 1955 FSB Registers)
+ pci:v00008086d000025F0sv0000103Csd000031FD*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers (ProLiant DL140 G3)
+ pci:v00008086d000025F0sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers (X7DVL-E-O motherboard)
+ pci:v00008086d000025F0sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers (X7DBN Motherboard)
+ pci:v00008086d000025F0sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers (S5000PSLSATA Server Board)
+ pci:v00008086d000025F1*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers
+ pci:v00008086d000025F1sv0000103Csd000031FD*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (ProLiant DL140 G3)
+ pci:v00008086d000025F1sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (X7DVL-E-O motherboard)
+ pci:v00008086d000025F1sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (X7DBN Motherboard)
+ pci:v00008086d000025F1sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (S5000PSLSATA Server Board)
+ pci:v00008086d000025F3*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers
+ pci:v00008086d000025F3sv0000103Csd000031FD*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (ProLiant DL140 G3)
+ pci:v00008086d000025F3sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (X7DVL-E-O motherboard)
+ pci:v00008086d000025F3sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (X7DBN Motherboard)
+ pci:v00008086d000025F3sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers (S5000PSLSATA Server Board)
+ pci:v00008086d000025F5*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers
+ pci:v00008086d000025F5sv0000103Csd000031FD*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (ProLiant DL140 G3)
+ pci:v00008086d000025F5sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (X7DVL-E-O motherboard)
+ pci:v00008086d000025F5sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (X7DBN Motherboard)
+ pci:v00008086d000025F5sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (S5000PSLSATA Server Board)
+ pci:v00008086d000025F6*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers
+ pci:v00008086d000025F6sv0000103Csd000031FD*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (ProLiant DL140 G3)
+ pci:v00008086d000025F6sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (X7DVL-E-O motherboard)
+ pci:v00008086d000025F6sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (X7DBN Motherboard)
+ pci:v00008086d000025F6sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers (S5000PSLSATA Server Board)
+ pci:v00008086d000025F7*
+  ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 2-3
+@@ -63282,7 +63282,7 @@ pci:v00008086d00002600*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 Hub Interface 1.5
+ pci:v00008086d00002600sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Hub Interface
++ ID_MODEL_FROM_DATABASE=E8500/E8501 Hub Interface 1.5 (PowerEdge 6850 Hub Interface)
+ pci:v00008086d00002601*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port D
+@@ -63363,76 +63363,76 @@ pci:v00008086d00002620*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 eXternal Memory Bridge
+ pci:v00008086d00002620sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Memory Bridge
++ ID_MODEL_FROM_DATABASE=E8500/E8501 eXternal Memory Bridge (PowerEdge 6850 Memory Bridge)
+ pci:v00008086d00002621*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Miscellaneous Registers
+ pci:v00008086d00002621sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 XMB Registers
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Miscellaneous Registers (PowerEdge 6850 XMB Registers)
+ pci:v00008086d00002622*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Memory Interleaving Registers
+ pci:v00008086d00002622sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Memory Interleaving Registers
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Memory Interleaving Registers (PowerEdge 6850 Memory Interleaving Registers)
+ pci:v00008086d00002623*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB DDR Initialization and Calibration
+ pci:v00008086d00002623sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 DDR Initialization and Calibration
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB DDR Initialization and Calibration (PowerEdge 6850 DDR Initialization and Calibration)
+ pci:v00008086d00002624*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers
+ pci:v00008086d00002624sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers (PowerEdge 6850 Reserved Registers)
+ pci:v00008086d00002625*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers
+ pci:v00008086d00002625sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers (PowerEdge 6850 Reserved Registers)
+ pci:v00008086d00002626*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers
+ pci:v00008086d00002626sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers (PowerEdge 6850 Reserved Registers)
+ pci:v00008086d00002627*
+  ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers
+ pci:v00008086d00002627sv00001028sd00000170*
+- ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers
++ ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers (PowerEdge 6850 Reserved Registers)
+ pci:v00008086d00002640*
+  ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge
+ pci:v00008086d00002640sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (915P/G Neo2)
+ pci:v00008086d00002640sv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (Scenic W620)
+ pci:v00008086d00002640sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (CCD-CALYPSO)
+ pci:v00008086d00002640sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (CD3-JIVE)
+ pci:v00008086d00002640sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge (XB1)
+ pci:v00008086d00002641*
+  ID_MODEL_FROM_DATABASE=82801FBM (ICH6M) LPC Interface Bridge
+ pci:v00008086d00002641sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FBM (ICH6M) LPC Interface Bridge (Compaq nw8240/nx8220)
+ pci:v00008086d00002641sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FBM (ICH6M) LPC Interface Bridge (NX6110/NC6120)
+ pci:v00008086d00002642*
+  ID_MODEL_FROM_DATABASE=82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge
+@@ -63441,34 +63441,34 @@ pci:v00008086d00002651*
+  ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller
+ pci:v00008086d00002651sv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (Optiplex GX280)
+ pci:v00008086d00002651sv00001043sd00002601*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (P5GD1-VW Mainboard)
+ pci:v00008086d00002651sv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (Scenic W620)
+ pci:v00008086d00002651sv00008086sd00004147*
+- ID_MODEL_FROM_DATABASE=D915GAG Motherboard
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (D915GAG Motherboard)
+ pci:v00008086d00002651sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (CCD-CALYPSO)
+ pci:v00008086d00002651sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (CD3-JIVE)
+ pci:v00008086d00002651sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller (XB1)
+ pci:v00008086d00002652*
+  ID_MODEL_FROM_DATABASE=82801FR/FRW (ICH6R/ICH6RW) SATA Controller
+ pci:v00008086d00002652sv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FR/FRW (ICH6R/ICH6RW) SATA Controller (Dimension 8400)
+ pci:v00008086d00002652sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FR/FRW (ICH6R/ICH6RW) SATA Controller (915P/G Neo2)
+ pci:v00008086d00002653*
+  ID_MODEL_FROM_DATABASE=82801FBM (ICH6M) SATA Controller
+@@ -63477,289 +63477,289 @@ pci:v00008086d00002658*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1
+ pci:v00008086d00002658sv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (Dimension 8400)
+ pci:v00008086d00002658sv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (Optiplex GX280)
+ pci:v00008086d00002658sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (Compaq nw8240/nx8220)
+ pci:v00008086d00002658sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (NX6110/NC6120)
+ pci:v00008086d00002658sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (P5GD1-VW Mainboard)
+ pci:v00008086d00002658sv00001458sd00002558*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (GA-8I915ME-G Mainboard)
+ pci:v00008086d00002658sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (915P/G Neo2)
+ pci:v00008086d00002658sv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (Scenic W620)
+ pci:v00008086d00002658sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (CCD-CALYPSO)
+ pci:v00008086d00002658sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (CD3-JIVE)
+ pci:v00008086d00002658sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (XB1)
+ pci:v00008086d00002659*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2
+ pci:v00008086d00002659sv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (Dimension 8400)
+ pci:v00008086d00002659sv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (Optiplex GX280)
+ pci:v00008086d00002659sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (Compaq nw8240/nx8220)
+ pci:v00008086d00002659sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (NX6110/NC6120)
+ pci:v00008086d00002659sv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (P5GD1-VW Mainboard)
+ pci:v00008086d00002659sv00001458sd00002659*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (GA-8I915ME-G Mainboard)
+ pci:v00008086d00002659sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (915P/G Neo2)
+ pci:v00008086d00002659sv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (Scenic W620)
+ pci:v00008086d00002659sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (CCD-CALYPSO)
+ pci:v00008086d00002659sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (CD3-JIVE)
+ pci:v00008086d00002659sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (XB1)
+ pci:v00008086d0000265A*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3
+ pci:v00008086d0000265Asv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (Dimension 8400)
+ pci:v00008086d0000265Asv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (Optiplex GX280)
+ pci:v00008086d0000265Asv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (Compaq nw8240/nx8220)
+ pci:v00008086d0000265Asv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (NX6110/NC6120)
+ pci:v00008086d0000265Asv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (P5GD1-VW Mainboard)
+ pci:v00008086d0000265Asv00001458sd0000265A*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (GA-8I915ME-G Mainboard)
+ pci:v00008086d0000265Asv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (915P/G Neo2)
+ pci:v00008086d0000265Asv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (Scenic W620)
+ pci:v00008086d0000265Asv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (CCD-CALYPSO)
+ pci:v00008086d0000265Asv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (CD3-JIVE)
+ pci:v00008086d0000265Asv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (XB1)
+ pci:v00008086d0000265B*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4
+ pci:v00008086d0000265Bsv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (Dimension 8400)
+ pci:v00008086d0000265Bsv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (Optiplex GX280)
+ pci:v00008086d0000265Bsv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (NX6110/NC6120)
+ pci:v00008086d0000265Bsv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (P5GD1-VW Mainboard)
+ pci:v00008086d0000265Bsv00001458sd0000265A*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (GA-8I915ME-G Mainboard)
+ pci:v00008086d0000265Bsv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (915P/G Neo2)
+ pci:v00008086d0000265Bsv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (Scenic W620)
+ pci:v00008086d0000265Bsv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (CCD-CALYPSO)
+ pci:v00008086d0000265Bsv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (CD3-JIVE)
+ pci:v00008086d0000265Bsv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 (XB1)
+ pci:v00008086d0000265C*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
+ pci:v00008086d0000265Csv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (Dimension 8400)
+ pci:v00008086d0000265Csv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (Optiplex GX280)
+ pci:v00008086d0000265Csv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (Compaq nw8240/nx8220)
+ pci:v00008086d0000265Csv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (NX6110/NC6120)
+ pci:v00008086d0000265Csv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (P5GD1-VW Mainboard)
+ pci:v00008086d0000265Csv00001458sd00005006*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (GA-8I915ME-G Mainboard)
+ pci:v00008086d0000265Csv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (915P/G Neo2)
+ pci:v00008086d0000265Csv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (Scenic W620)
+ pci:v00008086d0000265Csv00008086sd0000265C*
+- ID_MODEL_FROM_DATABASE=Dimension 3100
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (Dimension 3100)
+ pci:v00008086d0000265Csv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (CCD-CALYPSO)
+ pci:v00008086d0000265Csv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (CD3-JIVE)
+ pci:v00008086d0000265Csv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (XB1)
+ pci:v00008086d00002660*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1
+ pci:v00008086d00002660sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (HP Compaq nw8240 Mobile Workstation)
+ pci:v00008086d00002660sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (NX6110/NC6120)
+ pci:v00008086d00002660sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (CCD-CALYPSO)
+ pci:v00008086d00002660sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (CD3-JIVE)
+ pci:v00008086d00002660sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (XB1)
+ pci:v00008086d00002662*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2
+ pci:v00008086d00002662sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (HP Compaq nw8240 Mobile Workstation)
+ pci:v00008086d00002662sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (CCD-CALYPSO)
+ pci:v00008086d00002662sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (CD3-JIVE)
+ pci:v00008086d00002662sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (XB1)
+ pci:v00008086d00002664*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3
+ pci:v00008086d00002664sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (CCD-CALYPSO)
+ pci:v00008086d00002664sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (CD3-JIVE)
+ pci:v00008086d00002664sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 (XB1)
+ pci:v00008086d00002666*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4
+ pci:v00008086d00002666sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 (CCD-CALYPSO)
+ pci:v00008086d00002666sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 (CD3-JIVE)
+ pci:v00008086d00002666sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 (XB1)
+ pci:v00008086d00002668*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller
+ pci:v00008086d00002668sv00001014sd000005B7*
+- ID_MODEL_FROM_DATABASE=ThinkPad Z60t
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (ThinkPad Z60t)
+ pci:v00008086d00002668sv0000103Csd00002A09*
+- ID_MODEL_FROM_DATABASE=PufferM-UL8E
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (PufferM-UL8E)
+ pci:v00008086d00002668sv00001043sd00001173*
+- ID_MODEL_FROM_DATABASE=Asus A6VC
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (Asus A6VC)
+ pci:v00008086d00002668sv00001043sd0000814E*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (P5GD1-VW Mainboard)
+ pci:v00008086d00002668sv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (915P/G Neo2)
+ pci:v00008086d00002668sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller (QEMU Virtual Machine)
+ pci:v00008086d0000266A*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
+ pci:v00008086d0000266Asv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (Dimension 8400)
+ pci:v00008086d0000266Asv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (Optiplex GX280)
+ pci:v00008086d0000266Asv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (P5GD1-VW Mainboard)
+ pci:v00008086d0000266Asv00001458sd0000266A*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (GA-8I915ME-G Mainboard)
+ pci:v00008086d0000266Asv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (915P/G Neo2)
+ pci:v00008086d0000266Asv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (Scenic W620)
+ pci:v00008086d0000266Asv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (CCD-CALYPSO)
+ pci:v00008086d0000266Asv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (CD3-JIVE)
+ pci:v00008086d0000266Asv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (XB1)
+ pci:v00008086d0000266C*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller
+@@ -63768,103 +63768,103 @@ pci:v00008086d0000266D*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller
+ pci:v00008086d0000266Dsv00001025sd0000006A*
+- ID_MODEL_FROM_DATABASE=Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop)
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop))
+ pci:v00008086d0000266Dsv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (Compaq nw8240/nx8220)
+ pci:v00008086d0000266Dsv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (NX6110/NC6120)
+ pci:v00008086d0000266E*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller
+ pci:v00008086d0000266Esv00001025sd0000006A*
+- ID_MODEL_FROM_DATABASE=Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop)
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop))
+ pci:v00008086d0000266Esv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Dimension 8400)
+ pci:v00008086d0000266Esv00001028sd00000179*
+- ID_MODEL_FROM_DATABASE=Optiplex GX280
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Optiplex GX280)
+ pci:v00008086d0000266Esv00001028sd00000182*
+- ID_MODEL_FROM_DATABASE=Latitude D610 Laptop
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Latitude D610 Laptop)
+ pci:v00008086d0000266Esv00001028sd00000187*
+- ID_MODEL_FROM_DATABASE=Dell Precision M70 Laptop
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Dell Precision M70 Laptop)
+ pci:v00008086d0000266Esv00001028sd00000188*
+- ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Inspiron 6000 laptop)
+ pci:v00008086d0000266Esv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Compaq nw8240/nx8220)
+ pci:v00008086d0000266Esv0000103Csd00000944*
+- ID_MODEL_FROM_DATABASE=Compaq NC6220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Compaq NC6220)
+ pci:v00008086d0000266Esv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (NX6110/NC6120)
+ pci:v00008086d0000266Esv0000103Csd00003006*
+- ID_MODEL_FROM_DATABASE=DC7100 SFF(DX878AV)
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (DC7100 SFF(DX878AV))
+ pci:v00008086d0000266Esv00001458sd0000A002*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (GA-8I915ME-G Mainboard)
+ pci:v00008086d0000266Esv0000152Dsd00000745*
+- ID_MODEL_FROM_DATABASE=Packard Bell A8550 Laptop
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Packard Bell A8550 Laptop)
+ pci:v00008086d0000266Esv00001734sd0000105A*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (Scenic W620)
+ pci:v00008086d0000266F*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller
+ pci:v00008086d0000266Fsv00001028sd00000177*
+- ID_MODEL_FROM_DATABASE=Dimension 8400
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (Dimension 8400)
+ pci:v00008086d0000266Fsv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (Compaq nw8240/nx8220)
+ pci:v00008086d0000266Fsv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (NX6110/NC6120)
+ pci:v00008086d0000266Fsv00001043sd000080A6*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (P5GD1-VW Mainboard)
+ pci:v00008086d0000266Fsv00001458sd0000266F*
+- ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (GA-8I915ME-G Mainboard)
+ pci:v00008086d0000266Fsv00001462sd00007028*
+- ID_MODEL_FROM_DATABASE=915P/G Neo2
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (915P/G Neo2)
+ pci:v00008086d0000266Fsv00001734sd0000105C*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (Scenic W620)
+ pci:v00008086d0000266Fsv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (CCD-CALYPSO)
+ pci:v00008086d0000266Fsv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (CD3-JIVE)
+ pci:v00008086d0000266Fsv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (XB1)
+ pci:v00008086d00002670*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller
+ pci:v00008086d00002670sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (ProLiant DL140 G3)
+ pci:v00008086d00002670sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (X7DVL-E-O motherboard)
+ pci:v00008086d00002670sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (X7DBN Motherboard)
+ pci:v00008086d00002670sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller (Intel S5000PSLSATA Server Board)
+ pci:v00008086d00002680*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SATA IDE Controller
+@@ -63873,22 +63873,22 @@ pci:v00008086d00002681*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller
+ pci:v00008086d00002681sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (ProLiant DL140 G3)
+ pci:v00008086d00002681sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (X7DVL-E-O motherboard)
+ pci:v00008086d00002681sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (X7DBN Motherboard)
+ pci:v00008086d00002681sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller (Intel S5000PSLSATA Server Board)
+ pci:v00008086d00002682*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller
+ pci:v00008086d00002682sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=Adaptec Serial ATA HostRAID
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller (Adaptec Serial ATA HostRAID)
+ pci:v00008086d00002683*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller
+@@ -63897,109 +63897,109 @@ pci:v00008086d00002688*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1
+ pci:v00008086d00002688sv00001028sd000001BB*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1955 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (PowerEdge 1955 onboard USB)
+ pci:v00008086d00002688sv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (PowerEdge R900 onboard USB)
+ pci:v00008086d00002688sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (ProLiant DL140 G3)
+ pci:v00008086d00002688sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (X7DVL-E-O motherboard)
+ pci:v00008086d00002688sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (X7DBN Motherboard)
+ pci:v00008086d00002688sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 (Intel S5000PSLSATA Server Board)
+ pci:v00008086d00002689*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2
+ pci:v00008086d00002689sv00001028sd000001BB*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1955 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (PowerEdge 1955 onboard USB)
+ pci:v00008086d00002689sv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (PowerEdge R900 onboard USB)
+ pci:v00008086d00002689sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (ProLiant DL140 G3)
+ pci:v00008086d00002689sv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (X7DVL-E-O motherboard)
+ pci:v00008086d00002689sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (X7DBN Motherboard)
+ pci:v00008086d00002689sv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 (Intel S5000PSLSATA Server Board)
+ pci:v00008086d0000268A*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3
+ pci:v00008086d0000268Asv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (PowerEdge R900 onboard USB)
+ pci:v00008086d0000268Asv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (ProLiant DL140 G3)
+ pci:v00008086d0000268Asv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (X7DVL-E-O motherboard)
+ pci:v00008086d0000268Asv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (X7DBN Motherboard)
+ pci:v00008086d0000268Asv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 (Intel S5000PSLSATA Server Board)
+ pci:v00008086d0000268B*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4
+ pci:v00008086d0000268Bsv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (PowerEdge R900 onboard USB)
+ pci:v00008086d0000268Bsv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (X7DVL-E-O motherboard)
+ pci:v00008086d0000268Bsv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 (Intel S5000PSLSATA Server Board)
+ pci:v00008086d0000268C*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller
+ pci:v00008086d0000268Csv00001028sd000001BB*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1955 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (PowerEdge 1955 onboard USB)
+ pci:v00008086d0000268Csv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (PowerEdge R900 onboard USB)
+ pci:v00008086d0000268Csv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (ProLiant DL140 G3)
+ pci:v00008086d0000268Csv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (X7DVL-E-O motherboard)
+ pci:v00008086d0000268Csv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (X7DBN Motherboard)
+ pci:v00008086d0000268Csv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller (Intel S5000PSLSATA Server Board)
+ pci:v00008086d00002690*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1
+ pci:v00008086d00002690sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1 (ProLiant DL140 G3)
+ pci:v00008086d00002690sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1 (X7DBN Motherboard)
+ pci:v00008086d00002692*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 2
+ pci:v00008086d00002692sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 2 (ProLiant DL140 G3)
+ pci:v00008086d00002694*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 3
+@@ -64020,49 +64020,49 @@ pci:v00008086d0000269B*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller
+ pci:v00008086d0000269Bsv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (ProLiant DL140 G3)
+ pci:v00008086d0000269Bsv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (X7DVL-E-O motherboard)
+ pci:v00008086d0000269Bsv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (X7DBN Motherboard)
+ pci:v00008086d0000269Bsv00008086sd00003476*
+- ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller (Intel S5000PSLSATA Server Board)
+ pci:v00008086d0000269E*
+  ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller
+ pci:v00008086d0000269Esv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller (ProLiant DL140 G3)
+ pci:v00008086d0000269Esv000015D9sd00008680*
+- ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller (X7DVL-E-O motherboard)
+ pci:v00008086d0000269Esv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller (X7DBN Motherboard)
+ pci:v00008086d00002770*
+  ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub
+ pci:v00008086d00002770sv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub (OptiPlex GX620)
+ pci:v00008086d00002770sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub (Pavilion A1512X)
+ pci:v00008086d00002770sv00001043sd0000817A*
+- ID_MODEL_FROM_DATABASE=P5LD2-VM Mainboard
++ ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub (P5LD2-VM Mainboard)
+ pci:v00008086d00002770sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub (E4500)
+ pci:v00008086d00002770sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub (Wind PC MS-7418)
+ pci:v00008086d00002770sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub (DeskTop Board D945GTP)
+ pci:v00008086d00002771*
+  ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL PCI Express Root Port
+@@ -64071,16 +64071,16 @@ pci:v00008086d00002772*
+  ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller
+ pci:v00008086d00002772sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Pavilion A1512X)
+ pci:v00008086d00002772sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Wind PC MS-7418)
+ pci:v00008086d00002772sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (DeskTop Board D945GTP)
+ pci:v00008086d00002772sv00008086sd0000D605*
+- ID_MODEL_FROM_DATABASE=Intel Desktop Board D945GCCR
++ ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller (Intel Desktop Board D945GCCR)
+ pci:v00008086d00002774*
+  ID_MODEL_FROM_DATABASE=82955X Memory Controller Hub
+@@ -64095,10 +64095,10 @@ pci:v00008086d00002778*
+  ID_MODEL_FROM_DATABASE=E7230/3000/3010 Memory Controller Hub
+ pci:v00008086d00002778sv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=E7230/3000/3010 Memory Controller Hub (PowerEdge SC440)
+ pci:v00008086d00002778sv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=E7230/3000/3010 Memory Controller Hub (PowerEdge 860)
+ pci:v00008086d00002779*
+  ID_MODEL_FROM_DATABASE=E7230/3000/3010 PCI Express Root Port
+@@ -64110,7 +64110,7 @@ pci:v00008086d0000277C*
+  ID_MODEL_FROM_DATABASE=82975X Memory Controller Hub
+ pci:v00008086d0000277Csv00001043sd00008178*
+- ID_MODEL_FROM_DATABASE=P5WDG2 WS Professional motherboard
++ ID_MODEL_FROM_DATABASE=82975X Memory Controller Hub (P5WDG2 WS Professional motherboard)
+ pci:v00008086d0000277D*
+  ID_MODEL_FROM_DATABASE=82975X PCI Express Root Port
+@@ -64119,94 +64119,94 @@ pci:v00008086d00002782*
+  ID_MODEL_FROM_DATABASE=82915G Integrated Graphics Controller
+ pci:v00008086d00002782sv00001043sd00002582*
+- ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard
++ ID_MODEL_FROM_DATABASE=82915G Integrated Graphics Controller (P5GD1-VW Mainboard)
+ pci:v00008086d00002782sv00001734sd0000105B*
+- ID_MODEL_FROM_DATABASE=Scenic W620
++ ID_MODEL_FROM_DATABASE=82915G Integrated Graphics Controller (Scenic W620)
+ pci:v00008086d00002792*
+  ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller
+ pci:v00008086d00002792sv0000103Csd0000099C*
+- ID_MODEL_FROM_DATABASE=NX6110/NC6120
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (NX6110/NC6120)
+ pci:v00008086d00002792sv00001043sd00001881*
+- ID_MODEL_FROM_DATABASE=GMA 900 915GM Integrated Graphics
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (GMA 900 915GM Integrated Graphics)
+ pci:v00008086d00002792sv0000E4BFsd00000CCD*
+- ID_MODEL_FROM_DATABASE=CCD-CALYPSO
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (CCD-CALYPSO)
+ pci:v00008086d00002792sv0000E4BFsd00000CD3*
+- ID_MODEL_FROM_DATABASE=CD3-JIVE
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (CD3-JIVE)
+ pci:v00008086d00002792sv0000E4BFsd000058B1*
+- ID_MODEL_FROM_DATABASE=XB1
++ ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller (XB1)
+ pci:v00008086d000027A0*
+  ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub
+ pci:v00008086d000027A0sv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (9814 WKMI)
+ pci:v00008086d000027A0sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (XPS M1210)
+ pci:v00008086d000027A0sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (Compaq nx9420 Notebook)
+ pci:v00008086d000027A0sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (NC2400)
+ pci:v00008086d000027A0sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (Compaq nw8440)
+ pci:v00008086d000027A0sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (A6J-Q008)
+ pci:v00008086d000027A0sv000017AAsd00002015*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (ThinkPad T60)
+ pci:v00008086d000027A0sv000017AAsd00002017*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027A1*
+  ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port
+ pci:v00008086d000027A1sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (Compaq nx9420 Notebook)
+ pci:v00008086d000027A1sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port (Compaq nw8440)
+ pci:v00008086d000027A2*
+  ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller
+ pci:v00008086d000027A2sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (NC2400)
+ pci:v00008086d000027A2sv000017AAsd0000201A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027A2sv00009902sd00001584*
+- ID_MODEL_FROM_DATABASE=CCE MPL-D10H120F
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (CCE MPL-D10H120F)
+ pci:v00008086d000027A6*
+  ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller
+ pci:v00008086d000027A6sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (NC2400)
+ pci:v00008086d000027A6sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11 integrated graphics (secondary)
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (CC11/CL11 integrated graphics (secondary))
+ pci:v00008086d000027A6sv000017AAsd0000201A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027AC*
+  ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Memory Controller Hub
+ pci:v00008086d000027ACsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Memory Controller Hub (CC11/CL11)
+ pci:v00008086d000027AD*
+  ID_MODEL_FROM_DATABASE=Mobile 945GSE Express PCI Express Root Port
+@@ -64215,178 +64215,178 @@ pci:v00008086d000027AE*
+  ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Integrated Graphics Controller
+ pci:v00008086d000027AEsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11 integrated graphics (primary)
++ ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Integrated Graphics Controller (CC11/CL11 integrated graphics (primary))
+ pci:v00008086d000027B0*
+  ID_MODEL_FROM_DATABASE=82801GH (ICH7DH) LPC Interface Bridge
+ pci:v00008086d000027B0sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=82801GH (ICH7DH) LPC Interface Bridge (Pavilion A1512X)
+ pci:v00008086d000027B0sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82801GH (ICH7DH) LPC Interface Bridge (DeskTop Board D945GTP)
+ pci:v00008086d000027B8*
+  ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge
+ pci:v00008086d000027B8sv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (PowerEdge 860)
+ pci:v00008086d000027B8sv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (P5KPL-VM Motherboard)
+ pci:v00008086d000027B8sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (E4500)
+ pci:v00008086d000027B8sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (Wind PC MS-7418)
+ pci:v00008086d000027B8sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (CC11/CL11)
+ pci:v00008086d000027B8sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge (DeskTop Board D945GTP)
+ pci:v00008086d000027B9*
+  ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge
+ pci:v00008086d000027B9sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (XPS M1210)
+ pci:v00008086d000027B9sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (Compaq nx9420 Notebook)
+ pci:v00008086d000027B9sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (NC2400)
+ pci:v00008086d000027B9sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (Compaq nw8440)
+ pci:v00008086d000027B9sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (Panasonic CF-Y5 laptop)
+ pci:v00008086d000027B9sv000017AAsd00002009*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027BC*
+  ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller
+ pci:v00008086d000027BCsv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller (D270S/D250S Motherboard)
+ pci:v00008086d000027BCsv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller (Notebook N150P)
+ pci:v00008086d000027BCsv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller (GA-D525TUD)
+ pci:v00008086d000027BCsv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller (DeskTop Board D510MO)
+ pci:v00008086d000027BCsv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller (Desktop Board D425KT)
+ pci:v00008086d000027BD*
+  ID_MODEL_FROM_DATABASE=82801GHM (ICH7-M DH) LPC Interface Bridge
+ pci:v00008086d000027BDsv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=82801GHM (ICH7-M DH) LPC Interface Bridge (9814 WKMI)
+ pci:v00008086d000027C0*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode]
+ pci:v00008086d000027C0sv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (OptiPlex GX620)
+ pci:v00008086d000027C0sv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (PowerEdge SC440)
+ pci:v00008086d000027C0sv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (PowerEdge 860)
+ pci:v00008086d000027C0sv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (P5KPL-VM Motherboard)
+ pci:v00008086d000027C0sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (E4500)
+ pci:v00008086d000027C0sv00001462sd00002310*
+- ID_MODEL_FROM_DATABASE=MSI Hetis 945
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (MSI Hetis 945)
+ pci:v00008086d000027C0sv00001462sd00007236*
+- ID_MODEL_FROM_DATABASE=945P Neo3-F Rev. 2.2 motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (945P Neo3-F Rev. 2.2 motherboard)
+ pci:v00008086d000027C0sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (Wind PC MS-7418)
+ pci:v00008086d000027C0sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (CC11/CL11)
+ pci:v00008086d000027C0sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (Desktop Board D425KT)
+ pci:v00008086d000027C0sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] (DeskTop Board D945GTP)
+ pci:v00008086d000027C1*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode]
+ pci:v00008086d000027C1sv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (PowerEdge SC440)
+ pci:v00008086d000027C1sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (Pavilion A1512X)
+ pci:v00008086d000027C1sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (D270S/D250S Motherboard)
+ pci:v00008086d000027C1sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (Notebook N150P)
+ pci:v00008086d000027C1sv00001458sd0000B005*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (GA-D525TUD)
+ pci:v00008086d000027C1sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (CC11/CL11)
+ pci:v00008086d000027C1sv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (DeskTop Board D510MO)
+ pci:v00008086d000027C1sv00008086sd00005842*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D975XBX
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] (DeskTop Board D975XBX)
+ pci:v00008086d000027C3*
+  ID_MODEL_FROM_DATABASE=82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode]
+ pci:v00008086d000027C3sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] (CC11/CL11)
+ pci:v00008086d000027C3sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] (DeskTop Board D945GTP)
+ pci:v00008086d000027C4*
+  ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode]
+ pci:v00008086d000027C4sv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (9814 WKMI)
+ pci:v00008086d000027C4sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (XPS M1210)
+ pci:v00008086d000027C4sv000017AAsd0000200E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60
++ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] (ThinkPad T60)
+ pci:v00008086d000027C5*
+  ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode]
+ pci:v00008086d000027C5sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] (Compaq nx9420 Notebook)
+ pci:v00008086d000027C5sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] (Compaq nw8440)
+ pci:v00008086d000027C5sv000017AAsd0000200D*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027C6*
+  ID_MODEL_FROM_DATABASE=82801GHM (ICH7-M DH) SATA Controller [RAID mode]
+@@ -64395,553 +64395,553 @@ pci:v00008086d000027C8*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1
+ pci:v00008086d000027C8sv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (9814 WKMI)
+ pci:v00008086d000027C8sv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (OptiPlex GX620)
+ pci:v00008086d000027C8sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (XPS M1210)
+ pci:v00008086d000027C8sv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (PowerEdge SC440)
+ pci:v00008086d000027C8sv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (PowerEdge 860)
+ pci:v00008086d000027C8sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Pavilion A1512X)
+ pci:v00008086d000027C8sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Compaq nx9420 Notebook)
+ pci:v00008086d000027C8sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (NC2400)
+ pci:v00008086d000027C8sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Compaq nw8440)
+ pci:v00008086d000027C8sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (A6J-Q008)
+ pci:v00008086d000027C8sv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (P5KPL-VM,P5LD2-VM Mainboard)
+ pci:v00008086d000027C8sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (D270S/D250S Motherboard)
+ pci:v00008086d000027C8sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (E4500)
+ pci:v00008086d000027C8sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Notebook N150P)
+ pci:v00008086d000027C8sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (GA-D525TUD)
+ pci:v00008086d000027C8sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Wind PC MS-7418)
+ pci:v00008086d000027C8sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (CC11/CL11)
+ pci:v00008086d000027C8sv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027C8sv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (DeskTop Board D510MO)
+ pci:v00008086d000027C8sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (Desktop Board D425KT)
+ pci:v00008086d000027C8sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 (DeskTop Board D945GTP)
+ pci:v00008086d000027C9*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2
+ pci:v00008086d000027C9sv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (9814 WKMI)
+ pci:v00008086d000027C9sv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (OptiPlex GX620)
+ pci:v00008086d000027C9sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (XPS M1210)
+ pci:v00008086d000027C9sv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (PowerEdge SC440)
+ pci:v00008086d000027C9sv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (PowerEdge 860)
+ pci:v00008086d000027C9sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Pavilion A1512X)
+ pci:v00008086d000027C9sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Compaq nx9420 Notebook)
+ pci:v00008086d000027C9sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (NC2400)
+ pci:v00008086d000027C9sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Compaq nw8440)
+ pci:v00008086d000027C9sv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (A6J-Q008)
+ pci:v00008086d000027C9sv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (P5KPL-VM,P5LD2-VM Mainboard)
+ pci:v00008086d000027C9sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (D270S/D250S Motherboard)
+ pci:v00008086d000027C9sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (E4500)
+ pci:v00008086d000027C9sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Notebook N150P)
+ pci:v00008086d000027C9sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (GA-D525TUD)
+ pci:v00008086d000027C9sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Wind PC MS-7418)
+ pci:v00008086d000027C9sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (CC11/CL11)
+ pci:v00008086d000027C9sv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027C9sv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (DeskTop Board D510MO)
+ pci:v00008086d000027C9sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (Desktop Board D425KT)
+ pci:v00008086d000027C9sv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 (DeskTop Board D945GTP)
+ pci:v00008086d000027CA*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3
+ pci:v00008086d000027CAsv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (9814 WKMI)
+ pci:v00008086d000027CAsv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (OptiPlex GX620)
+ pci:v00008086d000027CAsv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (XPS M1210)
+ pci:v00008086d000027CAsv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (PowerEdge SC440)
+ pci:v00008086d000027CAsv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (PowerEdge 860)
+ pci:v00008086d000027CAsv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Pavilion A1512X)
+ pci:v00008086d000027CAsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Compaq nx9420 Notebook)
+ pci:v00008086d000027CAsv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (NC2400)
+ pci:v00008086d000027CAsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Compaq nw8440)
+ pci:v00008086d000027CAsv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (A6J-Q008)
+ pci:v00008086d000027CAsv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (P5KPL-VM,P5LD2-VM Mainboard)
+ pci:v00008086d000027CAsv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (D270S/D250S Motherboard)
+ pci:v00008086d000027CAsv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (E4500)
+ pci:v00008086d000027CAsv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Notebook N150P)
+ pci:v00008086d000027CAsv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (GA-D525TUD)
+ pci:v00008086d000027CAsv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (Wind PC MS-7418)
+ pci:v00008086d000027CAsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (CC11/CL11)
+ pci:v00008086d000027CAsv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027CAsv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (DeskTop Board D510MO)
+ pci:v00008086d000027CAsv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 (DeskTop Board D945GTP)
+ pci:v00008086d000027CB*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4
+ pci:v00008086d000027CBsv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (9814 WKMI)
+ pci:v00008086d000027CBsv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (OptiPlex GX620)
+ pci:v00008086d000027CBsv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (XPS M1210)
+ pci:v00008086d000027CBsv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (PowerEdge SC440)
+ pci:v00008086d000027CBsv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Pavilion A1512X)
+ pci:v00008086d000027CBsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Compaq nx9420 Notebook)
+ pci:v00008086d000027CBsv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (NC2400)
+ pci:v00008086d000027CBsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Compaq nw8440)
+ pci:v00008086d000027CBsv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (A6J-Q008)
+ pci:v00008086d000027CBsv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (P5KPL-VM,P5LD2-VM Mainboard)
+ pci:v00008086d000027CBsv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (D270S/D250S Motherboard)
+ pci:v00008086d000027CBsv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (E4500)
+ pci:v00008086d000027CBsv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Notebook N150P)
+ pci:v00008086d000027CBsv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (GA-D525TUD)
+ pci:v00008086d000027CBsv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (Wind PC MS-7418)
+ pci:v00008086d000027CBsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (CC11/CL11)
+ pci:v00008086d000027CBsv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027CBsv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (DeskTop Board D510MO)
+ pci:v00008086d000027CBsv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 (DeskTop Board D945GTP)
+ pci:v00008086d000027CC*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller
+ pci:v00008086d000027CCsv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (9814 WKMI)
+ pci:v00008086d000027CCsv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (OptiPlex GX620)
+ pci:v00008086d000027CCsv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (XPS M1210)
+ pci:v00008086d000027CCsv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (PowerEdge SC440)
+ pci:v00008086d000027CCsv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (PowerEdge 860)
+ pci:v00008086d000027CCsv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Pavilion A1512X)
+ pci:v00008086d000027CCsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Compaq nx9420 Notebook)
+ pci:v00008086d000027CCsv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (NC2400)
+ pci:v00008086d000027CCsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Compaq nw8440)
+ pci:v00008086d000027CCsv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (A6J-Q008)
+ pci:v00008086d000027CCsv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (P5KPL-VM,P5LD2-VM Mainboard)
+ pci:v00008086d000027CCsv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (D270S/D250S Motherboard)
+ pci:v00008086d000027CCsv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Notebook N150P)
+ pci:v00008086d000027CCsv00001458sd00005006*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (GA-D525TUD)
+ pci:v00008086d000027CCsv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Wind PC MS-7418)
+ pci:v00008086d000027CCsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (CC11/CL11)
+ pci:v00008086d000027CCsv000017AAsd0000200B*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027CCsv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (DeskTop Board D510MO)
+ pci:v00008086d000027CCsv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (Desktop Board D425KT)
+ pci:v00008086d000027CCsv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller (DeskTop Board D945GTP)
+ pci:v00008086d000027D0*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1
+ pci:v00008086d000027D0sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (Compaq nx9420 Notebook)
+ pci:v00008086d000027D0sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (Compaq nw8440)
+ pci:v00008086d000027D0sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (Notebook N150P)
+ pci:v00008086d000027D0sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (GA-D525TUD)
+ pci:v00008086d000027D0sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (Wind PC MS-7418)
+ pci:v00008086d000027D0sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (CC11/CL11)
+ pci:v00008086d000027D0sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 (Desktop Board D425KT)
+ pci:v00008086d000027D2*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2
+ pci:v00008086d000027D2sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (Compaq nx9420 Notebook)
+ pci:v00008086d000027D2sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (Compaq nw8440)
+ pci:v00008086d000027D2sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (Notebook N150P)
+ pci:v00008086d000027D2sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (Wind PC MS-7418)
+ pci:v00008086d000027D2sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (CC11/CL11)
+ pci:v00008086d000027D2sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 (Desktop Board D425KT)
+ pci:v00008086d000027D4*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3
+ pci:v00008086d000027D4sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (Notebook N150P)
+ pci:v00008086d000027D4sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (Wind PC MS-7418)
+ pci:v00008086d000027D4sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (CC11/CL11)
+ pci:v00008086d000027D4sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 (Desktop Board D425KT)
+ pci:v00008086d000027D6*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4
+ pci:v00008086d000027D6sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (Compaq nw8440)
+ pci:v00008086d000027D6sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (Notebook N150P)
+ pci:v00008086d000027D6sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (Wind PC MS-7418)
+ pci:v00008086d000027D6sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (CC11/CL11)
+ pci:v00008086d000027D6sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 (Desktop Board D425KT)
+ pci:v00008086d000027D8*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller
+ pci:v00008086d000027D8sv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (9814 WKMI)
+ pci:v00008086d000027D8sv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (XPS M1210)
+ pci:v00008086d000027D8sv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Pavilion A1512X)
+ pci:v00008086d000027D8sv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Compaq nx9420 Notebook)
+ pci:v00008086d000027D8sv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (NC2400)
+ pci:v00008086d000027D8sv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Compaq nw8440)
+ pci:v00008086d000027D8sv00001043sd00001123*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (A6J-Q008)
+ pci:v00008086d000027D8sv00001043sd000013C4*
+- ID_MODEL_FROM_DATABASE=Asus G2P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Asus G2P)
+ pci:v00008086d000027D8sv00001043sd0000817F*
+- ID_MODEL_FROM_DATABASE=P5LD2-VM Mainboard (Realtek ALC 882 codec)
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (P5LD2-VM Mainboard (Realtek ALC 882 codec))
+ pci:v00008086d000027D8sv00001043sd00008290*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (P5KPL-VM Motherboard)
+ pci:v00008086d000027D8sv00001043sd000082EA*
+- ID_MODEL_FROM_DATABASE=P5KPL-CM Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (P5KPL-CM Motherboard)
+ pci:v00008086d000027D8sv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (D270S/D250S Motherboard)
+ pci:v00008086d000027D8sv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (E4500)
+ pci:v00008086d000027D8sv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Panasonic CF-Y5 laptop)
+ pci:v00008086d000027D8sv00001179sd0000FF10*
+- ID_MODEL_FROM_DATABASE=Toshiba Satellite A100-796 audio (Realtek ALC861)
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Toshiba Satellite A100-796 audio (Realtek ALC861))
+ pci:v00008086d000027D8sv00001179sd0000FF31*
+- ID_MODEL_FROM_DATABASE=AC97 Data Fax SoftModem with SmartCP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (AC97 Data Fax SoftModem with SmartCP)
+ pci:v00008086d000027D8sv00001447sd00001043*
+- ID_MODEL_FROM_DATABASE=Asus A8JP (Analog Devices AD1986A)
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Asus A8JP (Analog Devices AD1986A))
+ pci:v00008086d000027D8sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Notebook N150P)
+ pci:v00008086d000027D8sv00001458sd0000A002*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD (Realtek ALC887)
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (GA-D525TUD (Realtek ALC887))
+ pci:v00008086d000027D8sv00001458sd0000A102*
+- ID_MODEL_FROM_DATABASE=GA-8I945PG-RH Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (GA-8I945PG-RH Mainboard)
+ pci:v00008086d000027D8sv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Wind PC MS-7418)
+ pci:v00008086d000027D8sv0000152Dsd00000753*
+- ID_MODEL_FROM_DATABASE=Softmodem
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Softmodem)
+ pci:v00008086d000027D8sv00001734sd000010AD*
+- ID_MODEL_FROM_DATABASE=Conexant softmodem SmartCP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Conexant softmodem SmartCP)
+ pci:v00008086d000027D8sv000017AAsd00002010*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027D8sv000017AAsd00003802*
+- ID_MODEL_FROM_DATABASE=Lenovo 3000 C200 audio [Realtek ALC861VD]
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (Lenovo 3000 C200 audio [Realtek ALC861VD])
+ pci:v00008086d000027D8sv00008086sd00001112*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (DeskTop Board D945GTP)
+ pci:v00008086d000027D8sv00008086sd000027D8*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (DeskTop Board D945GTP)
+ pci:v00008086d000027D8sv00008086sd0000D618*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (DeskTop Board D510MO)
+ pci:v00008086d000027D8sv00008384sd00007680*
+- ID_MODEL_FROM_DATABASE=STAC9221 HD Audio Codec
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller (STAC9221 HD Audio Codec)
+ pci:v00008086d000027DA*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller
+ pci:v00008086d000027DAsv00001025sd0000006C*
+- ID_MODEL_FROM_DATABASE=9814 WKMI
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (9814 WKMI)
+ pci:v00008086d000027DAsv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (OptiPlex GX620)
+ pci:v00008086d000027DAsv00001028sd000001D7*
+- ID_MODEL_FROM_DATABASE=XPS M1210
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (XPS M1210)
+ pci:v00008086d000027DAsv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (PowerEdge SC440)
+ pci:v00008086d000027DAsv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (PowerEdge 860)
+ pci:v00008086d000027DAsv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Pavilion A1512X)
+ pci:v00008086d000027DAsv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (P5KPL-VM Motherboard)
+ pci:v00008086d000027DAsv0000105Bsd00000D7C*
+- ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (D270S/D250S Motherboard)
+ pci:v00008086d000027DAsv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Panasonic CF-Y5 laptop)
+ pci:v00008086d000027DAsv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Notebook N150P)
+ pci:v00008086d000027DAsv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-8I945PG-RH/GA-D525TUD Mainboard
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (GA-8I945PG-RH/GA-D525TUD Mainboard)
+ pci:v00008086d000027DAsv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Wind PC MS-7418)
+ pci:v00008086d000027DAsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (CC11/CL11)
+ pci:v00008086d000027DAsv000017AAsd0000200F*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027DAsv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (DeskTop Board D510MO)
+ pci:v00008086d000027DAsv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (Desktop Board D425KT)
+ pci:v00008086d000027DAsv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (DeskTop Board D945GTP)
+ pci:v00008086d000027DAsv00008086sd00005842*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D975XBX
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller (DeskTop Board D975XBX)
+ pci:v00008086d000027DC*
+  ID_MODEL_FROM_DATABASE=NM10/ICH7 Family LAN Controller
+ pci:v00008086d000027DCsv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family LAN Controller (Pavilion A1512X)
+ pci:v00008086d000027DCsv00008086sd0000308D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=NM10/ICH7 Family LAN Controller (DeskTop Board D945GTP)
+ pci:v00008086d000027DD*
+  ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Modem Controller
+@@ -64950,88 +64950,88 @@ pci:v00008086d000027DE*
+  ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Audio Controller
+ pci:v00008086d000027DEsv00001028sd000001AD*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX620
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Audio Controller (OptiPlex GX620)
+ pci:v00008086d000027DEsv00001462sd00007267*
+- ID_MODEL_FROM_DATABASE=Realtek ALC883 Audio Controller
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Audio Controller (Realtek ALC883 Audio Controller)
+ pci:v00008086d000027DEsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11 integrated audio (AD1981BL codec)
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Audio Controller (CC11 integrated audio (AD1981BL codec))
+ pci:v00008086d000027DF*
+  ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller
+ pci:v00008086d000027DFsv00001028sd000001DF*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC440
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (PowerEdge SC440)
+ pci:v00008086d000027DFsv00001028sd000001E6*
+- ID_MODEL_FROM_DATABASE=PowerEdge 860
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (PowerEdge 860)
+ pci:v00008086d000027DFsv0000103Csd00002A3B*
+- ID_MODEL_FROM_DATABASE=Pavilion A1512X
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Pavilion A1512X)
+ pci:v00008086d000027DFsv0000103Csd0000309F*
+- ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Compaq nx9420 Notebook)
+ pci:v00008086d000027DFsv0000103Csd000030A1*
+- ID_MODEL_FROM_DATABASE=NC2400
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (NC2400)
+ pci:v00008086d000027DFsv0000103Csd000030A3*
+- ID_MODEL_FROM_DATABASE=Compaq nw8440
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Compaq nw8440)
+ pci:v00008086d000027DFsv00001043sd00001237*
+- ID_MODEL_FROM_DATABASE=A6J-Q008
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (A6J-Q008)
+ pci:v00008086d000027DFsv00001043sd00008179*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (P5KPL-VM Motherboard)
+ pci:v00008086d000027DFsv0000107Bsd00005048*
+- ID_MODEL_FROM_DATABASE=E4500
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (E4500)
+ pci:v00008086d000027DFsv000010F7sd00008338*
+- ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Panasonic CF-Y5 laptop)
+ pci:v00008086d000027DFsv00001462sd00007418*
+- ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (Wind PC MS-7418)
+ pci:v00008086d000027DFsv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (CC11/CL11)
+ pci:v00008086d000027DFsv000017AAsd0000200C*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (ThinkPad R60/T60/X60 series)
+ pci:v00008086d000027DFsv00008086sd0000544E*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
++ ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller (DeskTop Board D945GTP)
+ pci:v00008086d000027E0*
+  ID_MODEL_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 5
+ pci:v00008086d000027E0sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 (CC11/CL11)
+ pci:v00008086d000027E2*
+  ID_MODEL_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 6
+ pci:v00008086d000027E2sv00001775sd000011CC*
+- ID_MODEL_FROM_DATABASE=CC11/CL11
++ ID_MODEL_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 (CC11/CL11)
+ pci:v00008086d00002810*
+  ID_MODEL_FROM_DATABASE=82801HB/HR (ICH8/R) LPC Interface Controller
+ pci:v00008086d00002810sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801HB/HR (ICH8/R) LPC Interface Controller (P5B)
+ pci:v00008086d00002811*
+  ID_MODEL_FROM_DATABASE=82801HEM (ICH8M-E) LPC Interface Controller
+ pci:v00008086d00002811sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801HEM (ICH8M-E) LPC Interface Controller (Compaq 6910p)
+ pci:v00008086d00002811sv000017AAsd000020B6*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801HEM (ICH8M-E) LPC Interface Controller (ThinkPad T61/R61)
+ pci:v00008086d00002811sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801HEM (ICH8M-E) LPC Interface Controller (CCG-RUMBA)
+ pci:v00008086d00002812*
+  ID_MODEL_FROM_DATABASE=82801HH (ICH8DH) LPC Interface Controller
+@@ -65043,34 +65043,34 @@ pci:v00008086d00002815*
+  ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller
+ pci:v00008086d00002815sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (Aspire 5920G)
+ pci:v00008086d00002815sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (Inspiron 1420)
+ pci:v00008086d00002815sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (Compaq 6710b)
+ pci:v00008086d00002815sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (Pavilion dv6700)
+ pci:v00008086d00002815sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (Presario C700)
+ pci:v00008086d00002815sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (Vaio VGN-FZ260E)
+ pci:v00008086d00002815sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller (VAIO VGN-NR120E)
+ pci:v00008086d00002820*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) 4 port SATA Controller [IDE mode]
+ pci:v00008086d00002820sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) 4 port SATA Controller [IDE mode] (OptiPlex 745)
+ pci:v00008086d00002820sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) 4 port SATA Controller [IDE mode] (P965 Neo MS-7235 mainboard)
+ pci:v00008086d00002821*
+  ID_MODEL_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode]
+@@ -65079,10 +65079,10 @@ pci:v00008086d00002822*
+  ID_MODEL_FROM_DATABASE=82801 SATA Controller [RAID mode]
+ pci:v00008086d00002822sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801 SATA Controller [RAID mode] (Inspiron 530)
+ pci:v00008086d00002822sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801 SATA Controller [RAID mode] (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002823*
+  ID_MODEL_FROM_DATABASE=Wellsburg sSATA RAID Controller
+@@ -65091,16 +65091,16 @@ pci:v00008086d00002824*
+  ID_MODEL_FROM_DATABASE=82801HB (ICH8) 4 port SATA Controller [AHCI mode]
+ pci:v00008086d00002824sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801HB (ICH8) 4 port SATA Controller [AHCI mode] (P5B)
+ pci:v00008086d00002825*
+  ID_MODEL_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode]
+ pci:v00008086d00002825sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] (OptiPlex 745)
+ pci:v00008086d00002825sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] (P965 Neo MS-7235 mainboard)
+ pci:v00008086d00002826*
+  ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller
+@@ -65112,424 +65112,424 @@ pci:v00008086d00002828*
+  ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode]
+ pci:v00008086d00002828sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] (Inspiron 1420)
+ pci:v00008086d00002828sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] (Compaq 6710b)
+ pci:v00008086d00002828sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] (CCG-RUMBA)
+ pci:v00008086d00002829*
+  ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]
+ pci:v00008086d00002829sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (Aspire 5920G)
+ pci:v00008086d00002829sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (Compaq 6710b)
+ pci:v00008086d00002829sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (Compaq 6910p)
+ pci:v00008086d00002829sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (Pavilion dv6700)
+ pci:v00008086d00002829sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (Presario C700)
+ pci:v00008086d00002829sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (Vaio VGN-FZ260E)
+ pci:v00008086d00002829sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (VAIO VGN-NR120E)
+ pci:v00008086d00002829sv000017AAsd000020A7*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (ThinkPad T61/R61)
+ pci:v00008086d00002829sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (CCG-RUMBA)
+ pci:v00008086d0000282A*
+  ID_MODEL_FROM_DATABASE=82801 Mobile SATA Controller [RAID mode]
+ pci:v00008086d0000282Asv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=82801 Mobile SATA Controller [RAID mode] (Latitude E6510)
+ pci:v00008086d0000282Asv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=82801 Mobile SATA Controller [RAID mode] (PC1-GROOVE)
+ pci:v00008086d00002830*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1
+ pci:v00008086d00002830sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Acer Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Acer Aspire 5920G)
+ pci:v00008086d00002830sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (OptiPlex 745)
+ pci:v00008086d00002830sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Inspiron 1420)
+ pci:v00008086d00002830sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Compaq 6710b)
+ pci:v00008086d00002830sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Compaq 6910p)
+ pci:v00008086d00002830sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Pavilion dv6700)
+ pci:v00008086d00002830sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Presario C700)
+ pci:v00008086d00002830sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (P5B)
+ pci:v00008086d00002830sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (Vaio VGN-FZ260E)
+ pci:v00008086d00002830sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (VAIO VGN-NR120E)
+ pci:v00008086d00002830sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (P965 Neo MS-7235 mainboard)
+ pci:v00008086d00002830sv000017AAsd000020AA*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (ThinkPad T61/R61)
+ pci:v00008086d00002830sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 (CCG-RUMBA)
+ pci:v00008086d00002831*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2
+ pci:v00008086d00002831sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Aspire 5920G)
+ pci:v00008086d00002831sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (OptiPlex 745)
+ pci:v00008086d00002831sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Inspiron 1420)
+ pci:v00008086d00002831sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Compaq 6710b)
+ pci:v00008086d00002831sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Compaq 6910p)
+ pci:v00008086d00002831sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Pavilion dv6700)
+ pci:v00008086d00002831sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Presario C700)
+ pci:v00008086d00002831sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (P5B)
+ pci:v00008086d00002831sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (Vaio VGN-FZ260E)
+ pci:v00008086d00002831sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (VAIO VGN-NR120E)
+ pci:v00008086d00002831sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (P965 Neo MS-7235 mainboard)
+ pci:v00008086d00002831sv000017AAsd000020AA*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (ThinkPad T61/R61)
+ pci:v00008086d00002831sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 (CCG-RUMBA)
+ pci:v00008086d00002832*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3
+ pci:v00008086d00002832sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Aspire 5920G)
+ pci:v00008086d00002832sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (OptiPlex 745)
+ pci:v00008086d00002832sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Inspiron 1420)
+ pci:v00008086d00002832sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Compaq 6710b)
+ pci:v00008086d00002832sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Compaq 6910p)
+ pci:v00008086d00002832sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Pavilion dv6700)
+ pci:v00008086d00002832sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Presario C700)
+ pci:v00008086d00002832sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (P5B)
+ pci:v00008086d00002832sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (Vaio VGN-FZ260E)
+ pci:v00008086d00002832sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (VAIO VGN-NR120E)
+ pci:v00008086d00002832sv000017AAsd000020AA*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (ThinkPad T61/R61)
+ pci:v00008086d00002832sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 (CCG-RUMBA)
+ pci:v00008086d00002833*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4
+ pci:v00008086d00002833sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (P5B)
+ pci:v00008086d00002834*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4
+ pci:v00008086d00002834sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (Aspire 5920G)
+ pci:v00008086d00002834sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (OptiPlex 745)
+ pci:v00008086d00002834sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (Inspiron 1420)
+ pci:v00008086d00002834sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (Compaq 6710b)
+ pci:v00008086d00002834sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (Compaq 6910p)
+ pci:v00008086d00002834sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (Pavilion dv6700)
+ pci:v00008086d00002834sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (P5B)
+ pci:v00008086d00002834sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (Vaio VGN-FZ260E)
+ pci:v00008086d00002834sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (VAIO VGN-NR120E)
+ pci:v00008086d00002834sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (P965 Neo MS-7235 mainboard)
+ pci:v00008086d00002834sv000017AAsd000020AA*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (ThinkPad T61/R61)
+ pci:v00008086d00002834sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 (CCG-RUMBA)
+ pci:v00008086d00002835*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5
+ pci:v00008086d00002835sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Acer Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Acer Aspire 5920G)
+ pci:v00008086d00002835sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (OptiPlex 745)
+ pci:v00008086d00002835sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Inspiron 1420)
+ pci:v00008086d00002835sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Compaq 6710b)
+ pci:v00008086d00002835sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Compaq 6910p)
+ pci:v00008086d00002835sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Pavilion dv6700)
+ pci:v00008086d00002835sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (P5B)
+ pci:v00008086d00002835sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Vaio VGN-FZ260E)
+ pci:v00008086d00002835sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (VAIO VGN-NR120E)
+ pci:v00008086d00002835sv000017AAsd000020AA*
+- ID_MODEL_FROM_DATABASE=Thinkpad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (Thinkpad T61/R61)
+ pci:v00008086d00002835sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 (CCG-RUMBA)
+ pci:v00008086d00002836*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1
+ pci:v00008086d00002836sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Aspire 5920G)
+ pci:v00008086d00002836sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (OptiPlex 745)
+ pci:v00008086d00002836sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Inspiron 1420)
+ pci:v00008086d00002836sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Compaq 6710b)
+ pci:v00008086d00002836sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Compaq 6910p)
+ pci:v00008086d00002836sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Pavilion dv6700)
+ pci:v00008086d00002836sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Presario C700)
+ pci:v00008086d00002836sv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (P5B)
+ pci:v00008086d00002836sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (Vaio VGN-FZ260E)
+ pci:v00008086d00002836sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (VAIO VGN-NR120E)
+ pci:v00008086d00002836sv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (P965 Neo MS-7235 mainboard)
+ pci:v00008086d00002836sv000017AAsd000020AB*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (ThinkPad T61/R61)
+ pci:v00008086d00002836sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 (CCG-RUMBA)
+ pci:v00008086d0000283A*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2
+ pci:v00008086d0000283Asv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Acer Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (Acer Aspire 5920G)
+ pci:v00008086d0000283Asv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (OptiPlex 745)
+ pci:v00008086d0000283Asv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (Inspiron 1420)
+ pci:v00008086d0000283Asv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (Compaq 6710b)
+ pci:v00008086d0000283Asv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (Compaq 6910p)
+ pci:v00008086d0000283Asv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (Pavilion dv6700)
+ pci:v00008086d0000283Asv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (P5B)
+ pci:v00008086d0000283Asv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (Vaio VGN-FZ260E)
+ pci:v00008086d0000283Asv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (VAIO VGN-NR120E)
+ pci:v00008086d0000283Asv000017AAsd000020AB*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (ThinkPad T61/R61)
+ pci:v00008086d0000283Asv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 (CCG-RUMBA)
+ pci:v00008086d0000283E*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller
+ pci:v00008086d0000283Esv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (Aspire 5920G)
+ pci:v00008086d0000283Esv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (OptiPlex 745)
+ pci:v00008086d0000283Esv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (Inspiron 1420)
+ pci:v00008086d0000283Esv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (Presario C700)
+ pci:v00008086d0000283Esv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (P5B)
+ pci:v00008086d0000283Esv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (Vaio VGN-FZ260E)
+ pci:v00008086d0000283Esv0000104Dsd00009008*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-SZ79SN_C
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (Vaio VGN-SZ79SN_C)
+ pci:v00008086d0000283Esv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (VAIO VGN-NR120E)
+ pci:v00008086d0000283Esv00001462sd00007235*
+- ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (P965 Neo MS-7235 mainboard)
+ pci:v00008086d0000283Esv000017AAsd000020A9*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (ThinkPad T61/R61)
+ pci:v00008086d0000283Esv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller (CCG-RUMBA)
+ pci:v00008086d0000283F*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1
+ pci:v00008086d0000283Fsv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1 (OptiPlex 745)
+ pci:v00008086d0000283Fsv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1 (Compaq 6910p)
+ pci:v00008086d0000283Fsv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1 (VAIO VGN-NR120E)
+ pci:v00008086d0000283Fsv000017AAsd000020AD*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1 (ThinkPad T61/R61)
+ pci:v00008086d00002841*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 2
+ pci:v00008086d00002841sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 2 (Compaq 6910p)
+ pci:v00008086d00002841sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 2 (VAIO VGN-NR120E)
+ pci:v00008086d00002841sv000017AAsd000020AD*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 2 (ThinkPad T61/R61)
+ pci:v00008086d00002843*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 3
+ pci:v00008086d00002843sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 3 (VAIO VGN-NR120E)
+ pci:v00008086d00002843sv000017AAsd000020AD*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 3 (ThinkPad T61/R61)
+ pci:v00008086d00002845*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 4
+ pci:v00008086d00002845sv000017AAsd000020AD*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 4 (ThinkPad T61/R61)
+ pci:v00008086d00002847*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 5
+ pci:v00008086d00002847sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 5 (OptiPlex 745)
+ pci:v00008086d00002847sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 5 (Compaq 6910p)
+ pci:v00008086d00002847sv000017AAsd000020AD*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 5 (ThinkPad T61/R61)
+ pci:v00008086d00002849*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 6
+@@ -65538,70 +65538,70 @@ pci:v00008086d0000284B*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller
+ pci:v00008086d0000284Bsv00001025sd0000011F*
+- ID_MODEL_FROM_DATABASE=Realtek ALC268 audio codec
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Realtek ALC268 audio codec)
+ pci:v00008086d0000284Bsv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Aspire 5920G)
+ pci:v00008086d0000284Bsv00001025sd00000145*
+- ID_MODEL_FROM_DATABASE=Realtek ALC889 (Aspire 8920G w. Dolby Theather)
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Realtek ALC889 (Aspire 8920G w. Dolby Theather))
+ pci:v00008086d0000284Bsv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (OptiPlex 745)
+ pci:v00008086d0000284Bsv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Inspiron 1420)
+ pci:v00008086d0000284Bsv00001028sd000001F9*
+- ID_MODEL_FROM_DATABASE=Dell Latitude D630
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Dell Latitude D630)
+ pci:v00008086d0000284Bsv00001028sd000001FF*
+- ID_MODEL_FROM_DATABASE=Dell Precision M4300
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Dell Precision M4300)
+ pci:v00008086d0000284Bsv00001028sd00000256*
+- ID_MODEL_FROM_DATABASE=Studio 1735
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Studio 1735)
+ pci:v00008086d0000284Bsv0000103Csd00002802*
+- ID_MODEL_FROM_DATABASE=HP Compaq dc7700p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (HP Compaq dc7700p)
+ pci:v00008086d0000284Bsv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Compaq 6710b)
+ pci:v00008086d0000284Bsv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Compaq 6910p)
+ pci:v00008086d0000284Bsv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Pavilion dv6700)
+ pci:v00008086d0000284Bsv00001043sd00001339*
+- ID_MODEL_FROM_DATABASE=Asus M51S series
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Asus M51S series)
+ pci:v00008086d0000284Bsv00001043sd000081EC*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (P5B)
+ pci:v00008086d0000284Bsv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Vaio VGN-FZ260E)
+ pci:v00008086d0000284Bsv0000104Dsd00009008*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-SZ79SN_C
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Vaio VGN-SZ79SN_C)
+ pci:v00008086d0000284Bsv0000104Dsd00009016*
+- ID_MODEL_FROM_DATABASE=Sony VAIO VGN-AR51M
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Sony VAIO VGN-AR51M)
+ pci:v00008086d0000284Bsv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (VAIO VGN-NR120E)
+ pci:v00008086d0000284Bsv000014F1sd00005051*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Presario C700)
+ pci:v00008086d0000284Bsv000017AAsd000020AC*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (ThinkPad T61/R61)
+ pci:v00008086d0000284Bsv00008384sd00007616*
+- ID_MODEL_FROM_DATABASE=Dell Vostro 1400
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (Dell Vostro 1400)
+ pci:v00008086d0000284Bsv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller (CCG-RUMBA)
+ pci:v00008086d0000284F*
+  ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) Thermal Reporting Device
+@@ -65610,34 +65610,34 @@ pci:v00008086d00002850*
+  ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller
+ pci:v00008086d00002850sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Aspire 5920G
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Aspire 5920G)
+ pci:v00008086d00002850sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Inspiron 1420)
+ pci:v00008086d00002850sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Compaq 6710b)
+ pci:v00008086d00002850sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Compaq 6910p)
+ pci:v00008086d00002850sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Pavilion dv6700)
+ pci:v00008086d00002850sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Presario C700)
+ pci:v00008086d00002850sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (Vaio VGN-FZ260E)
+ pci:v00008086d00002850sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (VAIO VGN-NR120E)
+ pci:v00008086d00002850sv000017AAsd000020A6*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (ThinkPad T61/R61)
+ pci:v00008086d00002850sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller (CCG-RUMBA)
+ pci:v00008086d00002912*
+  ID_MODEL_FROM_DATABASE=82801IH (ICH9DH) LPC Interface Controller
+@@ -65646,40 +65646,40 @@ pci:v00008086d00002914*
+  ID_MODEL_FROM_DATABASE=82801IO (ICH9DO) LPC Interface Controller
+ pci:v00008086d00002914sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801IO (ICH9DO) LPC Interface Controller (Optiplex 755)
+ pci:v00008086d00002916*
+  ID_MODEL_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller
+ pci:v00008086d00002916sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller (Inspiron 530)
+ pci:v00008086d00002916sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002916sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller (P5K PRO Motherboard)
+ pci:v00008086d00002916sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller (Desktop Board DP35DP)
+ pci:v00008086d00002917*
+  ID_MODEL_FROM_DATABASE=ICH9M-E LPC Interface Controller
+ pci:v00008086d00002917sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=ICH9M-E LPC Interface Controller (CCM-BOOGIE)
+ pci:v00008086d00002918*
+  ID_MODEL_FROM_DATABASE=82801IB (ICH9) LPC Interface Controller
+ pci:v00008086d00002918sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 82801IB (ICH9) LPC Interface Controller
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) LPC Interface Controller (PowerEdge R610 82801IB (ICH9) LPC Interface Controller)
+ pci:v00008086d00002918sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) LPC Interface Controller (G33/P35 Neo)
+ pci:v00008086d00002918sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) LPC Interface Controller (QEMU Virtual Machine)
+ pci:v00008086d00002919*
+  ID_MODEL_FROM_DATABASE=ICH9M LPC Interface Controller
+@@ -65688,46 +65688,46 @@ pci:v00008086d00002920*
+  ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode]
+ pci:v00008086d00002920sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (Inspiron 530)
+ pci:v00008086d00002920sv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard SATA Controller
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (PowerEdge R300 onboard SATA Controller)
+ pci:v00008086d00002920sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard SATA Controller
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (PowerEdge T300 onboard SATA Controller)
+ pci:v00008086d00002920sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (Optiplex 755)
+ pci:v00008086d00002920sv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard SATA Controller
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (PowerEdge R200 onboard SATA Controller)
+ pci:v00008086d00002920sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] (P5K PRO Motherboard)
+ pci:v00008086d00002921*
+  ID_MODEL_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode]
+ pci:v00008086d00002921sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] (PowerEdge R710 SATA IDE Controller)
+ pci:v00008086d00002921sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] (PowerEdge R610 SATA IDE Controller)
+ pci:v00008086d00002921sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] (PowerEdge T610 SATA IDE Controller)
+ pci:v00008086d00002921sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] (G33/P35 Neo)
+ pci:v00008086d00002922*
+  ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
+ pci:v00008086d00002922sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (QEMU Virtual Machine)
+ pci:v00008086d00002922sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] (Desktop Board DP35DP)
+ pci:v00008086d00002923*
+  ID_MODEL_FROM_DATABASE=82801IB (ICH9) 4 port SATA Controller [AHCI mode]
+@@ -65736,31 +65736,31 @@ pci:v00008086d00002925*
+  ID_MODEL_FROM_DATABASE=82801IR/IO (ICH9R/DO) SATA Controller [RAID mode]
+ pci:v00008086d00002925sv00001734sd000010E0*
+- ID_MODEL_FROM_DATABASE=System Board D2542
++ ID_MODEL_FROM_DATABASE=82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] (System Board D2542)
+ pci:v00008086d00002925sv00008086sd00002925*
+- ID_MODEL_FROM_DATABASE=System Board D2542
++ ID_MODEL_FROM_DATABASE=82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] (System Board D2542)
+ pci:v00008086d00002926*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode]
+ pci:v00008086d00002926sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (Inspiron 530)
+ pci:v00008086d00002926sv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard SATA Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (PowerEdge R300 onboard SATA Controller)
+ pci:v00008086d00002926sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard SATA Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (PowerEdge T300 onboard SATA Controller)
+ pci:v00008086d00002926sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (Optiplex 755)
+ pci:v00008086d00002926sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (P5K PRO Motherboard)
+ pci:v00008086d00002926sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] (G33/P35 Neo)
+ pci:v00008086d00002928*
+  ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode]
+@@ -65769,10 +65769,10 @@ pci:v00008086d00002929*
+  ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode]
+ pci:v00008086d00002929sv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=dv6-1190en
++ ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] (dv6-1190en)
+ pci:v00008086d00002929sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] (CCM-BOOGIE)
+ pci:v00008086d0000292C*
+  ID_MODEL_FROM_DATABASE=82801IEM (ICH9M-E) SATA Controller [RAID mode]
+@@ -65781,511 +65781,511 @@ pci:v00008086d0000292D*
+  ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode]
+ pci:v00008086d0000292Dsv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] (CCM-BOOGIE)
+ pci:v00008086d00002930*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller
+ pci:v00008086d00002930sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (Inspiron 530)
+ pci:v00008086d00002930sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (Optiplex 755)
+ pci:v00008086d00002930sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002930sv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=dv6-1190en
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (dv6-1190en)
+ pci:v00008086d00002930sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (P5K PRO Motherboard)
+ pci:v00008086d00002930sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (G33/P35 Neo)
+ pci:v00008086d00002930sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (QEMU Virtual Machine)
+ pci:v00008086d00002930sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (Desktop Board DP35DP)
+ pci:v00008086d00002930sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller (CCM-BOOGIE)
+ pci:v00008086d00002932*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) Thermal Subsystem
+ pci:v00008086d00002932sv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=dv6-1190en
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) Thermal Subsystem (dv6-1190en)
+ pci:v00008086d00002934*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1
+ pci:v00008086d00002934sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (Inspiron 530)
+ pci:v00008086d00002934sv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge R300 onboard UHCI)
+ pci:v00008086d00002934sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge T300 onboard UHCI)
+ pci:v00008086d00002934sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (Optiplex 755)
+ pci:v00008086d00002934sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge R710 USB UHCI Controller)
+ pci:v00008086d00002934sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge R610 USB UHCI Controller)
+ pci:v00008086d00002934sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge T610 USB UHCI Controller)
+ pci:v00008086d00002934sv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge R200 onboard UHCI)
+ pci:v00008086d00002934sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge M610 onboard UHCI)
+ pci:v00008086d00002934sv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (PowerEdge M710 USB UHCI Controller)
+ pci:v00008086d00002934sv00001028sd00002011*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (Optiplex 755)
+ pci:v00008086d00002934sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002934sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (P5K PRO Motherboard)
+ pci:v00008086d00002934sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (G33/P35 Neo)
+ pci:v00008086d00002934sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (QEMU Virtual Machine)
+ pci:v00008086d00002934sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (Desktop Board DP35DP)
+ pci:v00008086d00002934sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 (CCM-BOOGIE)
+ pci:v00008086d00002935*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2
+ pci:v00008086d00002935sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (Inspiron 530)
+ pci:v00008086d00002935sv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge R300 onboard UHCI)
+ pci:v00008086d00002935sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge T300 onboard UHCI)
+ pci:v00008086d00002935sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (Optiplex 755)
+ pci:v00008086d00002935sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge R710 USB UHCI Controller)
+ pci:v00008086d00002935sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge R610 USB UHCI Controller)
+ pci:v00008086d00002935sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge T610 USB UHCI Controller)
+ pci:v00008086d00002935sv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge R200 onboard UHCI)
+ pci:v00008086d00002935sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge M610 onboard UHCI)
+ pci:v00008086d00002935sv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (PowerEdge M710 USB UHCI Controller)
+ pci:v00008086d00002935sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002935sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (P5K PRO Motherboard)
+ pci:v00008086d00002935sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (G33/P35 Neo)
+ pci:v00008086d00002935sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (QEMU Virtual Machine)
+ pci:v00008086d00002935sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (Desktop Board DP35DP)
+ pci:v00008086d00002935sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 (CCM-BOOGIE)
+ pci:v00008086d00002936*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3
+ pci:v00008086d00002936sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (Inspiron 530)
+ pci:v00008086d00002936sv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (PowerEdge R300 onboard UHCI)
+ pci:v00008086d00002936sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (PowerEdge T300 onboard UHCI)
+ pci:v00008086d00002936sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (Optiplex 755)
+ pci:v00008086d00002936sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (PowerEdge T610 USB UHCI Controller)
+ pci:v00008086d00002936sv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (PowerEdge R200 onboard UHCI)
+ pci:v00008086d00002936sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (PowerEdge M610 onboard UHCI)
+ pci:v00008086d00002936sv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (PowerEdge M710 USB UHCI Controller)
+ pci:v00008086d00002936sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002936sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (P5K PRO Motherboard)
+ pci:v00008086d00002936sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (G33/P35 Neo)
+ pci:v00008086d00002936sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (QEMU Virtual Machine)
+ pci:v00008086d00002936sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (Desktop Board DP35DP)
+ pci:v00008086d00002936sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 (CCM-BOOGIE)
+ pci:v00008086d00002937*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4
+ pci:v00008086d00002937sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (Inspiron 530)
+ pci:v00008086d00002937sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (Optiplex 755)
+ pci:v00008086d00002937sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (PowerEdge R710 USB UHCI Controller)
+ pci:v00008086d00002937sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (PowerEdge R610 USB UHCI Controller)
+ pci:v00008086d00002937sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (PowerEdge T610 USB UHCI Controller)
+ pci:v00008086d00002937sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (PowerEdge M610 onboard UHCI)
+ pci:v00008086d00002937sv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (PowerEdge M710 USB UHCI Controller)
+ pci:v00008086d00002937sv00001028sd00002011*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (Optiplex 755)
+ pci:v00008086d00002937sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002937sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (P5K PRO Motherboard)
+ pci:v00008086d00002937sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (G33/P35 Neo)
+ pci:v00008086d00002937sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (QEMU Virtual Machine)
+ pci:v00008086d00002937sv00008086sd00002937*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (Optiplex 755)
+ pci:v00008086d00002937sv00008086sd00002942*
+- ID_MODEL_FROM_DATABASE=828011 (ICH9 Family ) USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (828011 (ICH9 Family ) USB UHCI Controller)
+ pci:v00008086d00002937sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (Desktop Board DP35DP)
+ pci:v00008086d00002937sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 (CCM-BOOGIE)
+ pci:v00008086d00002938*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5
+ pci:v00008086d00002938sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (Inspiron 530)
+ pci:v00008086d00002938sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (Optiplex 755)
+ pci:v00008086d00002938sv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (PowerEdge R710 USB UHCI Controller)
+ pci:v00008086d00002938sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (PowerEdge R610 USB UHCI Controller)
+ pci:v00008086d00002938sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (PowerEdge T610 USB UHCI Controller)
+ pci:v00008086d00002938sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (PowerEdge M610 onboard UHCI)
+ pci:v00008086d00002938sv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (PowerEdge M710 USB UHCI Controller)
+ pci:v00008086d00002938sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002938sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (P5K PRO Motherboard)
+ pci:v00008086d00002938sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (G33/P35 Neo)
+ pci:v00008086d00002938sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (QEMU Virtual Machine)
+ pci:v00008086d00002938sv00008086sd00002938*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (Optiplex 755)
+ pci:v00008086d00002938sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (Desktop Board DP35DP)
+ pci:v00008086d00002938sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 (CCM-BOOGIE)
+ pci:v00008086d00002939*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6
+ pci:v00008086d00002939sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (Inspiron 530)
+ pci:v00008086d00002939sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (PowerEdge T300 onboard UHCI)
+ pci:v00008086d00002939sv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (PowerEdge T610 USB UHCI Controller)
+ pci:v00008086d00002939sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002939sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (P5K PRO Motherboard)
+ pci:v00008086d00002939sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (G33/P35 Neo)
+ pci:v00008086d00002939sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (QEMU Virtual Machine)
+ pci:v00008086d00002939sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (Desktop Board DP35DP)
+ pci:v00008086d00002939sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 (CCM-BOOGIE)
+ pci:v00008086d0000293A*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1
+ pci:v00008086d0000293Asv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (Inspiron 530)
+ pci:v00008086d0000293Asv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge R300 onboard EHCI)
+ pci:v00008086d0000293Asv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge T300 onboard EHCI)
+ pci:v00008086d0000293Asv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (Optiplex 755)
+ pci:v00008086d0000293Asv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge R710 USB EHCI Controller)
+ pci:v00008086d0000293Asv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge R610 USB EHCI Controller)
+ pci:v00008086d0000293Asv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge T610 USB EHCI Controller)
+ pci:v00008086d0000293Asv00001028sd0000023C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge R200 onboard EHCI)
+ pci:v00008086d0000293Asv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge M610 onboard EHCI)
+ pci:v00008086d0000293Asv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (PowerEdge M710 USB EHCI Controller)
+ pci:v00008086d0000293Asv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d0000293Asv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (P5K PRO Motherboard)
+ pci:v00008086d0000293Asv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (G33/P35 Neo)
+ pci:v00008086d0000293Asv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (QEMU Virtual Machine)
+ pci:v00008086d0000293Asv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (Desktop Board DP35DP)
+ pci:v00008086d0000293Asv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 (CCM-BOOGIE)
+ pci:v00008086d0000293C*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2
+ pci:v00008086d0000293Csv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (Inspiron 530)
+ pci:v00008086d0000293Csv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (Optiplex 755)
+ pci:v00008086d0000293Csv00001028sd00000235*
+- ID_MODEL_FROM_DATABASE=PowerEdge R710 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (PowerEdge R710 USB EHCI Controller)
+ pci:v00008086d0000293Csv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (PowerEdge R610 USB EHCI Controller)
+ pci:v00008086d0000293Csv00001028sd00000237*
+- ID_MODEL_FROM_DATABASE=PowerEdge T610 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (PowerEdge T610 USB EHCI Controller)
+ pci:v00008086d0000293Csv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard EHCI
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (PowerEdge M610 onboard EHCI)
+ pci:v00008086d0000293Csv00001028sd0000029C*
+- ID_MODEL_FROM_DATABASE=PowerEdge M710 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (PowerEdge M710 USB EHCI Controller)
+ pci:v00008086d0000293Csv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d0000293Csv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (P5K PRO Motherboard)
+ pci:v00008086d0000293Csv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (G33/P35 Neo)
+ pci:v00008086d0000293Csv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (QEMU Virtual Machine)
+ pci:v00008086d0000293Csv00008086sd0000293C*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (Optiplex 755)
+ pci:v00008086d0000293Csv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (Desktop Board DP35DP)
+ pci:v00008086d0000293Csv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 (CCM-BOOGIE)
+ pci:v00008086d0000293E*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller
+ pci:v00008086d0000293Esv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (Inspiron 530)
+ pci:v00008086d0000293Esv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (Optiplex 755)
+ pci:v00008086d0000293Esv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (Asus IPIBL-LB Motherboard)
+ pci:v00008086d0000293Esv0000103Csd00003628*
+- ID_MODEL_FROM_DATABASE=dv6-1190en
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (dv6-1190en)
+ pci:v00008086d0000293Esv00001043sd0000829F*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (P5K PRO Motherboard)
+ pci:v00008086d0000293Esv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (G33/P35 Neo)
+ pci:v00008086d0000293Esv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (QEMU Virtual Machine)
+ pci:v00008086d0000293Esv00008086sd0000293E*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (Optiplex 755)
+ pci:v00008086d0000293Esv00008086sd00002940*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (Optiplex 755)
+ pci:v00008086d0000293Esv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller (CCM-BOOGIE)
+ pci:v00008086d00002940*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1
+ pci:v00008086d00002940sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 (Inspiron 530)
+ pci:v00008086d00002940sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 (Optiplex 755)
+ pci:v00008086d00002940sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002940sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 (P5K PRO Motherboard)
+ pci:v00008086d00002940sv00008086sd00002940*
+- ID_MODEL_FROM_DATABASE=Optiplex 755
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 (Optiplex 755)
+ pci:v00008086d00002942*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 2
+ pci:v00008086d00002942sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 2 (Inspiron 530)
+ pci:v00008086d00002944*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 3
+ pci:v00008086d00002944sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 3 (Inspiron 530)
+ pci:v00008086d00002944sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 3 (Asus IPIBL-LB Motherboard)
+ pci:v00008086d00002946*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 4
+ pci:v00008086d00002946sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 4 (Inspiron 530)
+ pci:v00008086d00002948*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 5
+ pci:v00008086d00002948sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 5 (Inspiron 530)
+ pci:v00008086d00002948sv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 5 (P5K PRO Motherboard)
+ pci:v00008086d0000294A*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 6
+ pci:v00008086d0000294Asv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 6 (Inspiron 530)
+ pci:v00008086d0000294Asv00001043sd00008277*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 6 (P5K PRO Motherboard)
+ pci:v00008086d0000294C*
+  ID_MODEL_FROM_DATABASE=82566DC-2 Gigabit Network Connection
+ pci:v00008086d0000294Csv000017AAsd0000302E*
+- ID_MODEL_FROM_DATABASE=82566DM-2 Gigabit Network Connection
++ ID_MODEL_FROM_DATABASE=82566DC-2 Gigabit Network Connection (82566DM-2 Gigabit Network Connection)
+ pci:v00008086d00002970*
+  ID_MODEL_FROM_DATABASE=82946GZ/PL/GL Memory Controller Hub
+@@ -66330,7 +66330,7 @@ pci:v00008086d00002990*
+  ID_MODEL_FROM_DATABASE=82Q963/Q965 Memory Controller Hub
+ pci:v00008086d00002990sv00001028sd000001DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 745
++ ID_MODEL_FROM_DATABASE=82Q963/Q965 Memory Controller Hub (OptiPlex 745)
+ pci:v00008086d00002991*
+  ID_MODEL_FROM_DATABASE=82Q963/Q965 PCI Express Root Port
+@@ -66357,10 +66357,10 @@ pci:v00008086d000029A0*
+  ID_MODEL_FROM_DATABASE=82P965/G965 Memory Controller Hub
+ pci:v00008086d000029A0sv00001043sd000081EA*
+- ID_MODEL_FROM_DATABASE=P5B
++ ID_MODEL_FROM_DATABASE=82P965/G965 Memory Controller Hub (P5B)
+ pci:v00008086d000029A0sv00001462sd00007276*
+- ID_MODEL_FROM_DATABASE=MS-7276 [G965MDH]
++ ID_MODEL_FROM_DATABASE=82P965/G965 Memory Controller Hub (MS-7276 [G965MDH])
+ pci:v00008086d000029A1*
+  ID_MODEL_FROM_DATABASE=82P965/G965 PCI Express Root Port
+@@ -66369,7 +66369,7 @@ pci:v00008086d000029A2*
+  ID_MODEL_FROM_DATABASE=82G965 Integrated Graphics Controller
+ pci:v00008086d000029A2sv00001462sd00007276*
+- ID_MODEL_FROM_DATABASE=MS-7276 [G965MDH]
++ ID_MODEL_FROM_DATABASE=82G965 Integrated Graphics Controller (MS-7276 [G965MDH])
+ pci:v00008086d000029A3*
+  ID_MODEL_FROM_DATABASE=82G965 Integrated Graphics Controller
+@@ -66390,31 +66390,31 @@ pci:v00008086d000029B0*
+  ID_MODEL_FROM_DATABASE=82Q35 Express DRAM Controller
+ pci:v00008086d000029B0sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express DRAM Controller (OptiPlex 755)
+ pci:v00008086d000029B1*
+  ID_MODEL_FROM_DATABASE=82Q35 Express PCI Express Root Port
+ pci:v00008086d000029B1sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express PCI Express Root Port (OptiPlex 755)
+ pci:v00008086d000029B2*
+  ID_MODEL_FROM_DATABASE=82Q35 Express Integrated Graphics Controller
+ pci:v00008086d000029B2sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express Integrated Graphics Controller (OptiPlex 755)
+ pci:v00008086d000029B3*
+  ID_MODEL_FROM_DATABASE=82Q35 Express Integrated Graphics Controller
+ pci:v00008086d000029B3sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express Integrated Graphics Controller (OptiPlex 755)
+ pci:v00008086d000029B4*
+  ID_MODEL_FROM_DATABASE=82Q35 Express MEI Controller
+ pci:v00008086d000029B4sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express MEI Controller (OptiPlex 755)
+ pci:v00008086d000029B5*
+  ID_MODEL_FROM_DATABASE=82Q35 Express MEI Controller
+@@ -66423,70 +66423,70 @@ pci:v00008086d000029B6*
+  ID_MODEL_FROM_DATABASE=82Q35 Express PT IDER Controller
+ pci:v00008086d000029B6sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express PT IDER Controller (OptiPlex 755)
+ pci:v00008086d000029B7*
+  ID_MODEL_FROM_DATABASE=82Q35 Express Serial KT Controller
+ pci:v00008086d000029B7sv00001028sd00000211*
+- ID_MODEL_FROM_DATABASE=OptiPlex 755
++ ID_MODEL_FROM_DATABASE=82Q35 Express Serial KT Controller (OptiPlex 755)
+ pci:v00008086d000029C0*
+  ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller
+ pci:v00008086d000029C0sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (Inspiron 530)
+ pci:v00008086d000029C0sv0000103Csd00002A6F*
+- ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (Asus IPIBL-LB Motherboard)
+ pci:v00008086d000029C0sv00001043sd00008276*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (P5K PRO Motherboard)
+ pci:v00008086d000029C0sv00001043sd000082B0*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (P5KPL-VM Motherboard)
+ pci:v00008086d000029C0sv00001462sd00007360*
+- ID_MODEL_FROM_DATABASE=G33/P35 Neo
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (G33/P35 Neo)
+ pci:v00008086d000029C0sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (QEMU Virtual Machine)
+ pci:v00008086d000029C0sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller (Desktop Board DP35DP)
+ pci:v00008086d000029C1*
+  ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express PCI Express Root Port
+ pci:v00008086d000029C1sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express PCI Express Root Port (Inspiron 530)
+ pci:v00008086d000029C1sv00001043sd00008276*
+- ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express PCI Express Root Port (P5K PRO Motherboard)
+ pci:v00008086d000029C2*
+  ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller
+ pci:v00008086d000029C2sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller (Inspiron 530)
+ pci:v00008086d000029C2sv00001043sd000082B0*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller (P5KPL-VM Motherboard)
+ pci:v00008086d000029C3*
+  ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller
+ pci:v00008086d000029C3sv00001028sd0000020D*
+- ID_MODEL_FROM_DATABASE=Inspiron 530
++ ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller (Inspiron 530)
+ pci:v00008086d000029C3sv00001043sd000082B0*
+- ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard
++ ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller (P5KPL-VM Motherboard)
+ pci:v00008086d000029C4*
+  ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller
+ pci:v00008086d000029C4sv00008086sd00005044*
+- ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
++ ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller (Desktop Board DP35DP)
+ pci:v00008086d000029C5*
+  ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller
+@@ -66570,37 +66570,37 @@ pci:v00008086d00002A00*
+  ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub
+ pci:v00008086d00002A00sv00001025sd00000121*
+- ID_MODEL_FROM_DATABASE=Acer Aspire 5920G
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Acer Aspire 5920G)
+ pci:v00008086d00002A00sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Inspiron 1420)
+ pci:v00008086d00002A00sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Compaq 6710b)
+ pci:v00008086d00002A00sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Compaq 6910p)
+ pci:v00008086d00002A00sv0000103Csd000030CC*
+- ID_MODEL_FROM_DATABASE=Pavilion dv6700
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Pavilion dv6700)
+ pci:v00008086d00002A00sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Presario C700)
+ pci:v00008086d00002A00sv0000104Dsd00009005*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (Vaio VGN-FZ260E)
+ pci:v00008086d00002A00sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (VAIO VGN-NR120E)
+ pci:v00008086d00002A00sv000017AAsd000020B1*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (ThinkPad T61)
+ pci:v00008086d00002A00sv000017AAsd000020B3*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (ThinkPad T61/R61)
+ pci:v00008086d00002A00sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub (CCG-RUMBA)
+ pci:v00008086d00002A01*
+  ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 PCI Express Root Port
+@@ -66609,52 +66609,52 @@ pci:v00008086d00002A02*
+  ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary)
+ pci:v00008086d00002A02sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Inspiron 1420
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (Inspiron 1420)
+ pci:v00008086d00002A02sv00001028sd000001F9*
+- ID_MODEL_FROM_DATABASE=Latitude D630
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (Latitude D630)
+ pci:v00008086d00002A02sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (Compaq 6710b)
+ pci:v00008086d00002A02sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (Presario C700)
+ pci:v00008086d00002A02sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (VAIO VGN-NR120E)
+ pci:v00008086d00002A02sv000017AAsd000020B5*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (ThinkPad T61/R61)
+ pci:v00008086d00002A02sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) (CCG-RUMBA)
+ pci:v00008086d00002A03*
+  ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary)
+ pci:v00008086d00002A03sv00001028sd000001F3*
+- ID_MODEL_FROM_DATABASE=Dell Inspiron 1420
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) (Dell Inspiron 1420)
+ pci:v00008086d00002A03sv0000103Csd000030C0*
+- ID_MODEL_FROM_DATABASE=Compaq 6710b
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) (Compaq 6710b)
+ pci:v00008086d00002A03sv0000103Csd000030D9*
+- ID_MODEL_FROM_DATABASE=Presario C700
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) (Presario C700)
+ pci:v00008086d00002A03sv0000104Dsd0000902D*
+- ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) (VAIO VGN-NR120E)
+ pci:v00008086d00002A03sv000017AAsd000020B5*
+- ID_MODEL_FROM_DATABASE=ThinkPad T61/R61
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) (ThinkPad T61/R61)
+ pci:v00008086d00002A03sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) (CCG-RUMBA)
+ pci:v00008086d00002A04*
+  ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 MEI Controller
+ pci:v00008086d00002A04sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 MEI Controller (Compaq 6910p)
+ pci:v00008086d00002A05*
+  ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 MEI Controller
+@@ -66663,19 +66663,19 @@ pci:v00008086d00002A06*
+  ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 PT IDER Controller
+ pci:v00008086d00002A06sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 PT IDER Controller (Compaq 6910p)
+ pci:v00008086d00002A07*
+  ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 KT Controller
+ pci:v00008086d00002A07sv0000103Csd000030C1*
+- ID_MODEL_FROM_DATABASE=Compaq 6910p
++ ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 KT Controller (Compaq 6910p)
+ pci:v00008086d00002A10*
+  ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Memory Controller Hub
+ pci:v00008086d00002A10sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Memory Controller Hub (CCG-RUMBA)
+ pci:v00008086d00002A11*
+  ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 PCI Express Root Port
+@@ -66684,13 +66684,13 @@ pci:v00008086d00002A12*
+  ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller
+ pci:v00008086d00002A12sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller (CCG-RUMBA)
+ pci:v00008086d00002A13*
+  ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller
+ pci:v00008086d00002A13sv0000E4BFsd0000CC47*
+- ID_MODEL_FROM_DATABASE=CCG-RUMBA
++ ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller (CCG-RUMBA)
+ pci:v00008086d00002A14*
+  ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 MEI Controller
+@@ -66708,25 +66708,25 @@ pci:v00008086d00002A40*
+  ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Memory Controller Hub
+ pci:v00008086d00002A40sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Memory Controller Hub (CCM-BOOGIE)
+ pci:v00008086d00002A41*
+  ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset PCI Express Graphics Port
+ pci:v00008086d00002A41sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset PCI Express Graphics Port (CCM-BOOGIE)
+ pci:v00008086d00002A42*
+  ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller
+ pci:v00008086d00002A42sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller (CCM-BOOGIE)
+ pci:v00008086d00002A43*
+  ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller
+ pci:v00008086d00002A43sv0000E4BFsd0000CC4D*
+- ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++ ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller (CCM-BOOGIE)
+ pci:v00008086d00002A44*
+  ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset MEI Controller
+@@ -67251,34 +67251,34 @@ pci:v00008086d00002E20*
+  ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller
+ pci:v00008086d00002E20sv00001028sd00000283*
+- ID_MODEL_FROM_DATABASE=Dell Vostro 220
++ ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller (Dell Vostro 220)
+ pci:v00008086d00002E20sv00001043sd000082D3*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller (P5Q Deluxe Motherboard)
+ pci:v00008086d00002E20sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard
++ ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller (GA-EP45-DS5/GA-EG45M-DS2H Motherboard)
+ pci:v00008086d00002E21*
+  ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port
+ pci:v00008086d00002E21sv00001043sd000082D3*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port (P5Q Deluxe Motherboard)
+ pci:v00008086d00002E21sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00002E22*
+  ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller
+ pci:v00008086d00002E22sv00001458sd0000D000*
+- ID_MODEL_FROM_DATABASE=GA-EG45M-DS2H Mainboard
++ ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller (GA-EG45M-DS2H Mainboard)
+ pci:v00008086d00002E23*
+  ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller
+ pci:v00008086d00002E23sv00001458sd0000D000*
+- ID_MODEL_FROM_DATABASE=GA-EG45M-DS2H Mainboard
++ ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller (GA-EG45M-DS2H Mainboard)
+ pci:v00008086d00002E24*
+  ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller
+@@ -67917,16 +67917,16 @@ pci:v00008086d00003200*
+  ID_MODEL_FROM_DATABASE=GD31244 PCI-X SATA HBA
+ pci:v00008086d00003200sv00001775sd0000C200*
+- ID_MODEL_FROM_DATABASE=C2K onboard SATA host bus adapter
++ ID_MODEL_FROM_DATABASE=GD31244 PCI-X SATA HBA (C2K onboard SATA host bus adapter)
+ pci:v00008086d00003310*
+  ID_MODEL_FROM_DATABASE=IOP348 I/O Processor
+ pci:v00008086d00003310sv00001054sd00003030*
+- ID_MODEL_FROM_DATABASE=HRA380 Hitachi RAID Adapter to PCIe
++ ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (HRA380 Hitachi RAID Adapter to PCIe)
+ pci:v00008086d00003310sv00001054sd00003034*
+- ID_MODEL_FROM_DATABASE=HRA381 Hitachi RAID Adapter to PCIe
++ ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (HRA381 Hitachi RAID Adapter to PCIe)
+ pci:v00008086d00003313*
+  ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA
+@@ -67944,31 +67944,31 @@ pci:v00008086d00003340*
+  ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller
+ pci:v00008086d00003340sv00001014sd00000529*
+- ID_MODEL_FROM_DATABASE=Thinkpad T40 series
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (Thinkpad T40 series)
+ pci:v00008086d00003340sv00001025sd0000005A*
+- ID_MODEL_FROM_DATABASE=TravelMate 290
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (TravelMate 290)
+ pci:v00008086d00003340sv0000103Csd0000088C*
+- ID_MODEL_FROM_DATABASE=NC8000 laptop
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (NC8000 laptop)
+ pci:v00008086d00003340sv0000103Csd00000890*
+- ID_MODEL_FROM_DATABASE=NC6000 laptop
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (NC6000 laptop)
+ pci:v00008086d00003340sv0000103Csd000008B0*
+- ID_MODEL_FROM_DATABASE=tc1100 tablet
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (tc1100 tablet)
+ pci:v00008086d00003340sv0000144Dsd0000C005*
+- ID_MODEL_FROM_DATABASE=X10 Laptop
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (X10 Laptop)
+ pci:v00008086d00003340sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30/P35 notebook
++ ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller (P30/P35 notebook)
+ pci:v00008086d00003341*
+  ID_MODEL_FROM_DATABASE=82855PM Processor to AGP Controller
+ pci:v00008086d00003341sv0000144Dsd0000C00C*
+- ID_MODEL_FROM_DATABASE=P30 notebook
++ ID_MODEL_FROM_DATABASE=82855PM Processor to AGP Controller (P30 notebook)
+ pci:v00008086d00003363*
+  ID_MODEL_FROM_DATABASE=IOC340 I/O Controller in IOC Mode SAS/SATA
+@@ -67995,19 +67995,19 @@ pci:v00008086d00003403*
+  ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port
+ pci:v00008086d00003403sv00001028sd00000236*
+- ID_MODEL_FROM_DATABASE=PowerEdge R610 I/O Hub to ESI Port
++ ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port (PowerEdge R610 I/O Hub to ESI Port)
+ pci:v00008086d00003403sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge M610 I/O Hub to ESI Port
++ ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port (PowerEdge M610 I/O Hub to ESI Port)
+ pci:v00008086d00003403sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 I/O Hub to ESI Port
++ ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port (PowerEdge R410 I/O Hub to ESI Port)
+ pci:v00008086d00003403sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 I/O Hub to ESI Port
++ ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port (PowerEdge T410 I/O Hub to ESI Port)
+ pci:v00008086d00003403sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port (ProLiant ML150 G6 Server)
+ pci:v00008086d00003404*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port
+@@ -68019,7 +68019,7 @@ pci:v00008086d00003406*
+  ID_MODEL_FROM_DATABASE=5520 I/O Hub to ESI Port
+ pci:v00008086d00003406sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=5520 I/O Hub to ESI Port (ProLiant G6 series)
+ pci:v00008086d00003407*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port
+@@ -68028,7 +68028,7 @@ pci:v00008086d00003408*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 1
+ pci:v00008086d00003408sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 1 (ProLiant G6 series)
+ pci:v00008086d00003409*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 2
+@@ -68037,7 +68037,7 @@ pci:v00008086d0000340A*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 3
+ pci:v00008086d0000340Asv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 3 (ProLiant ML150 G6 Server)
+ pci:v00008086d0000340B*
+  ID_MODEL_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 4
+@@ -68052,7 +68052,7 @@ pci:v00008086d0000340E*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 7
+ pci:v00008086d0000340Esv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 7 (ProLiant ML150 G6 Server)
+ pci:v00008086d0000340F*
+  ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 8
+@@ -68079,13 +68079,13 @@ pci:v00008086d00003422*
+  ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers
+ pci:v00008086d00003422sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers (ProLiant G6 series)
+ pci:v00008086d00003423*
+  ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Control Status and RAS Registers
+ pci:v00008086d00003423sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Control Status and RAS Registers (ProLiant G6 series)
+ pci:v00008086d00003425*
+  ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 Physical and Link Layer Registers Port 0
+@@ -68118,7 +68118,7 @@ pci:v00008086d0000342E*
+  ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub System Management Registers
+ pci:v00008086d0000342Esv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub System Management Registers (ProLiant G6 series)
+ pci:v00008086d0000342F*
+  ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 Trusted Execution Technology Registers
+@@ -68142,10 +68142,10 @@ pci:v00008086d00003500*
+  ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Upstream Port
+ pci:v00008086d00003500sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Upstream Port (ProLiant DL140 G3)
+ pci:v00008086d00003500sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Upstream Port (X7DBN Motherboard)
+ pci:v00008086d00003501*
+  ID_MODEL_FROM_DATABASE=6310ESB PCI Express Upstream Port
+@@ -68160,10 +68160,10 @@ pci:v00008086d0000350C*
+  ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express to PCI-X Bridge
+ pci:v00008086d0000350Csv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express to PCI-X Bridge (ProLiant DL140 G3)
+ pci:v00008086d0000350Csv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express to PCI-X Bridge (X7DBN Motherboard)
+ pci:v00008086d0000350D*
+  ID_MODEL_FROM_DATABASE=6310ESB PCI Express to PCI-X Bridge
+@@ -68172,10 +68172,10 @@ pci:v00008086d00003510*
+  ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E1
+ pci:v00008086d00003510sv0000103Csd000031FE*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E1 (ProLiant DL140 G3)
+ pci:v00008086d00003510sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E1 (X7DBN Motherboard)
+ pci:v00008086d00003511*
+  ID_MODEL_FROM_DATABASE=6310ESB PCI Express Downstream Port E1
+@@ -68190,7 +68190,7 @@ pci:v00008086d00003518*
+  ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E3
+ pci:v00008086d00003518sv000015D9sd00009680*
+- ID_MODEL_FROM_DATABASE=X7DBN Motherboard
++ ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E3 (X7DBN Motherboard)
+ pci:v00008086d00003519*
+  ID_MODEL_FROM_DATABASE=6310ESB PCI Express Downstream Port E3
+@@ -68199,13 +68199,13 @@ pci:v00008086d00003575*
+  ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge
+ pci:v00008086d00003575sv00000E11sd00000030*
+- ID_MODEL_FROM_DATABASE=Evo N600c
++ ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge (Evo N600c)
+ pci:v00008086d00003575sv00001014sd0000021D*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge (ThinkPad A/T/X Series)
+ pci:v00008086d00003575sv0000104Dsd000080E7*
+- ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP
++ ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge (VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP)
+ pci:v00008086d00003576*
+  ID_MODEL_FROM_DATABASE=82830M/MP AGP Bridge
+@@ -68214,7 +68214,7 @@ pci:v00008086d00003577*
+  ID_MODEL_FROM_DATABASE=82830M/MG Integrated Graphics Controller
+ pci:v00008086d00003577sv00001014sd00000513*
+- ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series
++ ID_MODEL_FROM_DATABASE=82830M/MG Integrated Graphics Controller (ThinkPad A/T/X Series)
+ pci:v00008086d00003578*
+  ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge
+@@ -68223,181 +68223,181 @@ pci:v00008086d00003580*
+  ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+ pci:v00008086d00003580sv00001014sd0000055C*
+- ID_MODEL_FROM_DATABASE=ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (ThinkPad R50e)
+ pci:v00008086d00003580sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D400)
+ pci:v00008086d00003580sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude X300)
+ pci:v00008086d00003580sv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D500)
+ pci:v00008086d00003580sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D505)
+ pci:v00008086d00003580sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Inspiron 700m/710m)
+ pci:v00008086d00003580sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Inspiron 5160)
+ pci:v00008086d00003580sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (PC8)
+ pci:v00008086d00003580sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Amilo M1420)
+ pci:v00008086d00003580sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (V5D Single Board Computer)
+ pci:v00008086d00003580sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CE9)
+ pci:v00008086d00003580sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CL9 mainboard)
+ pci:v00008086d00003580sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (PSL09 PrPMC)
+ pci:v00008086d00003580sv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CC9-SAMBA)
+ pci:v00008086d00003580sv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CD2-BEBOP)
+ pci:v00008086d00003581*
+  ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to AGP Controller
+ pci:v00008086d00003581sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to AGP Controller (Amilo M1420)
+ pci:v00008086d00003582*
+  ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device
+ pci:v00008086d00003582sv00001014sd00000562*
+- ID_MODEL_FROM_DATABASE=ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (ThinkPad R50e)
+ pci:v00008086d00003582sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (Latitude D400)
+ pci:v00008086d00003582sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (Latitude X300)
+ pci:v00008086d00003582sv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (Latitude D500)
+ pci:v00008086d00003582sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (Latitude D505)
+ pci:v00008086d00003582sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (Inspiron 700m/710m)
+ pci:v00008086d00003582sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8 integrated graphics
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (PC8 integrated graphics)
+ pci:v00008086d00003582sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer VGA
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (V5D Single Board Computer VGA)
+ pci:v00008086d00003582sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (CE9)
+ pci:v00008086d00003582sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (CL9 mainboard)
+ pci:v00008086d00003582sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (PSL09 PrPMC)
+ pci:v00008086d00003582sv0000E4BFsd00000CC9*
+- ID_MODEL_FROM_DATABASE=CC9-SAMBA
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (CC9-SAMBA)
+ pci:v00008086d00003582sv0000E4BFsd00000CD2*
+- ID_MODEL_FROM_DATABASE=CD2-BEBOP
++ ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device (CD2-BEBOP)
+ pci:v00008086d00003584*
+  ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+ pci:v00008086d00003584sv00001014sd0000055D*
+- ID_MODEL_FROM_DATABASE=ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (ThinkPad R50e)
+ pci:v00008086d00003584sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D400)
+ pci:v00008086d00003584sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude X300)
+ pci:v00008086d00003584sv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D500)
+ pci:v00008086d00003584sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D505)
+ pci:v00008086d00003584sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Inspiron 700m/710m)
+ pci:v00008086d00003584sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Inspiron 5160)
+ pci:v00008086d00003584sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (PC8)
+ pci:v00008086d00003584sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Amilo M1420)
+ pci:v00008086d00003584sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (V5D Single Board Computer)
+ pci:v00008086d00003584sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CE9)
+ pci:v00008086d00003584sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CL9 mainboard)
+ pci:v00008086d00003584sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (PSL09 PrPMC)
+ pci:v00008086d00003585*
+  ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller
+ pci:v00008086d00003585sv00001014sd0000055E*
+- ID_MODEL_FROM_DATABASE=ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (ThinkPad R50e)
+ pci:v00008086d00003585sv00001028sd00000139*
+- ID_MODEL_FROM_DATABASE=Latitude D400
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D400)
+ pci:v00008086d00003585sv00001028sd0000014F*
+- ID_MODEL_FROM_DATABASE=Latitude X300
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude X300)
+ pci:v00008086d00003585sv00001028sd00000152*
+- ID_MODEL_FROM_DATABASE=Latitude D500
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D500)
+ pci:v00008086d00003585sv00001028sd00000163*
+- ID_MODEL_FROM_DATABASE=Latitude D505
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Latitude D505)
+ pci:v00008086d00003585sv00001028sd0000018D*
+- ID_MODEL_FROM_DATABASE=Inspiron 700m/710m
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Inspiron 700m/710m)
+ pci:v00008086d00003585sv00001028sd00000196*
+- ID_MODEL_FROM_DATABASE=Inspiron 5160
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Inspiron 5160)
+ pci:v00008086d00003585sv0000114Asd00000582*
+- ID_MODEL_FROM_DATABASE=PC8
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (PC8)
+ pci:v00008086d00003585sv00001734sd00001055*
+- ID_MODEL_FROM_DATABASE=Amilo M1420
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (Amilo M1420)
+ pci:v00008086d00003585sv00001775sd000010D0*
+- ID_MODEL_FROM_DATABASE=V5D Single Board Computer
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (V5D Single Board Computer)
+ pci:v00008086d00003585sv00001775sd0000CE90*
+- ID_MODEL_FROM_DATABASE=CE9
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CE9)
+ pci:v00008086d00003585sv00004C53sd000010B0*
+- ID_MODEL_FROM_DATABASE=CL9 mainboard
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (CL9 mainboard)
+ pci:v00008086d00003585sv00004C53sd000010E0*
+- ID_MODEL_FROM_DATABASE=PSL09 PrPMC
++ ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller (PSL09 PrPMC)
+ pci:v00008086d0000358C*
+  ID_MODEL_FROM_DATABASE=82854 GMCH
+@@ -68409,70 +68409,70 @@ pci:v00008086d00003590*
+  ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub
+ pci:v00008086d00003590sv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (eServer xSeries server mainboard)
+ pci:v00008086d00003590sv00001028sd0000016C*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1850 Memory Controller Hub
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (PowerEdge 1850 Memory Controller Hub)
+ pci:v00008086d00003590sv00001028sd0000016D*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2850 Memory Controller Hub
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (PowerEdge 2850 Memory Controller Hub)
+ pci:v00008086d00003590sv00001028sd0000019A*
+- ID_MODEL_FROM_DATABASE=PowerEdge SC1425
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (PowerEdge SC1425)
+ pci:v00008086d00003590sv00001734sd0000103E*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (PRIMERGY RX/TX S2 series)
+ pci:v00008086d00003590sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (CR11/VR11 Single Board Computer)
+ pci:v00008086d00003590sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub (Telum ASLP10 Processor AMC)
+ pci:v00008086d00003591*
+  ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers
+ pci:v00008086d00003591sv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers (eServer xSeries server mainboard)
+ pci:v00008086d00003591sv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers (Precision Workstation 670 Mainboard)
+ pci:v00008086d00003591sv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers (Precision 470)
+ pci:v00008086d00003591sv0000103Csd00003208*
+- ID_MODEL_FROM_DATABASE=ProLiant DL140 G2
++ ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers (ProLiant DL140 G2)
+ pci:v00008086d00003591sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers (Telum ASLP10 Processor AMC)
+ pci:v00008086d00003592*
+  ID_MODEL_FROM_DATABASE=E7320 Memory Controller Hub
+ pci:v00008086d00003592sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=E7320 Memory Controller Hub (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d00003593*
+  ID_MODEL_FROM_DATABASE=E7320 Error Reporting Registers
+ pci:v00008086d00003593sv00001734sd00001073*
+- ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard
++ ID_MODEL_FROM_DATABASE=E7320 Error Reporting Registers (Primergy Econel 200 D2020 mainboard)
+ pci:v00008086d00003594*
+  ID_MODEL_FROM_DATABASE=E7520 DMA Controller
+ pci:v00008086d00003594sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=E7520 DMA Controller (CR11/VR11 Single Board Computer)
+ pci:v00008086d00003594sv00004C53sd000010D0*
+- ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC
++ ID_MODEL_FROM_DATABASE=E7520 DMA Controller (Telum ASLP10 Processor AMC)
+ pci:v00008086d00003595*
+  ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A
+ pci:v00008086d00003595sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A (CR11/VR11 Single Board Computer)
+ pci:v00008086d00003596*
+  ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A1
+@@ -68481,19 +68481,19 @@ pci:v00008086d00003597*
+  ID_MODEL_FROM_DATABASE=E7525/E7520 PCI Express Port B
+ pci:v00008086d00003597sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=E7525/E7520 PCI Express Port B (CR11/VR11 Single Board Computer)
+ pci:v00008086d00003598*
+  ID_MODEL_FROM_DATABASE=E7520 PCI Express Port B1
+ pci:v00008086d00003598sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=E7520 PCI Express Port B1 (CR11/VR11 Single Board Computer)
+ pci:v00008086d00003599*
+  ID_MODEL_FROM_DATABASE=E7520 PCI Express Port C
+ pci:v00008086d00003599sv00001775sd00001100*
+- ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer
++ ID_MODEL_FROM_DATABASE=E7520 PCI Express Port C (CR11/VR11 Single Board Computer)
+ pci:v00008086d0000359A*
+  ID_MODEL_FROM_DATABASE=E7520 PCI Express Port C1
+@@ -68502,16 +68502,16 @@ pci:v00008086d0000359B*
+  ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 Extended Configuration Registers
+ pci:v00008086d0000359Bsv00001014sd000002DD*
+- ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++ ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 Extended Configuration Registers (eServer xSeries server mainboard)
+ pci:v00008086d0000359E*
+  ID_MODEL_FROM_DATABASE=E7525 Memory Controller Hub
+ pci:v00008086d0000359Esv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=E7525 Memory Controller Hub (Precision Workstation 670 Mainboard)
+ pci:v00008086d0000359Esv00001028sd00000169*
+- ID_MODEL_FROM_DATABASE=Precision 470
++ ID_MODEL_FROM_DATABASE=E7525 Memory Controller Hub (Precision 470)
+ pci:v00008086d000035B0*
+  ID_MODEL_FROM_DATABASE=3100 Chipset Memory I/O Controller Hub
+@@ -68562,7 +68562,7 @@ pci:v00008086d0000360C*
+  ID_MODEL_FROM_DATABASE=7300 Chipset FSB Registers
+ pci:v00008086d0000360Csv00001028sd000001F0*
+- ID_MODEL_FROM_DATABASE=PowerEdge R900 7300 Chipset FSB Registers
++ ID_MODEL_FROM_DATABASE=7300 Chipset FSB Registers (PowerEdge R900 7300 Chipset FSB Registers)
+ pci:v00008086d0000360D*
+  ID_MODEL_FROM_DATABASE=7300 Chipset Snoop Filter Registers
+@@ -68724,19 +68724,19 @@ pci:v00008086d00003A16*
+  ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller
+ pci:v00008086d00003A16sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 LPC Interface Controller
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller (PowerEdge R410 LPC Interface Controller)
+ pci:v00008086d00003A16sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 LPC Interface Controller
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller (PowerEdge T410 LPC Interface Controller)
+ pci:v00008086d00003A16sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller (ProLiant G6 series)
+ pci:v00008086d00003A16sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A16sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A18*
+  ID_MODEL_FROM_DATABASE=82801JIB (ICH10) LPC Interface Controller
+@@ -68748,52 +68748,52 @@ pci:v00008086d00003A20*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 4 port SATA IDE Controller #1
+ pci:v00008086d00003A20sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 4 port SATA IDE Controller #1 (PowerEdge R410 SATA IDE Controller)
+ pci:v00008086d00003A20sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 4 port SATA IDE Controller #1 (PowerEdge T410 SATA IDE Controller)
+ pci:v00008086d00003A22*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SATA AHCI Controller
+ pci:v00008086d00003A22sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SATA AHCI Controller (ProLiant G6 series)
+ pci:v00008086d00003A22sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SATA AHCI Controller (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A22sv00001458sd0000B005*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SATA AHCI Controller (GA-EP45-DS5/GA-EG45M-DS2H Motherboard)
+ pci:v00008086d00003A25*
+  ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) SATA RAID Controller
+ pci:v00008086d00003A25sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PERC S100 Controller (PE R410)
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) SATA RAID Controller (PERC S100 Controller (PE R410))
+ pci:v00008086d00003A25sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PERC S100 Controller (PE T410)
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) SATA RAID Controller (PERC S100 Controller (PE T410))
+ pci:v00008086d00003A25sv00001028sd000002F1*
+- ID_MODEL_FROM_DATABASE=PERC S100 Controller (PE R510)
++ ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) SATA RAID Controller (PERC S100 Controller (PE R510))
+ pci:v00008086d00003A26*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 2 port SATA IDE Controller #2
+ pci:v00008086d00003A26sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 2 port SATA IDE Controller #2 (PowerEdge R410 SATA IDE Controller)
+ pci:v00008086d00003A26sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 SATA IDE Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 2 port SATA IDE Controller #2 (PowerEdge T410 SATA IDE Controller)
+ pci:v00008086d00003A30*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SMBus Controller
+ pci:v00008086d00003A30sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SMBus Controller (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A30sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SMBus Controller (GA-EP45-DS5/GA-EG45M-DS2H Motherboard)
+ pci:v00008086d00003A32*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) Thermal Subsystem
+@@ -68802,178 +68802,178 @@ pci:v00008086d00003A34*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1
+ pci:v00008086d00003A34sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 (PowerEdge R410 USB UHCI Controller)
+ pci:v00008086d00003A34sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 (PowerEdge T410 USB UHCI Controller)
+ pci:v00008086d00003A34sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 (ProLiant G6 series)
+ pci:v00008086d00003A34sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A34sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A35*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2
+ pci:v00008086d00003A35sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 (PowerEdge R410 USB UHCI Controller)
+ pci:v00008086d00003A35sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 (PowerEdge T410 USB UHCI Controller)
+ pci:v00008086d00003A35sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 (ProLiant G6 series)
+ pci:v00008086d00003A35sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A35sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A36*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3
+ pci:v00008086d00003A36sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 (PowerEdge R410 USB UHCI Controller)
+ pci:v00008086d00003A36sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 (PowerEdge T410 USB UHCI Controller)
+ pci:v00008086d00003A36sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 (ProLiant G6 series)
+ pci:v00008086d00003A36sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A36sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A37*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4
+ pci:v00008086d00003A37sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 (PowerEdge R410 USB UHCI Controller)
+ pci:v00008086d00003A37sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 (PowerEdge T410 USB UHCI Controller)
+ pci:v00008086d00003A37sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 (ProLiant G6 series)
+ pci:v00008086d00003A37sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A37sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 (Motherboard)
+ pci:v00008086d00003A38*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5
+ pci:v00008086d00003A38sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 (PowerEdge R410 USB UHCI Controller)
+ pci:v00008086d00003A38sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 (PowerEdge T410 USB UHCI Controller)
+ pci:v00008086d00003A38sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 (ProLiant ML150 G6 Server)
+ pci:v00008086d00003A38sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A38sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 (Motherboard)
+ pci:v00008086d00003A39*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6
+ pci:v00008086d00003A39sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 (PowerEdge R410 USB UHCI Controller)
+ pci:v00008086d00003A39sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 (PowerEdge T410 USB UHCI Controller)
+ pci:v00008086d00003A39sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 (ProLiant ML150 G6 Server)
+ pci:v00008086d00003A39sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A39sv00001458sd00005004*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 (Motherboard)
+ pci:v00008086d00003A3A*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1
+ pci:v00008086d00003A3Asv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 (PowerEdge R410 USB EHCI Controller)
+ pci:v00008086d00003A3Asv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 (PowerEdge T410 USB EHCI Controller)
+ pci:v00008086d00003A3Asv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 (ProLiant G6 series)
+ pci:v00008086d00003A3Asv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A3Asv00001458sd00005006*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A3C*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2
+ pci:v00008086d00003A3Csv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 (PowerEdge R410 USB EHCI Controller)
+ pci:v00008086d00003A3Csv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 USB EHCI Controller
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 (PowerEdge T410 USB EHCI Controller)
+ pci:v00008086d00003A3Csv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant G6 series
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 (ProLiant G6 series)
+ pci:v00008086d00003A3Csv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A3Csv00001458sd00005006*
+- ID_MODEL_FROM_DATABASE=Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 (Motherboard)
+ pci:v00008086d00003A3E*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) HD Audio Controller
+ pci:v00008086d00003A3Esv00001043sd00008311*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) HD Audio Controller (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A3Esv00001458sd0000A002*
+- ID_MODEL_FROM_DATABASE=GA-EP45-UD3R Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) HD Audio Controller (GA-EP45-UD3R Motherboard)
+ pci:v00008086d00003A3Esv00001458sd0000A102*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) HD Audio Controller (GA-EP45-DS5/GA-EG45M-DS2H Motherboard)
+ pci:v00008086d00003A40*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1
+ pci:v00008086d00003A40sv00001028sd0000028C*
+- ID_MODEL_FROM_DATABASE=PowerEdge R410 PCI Express Port 1
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 (PowerEdge R410 PCI Express Port 1)
+ pci:v00008086d00003A40sv00001028sd0000028D*
+- ID_MODEL_FROM_DATABASE=PowerEdge T410 PCI Express Port 1
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 (PowerEdge T410 PCI Express Port 1)
+ pci:v00008086d00003A40sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 (ProLiant ML150 G6 Server)
+ pci:v00008086d00003A40sv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A40sv00001043sd000082EA*
+- ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 (P6T DeLuxe Motherboard)
+ pci:v00008086d00003A40sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 (GA-EP45-DS5/GA-EG45M-DS2H Motherboard)
+ pci:v00008086d00003A42*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Port 2
+@@ -68982,43 +68982,43 @@ pci:v00008086d00003A44*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 3
+ pci:v00008086d00003A44sv00001043sd000082EA*
+- ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 3 (P6T DeLuxe Motherboard)
+ pci:v00008086d00003A46*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 4
+ pci:v00008086d00003A46sv00001043sd000082EA*
+- ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 4 (P6T DeLuxe Motherboard)
+ pci:v00008086d00003A46sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 4 (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A48*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 5
+ pci:v00008086d00003A48sv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 5 (ProLiant ML150 G6 Server)
+ pci:v00008086d00003A48sv00001043sd000082EA*
+- ID_MODEL_FROM_DATABASE=P6T Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 5 (P6T Deluxe Motherboard)
+ pci:v00008086d00003A48sv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 5 (GA-EP45-DS5 Motherboard)
+ pci:v00008086d00003A4A*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6
+ pci:v00008086d00003A4Asv0000103Csd0000330B*
+- ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6 (ProLiant ML150 G6 Server)
+ pci:v00008086d00003A4Asv00001043sd000082D4*
+- ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6 (P5Q Deluxe Motherboard)
+ pci:v00008086d00003A4Asv00001043sd000082EA*
+- ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6 (P6T DeLuxe Motherboard)
+ pci:v00008086d00003A4Asv00001458sd00005001*
+- ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard
++ ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6 (GA-EP45-DS5/GA-EG45M-DS2H Motherboard)
+ pci:v00008086d00003A4C*
+  ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) Gigabit Ethernet Controller
+@@ -69108,10 +69108,10 @@ pci:v00008086d00003B07*
+  ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller
+ pci:v00008086d00003B07sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller (Latitude E6510)
+ pci:v00008086d00003B07sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller (PC1-GROOVE)
+ pci:v00008086d00003B08*
+  ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller
+@@ -69120,16 +69120,16 @@ pci:v00008086d00003B09*
+  ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller
+ pci:v00008086d00003B09sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller (Aspire 7740G)
+ pci:v00008086d00003B0A*
+  ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller
+ pci:v00008086d00003B0Asv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller (OptiPlex 980)
+ pci:v00008086d00003B0Asv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller (C7SIM-Q Motherboard)
+ pci:v00008086d00003B0B*
+  ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller
+@@ -69204,10 +69204,10 @@ pci:v00008086d00003B22*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller
+ pci:v00008086d00003B22sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller (OptiPlex 980)
+ pci:v00008086d00003B22sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller (C7SIM-Q Motherboard)
+ pci:v00008086d00003B23*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller
+@@ -69225,7 +69225,7 @@ pci:v00008086d00003B29*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller
+ pci:v00008086d00003B29sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller (Aspire 7740G)
+ pci:v00008086d00003B2C*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller
+@@ -69234,64 +69234,64 @@ pci:v00008086d00003B2D*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller
+ pci:v00008086d00003B2Dsv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller (PC1-GROOVE)
+ pci:v00008086d00003B2E*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller
+ pci:v00008086d00003B2Esv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller (PC1-GROOVE)
+ pci:v00008086d00003B2F*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller
+ pci:v00008086d00003B2Fsv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller (Latitude E6510)
+ pci:v00008086d00003B2Fsv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller (PC1-GROOVE)
+ pci:v00008086d00003B30*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller
+ pci:v00008086d00003B30sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller (Aspire 7740G)
+ pci:v00008086d00003B30sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller (OptiPlex 980)
+ pci:v00008086d00003B30sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller (Latitude E6510)
+ pci:v00008086d00003B30sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller (C7SIM-Q Motherboard)
+ pci:v00008086d00003B30sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller (PC1-GROOVE)
+ pci:v00008086d00003B32*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset Thermal Subsystem
+ pci:v00008086d00003B32sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset Thermal Subsystem (Aspire 7740G)
+ pci:v00008086d00003B34*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller
+ pci:v00008086d00003B34sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (Aspire 7740G)
+ pci:v00008086d00003B34sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (OptiPlex 980)
+ pci:v00008086d00003B34sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (Latitude E6510)
+ pci:v00008086d00003B34sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (C7SIM-Q Motherboard)
+ pci:v00008086d00003B34sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (PC1-GROOVE)
+ pci:v00008086d00003B36*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller
+@@ -69315,19 +69315,19 @@ pci:v00008086d00003B3C*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller
+ pci:v00008086d00003B3Csv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (Aspire 7740G)
+ pci:v00008086d00003B3Csv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (OptiPlex 980)
+ pci:v00008086d00003B3Csv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (Latitude E6510)
+ pci:v00008086d00003B3Csv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (C7SIM-Q Motherboard)
+ pci:v00008086d00003B3Csv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller (PC1-GROOVE)
+ pci:v00008086d00003B3E*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller
+@@ -69345,40 +69345,40 @@ pci:v00008086d00003B42*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 1
+ pci:v00008086d00003B42sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 1 (OptiPlex 980)
+ pci:v00008086d00003B42sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 1 (Latitude E6510)
+ pci:v00008086d00003B42sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 1 (C7SIM-Q Motherboard)
+ pci:v00008086d00003B44*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 2
+ pci:v00008086d00003B44sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 2 (Latitude E6510)
+ pci:v00008086d00003B44sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 2 (C7SIM-Q Motherboard)
+ pci:v00008086d00003B46*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 3
+ pci:v00008086d00003B46sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 3 (Latitude E6510)
+ pci:v00008086d00003B48*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 4
+ pci:v00008086d00003B48sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 4 (Latitude E6510)
+ pci:v00008086d00003B4A*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 5
+ pci:v00008086d00003B4Asv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 5 (OptiPlex 980)
+ pci:v00008086d00003B4C*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 6
+@@ -69396,19 +69396,19 @@ pci:v00008086d00003B56*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio
+ pci:v00008086d00003B56sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio (Aspire 7740G)
+ pci:v00008086d00003B56sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio (OptiPlex 980)
+ pci:v00008086d00003B56sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio (Latitude E6510)
+ pci:v00008086d00003B56sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio (C7SIM-Q Motherboard)
+ pci:v00008086d00003B56sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio (PC1-GROOVE)
+ pci:v00008086d00003B57*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio
+@@ -69417,13 +69417,13 @@ pci:v00008086d00003B64*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller
+ pci:v00008086d00003B64sv00001025sd00000347*
+- ID_MODEL_FROM_DATABASE=Aspire 7740G
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller (Aspire 7740G)
+ pci:v00008086d00003B64sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller (C7SIM-Q Motherboard)
+ pci:v00008086d00003B64sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller (PC1-GROOVE)
+ pci:v00008086d00003B65*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller
+@@ -69435,7 +69435,7 @@ pci:v00008086d00003B67*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset KT Controller
+ pci:v00008086d00003B67sv0000E4BFsd000050C1*
+- ID_MODEL_FROM_DATABASE=PC1-GROOVE
++ ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset KT Controller (PC1-GROOVE)
+ pci:v00008086d00003C00*
+  ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMI2
+@@ -69765,25 +69765,25 @@ pci:v00008086d00004220*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection
+ pci:v00008086d00004220sv0000103Csd00000934*
+- ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (Compaq nw8240/nx8220)
+ pci:v00008086d00004220sv0000103Csd000012F6*
+- ID_MODEL_FROM_DATABASE=nc6120/nx8220/nw8240
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (nc6120/nx8220/nw8240)
+ pci:v00008086d00004220sv00008086sd00002701*
+- ID_MODEL_FROM_DATABASE=WM3B2300BG Mini-PCI Card
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (WM3B2300BG Mini-PCI Card)
+ pci:v00008086d00004220sv00008086sd00002712*
+- ID_MODEL_FROM_DATABASE=IBM ThinkPad R50e
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (IBM ThinkPad R50e)
+ pci:v00008086d00004220sv00008086sd00002721*
+- ID_MODEL_FROM_DATABASE=Dell B130 laptop integrated WLAN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (Dell B130 laptop integrated WLAN)
+ pci:v00008086d00004220sv00008086sd00002722*
+- ID_MODEL_FROM_DATABASE=Dell Latitude D600
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (Dell Latitude D600)
+ pci:v00008086d00004220sv00008086sd00002731*
+- ID_MODEL_FROM_DATABASE=Samsung P35 integrated WLAN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection (Samsung P35 integrated WLAN)
+ pci:v00008086d00004222*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection
+@@ -69792,40 +69792,40 @@ pci:v00008086d00004222sv0000103Csd0000135C*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection
+ pci:v00008086d00004222sv00008086sd00001000*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945ABG Network Connection)
+ pci:v00008086d00004222sv00008086sd00001001*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945ABG Network Connection)
+ pci:v00008086d00004222sv00008086sd00001005*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945BG Network Connection)
+ pci:v00008086d00004222sv00008086sd00001034*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945BG Network Connection)
+ pci:v00008086d00004222sv00008086sd00001044*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945BG Network Connection)
+ pci:v00008086d00004222sv00008086sd00001C00*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945ABG Network Connection)
+ pci:v00008086d00004223*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection
+ pci:v00008086d00004223sv00001000sd00008086*
+- ID_MODEL_FROM_DATABASE=mPCI 3B Americas/Europe ZZA
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection (mPCI 3B Americas/Europe ZZA)
+ pci:v00008086d00004223sv00001001sd00008086*
+- ID_MODEL_FROM_DATABASE=mPCI 3B Europe ZZE
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection (mPCI 3B Europe ZZE)
+ pci:v00008086d00004223sv00001002sd00008086*
+- ID_MODEL_FROM_DATABASE=mPCI 3B Japan ZZJ
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection (mPCI 3B Japan ZZJ)
+ pci:v00008086d00004223sv00001003sd00008086*
+- ID_MODEL_FROM_DATABASE=mPCI 3B High-Band ZZH
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection (mPCI 3B High-Band ZZH)
+ pci:v00008086d00004223sv00001351sd0000103C*
+- ID_MODEL_FROM_DATABASE=Compaq NC6220
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection (Compaq NC6220)
+ pci:v00008086d00004224*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection
+@@ -69834,106 +69834,106 @@ pci:v00008086d00004227*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection
+ pci:v00008086d00004227sv00008086sd00001011*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60e/X60s
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (ThinkPad T60/R60e/X60s)
+ pci:v00008086d00004227sv00008086sd00001014*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection (PRO/Wireless 3945BG Network Connection)
+ pci:v00008086d00004229*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
+ pci:v00008086d00004229sv00008086sd00001100*
+- ID_MODEL_FROM_DATABASE=Vaio VGN-SZ79SN_C
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (Vaio VGN-SZ79SN_C)
+ pci:v00008086d00004229sv00008086sd00001101*
+- ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (PRO/Wireless 4965 AG or AGN)
+ pci:v00008086d0000422B*
+  ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300
+ pci:v00008086d0000422Bsv00008086sd00001101*
+- ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 (3x3 AGN)
+ pci:v00008086d0000422Bsv00008086sd00001121*
+- ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 (3x3 AGN)
+ pci:v00008086d0000422C*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200
+ pci:v00008086d0000422Csv00008086sd00001301*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 AGN)
+ pci:v00008086d0000422Csv00008086sd00001306*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 ABG)
+ pci:v00008086d0000422Csv00008086sd00001307*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 BG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 BG)
+ pci:v00008086d0000422Csv00008086sd00001321*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 AGN)
+ pci:v00008086d0000422Csv00008086sd00001326*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 ABG)
+ pci:v00008086d00004230*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection
+ pci:v00008086d00004230sv00008086sd00001110*
+- ID_MODEL_FROM_DATABASE=Lenovo ThinkPad T51
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (Lenovo ThinkPad T51)
+ pci:v00008086d00004230sv00008086sd00001111*
+- ID_MODEL_FROM_DATABASE=Lenovo ThinkPad T61
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (Lenovo ThinkPad T61)
+ pci:v00008086d00004232*
+  ID_MODEL_FROM_DATABASE=WiFi Link 5100
+ pci:v00008086d00004232sv00008086sd00001201*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001204*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001205*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (BGN)
+ pci:v00008086d00004232sv00008086sd00001206*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (ABG)
+ pci:v00008086d00004232sv00008086sd00001221*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001224*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001225*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (BGN)
+ pci:v00008086d00004232sv00008086sd00001226*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (ABG)
+ pci:v00008086d00004232sv00008086sd00001301*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001304*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001305*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (BGN)
+ pci:v00008086d00004232sv00008086sd00001306*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (ABG)
+ pci:v00008086d00004232sv00008086sd00001321*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001324*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (AGN)
+ pci:v00008086d00004232sv00008086sd00001325*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (BGN)
+ pci:v00008086d00004232sv00008086sd00001326*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG
++ ID_MODEL_FROM_DATABASE=WiFi Link 5100 (ABG)
+ pci:v00008086d00004235*
+  ID_MODEL_FROM_DATABASE=Ultimate N WiFi Link 5300
+@@ -69945,43 +69945,43 @@ pci:v00008086d00004237*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection
+ pci:v00008086d00004237sv00008086sd00001211*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 AGN)
+ pci:v00008086d00004237sv00008086sd00001214*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 AGN)
+ pci:v00008086d00004237sv00008086sd00001215*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 BGN)
+ pci:v00008086d00004237sv00008086sd00001216*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 ABG)
+ pci:v00008086d00004237sv00008086sd00001311*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 AGN)
+ pci:v00008086d00004237sv00008086sd00001314*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 AGN)
+ pci:v00008086d00004237sv00008086sd00001315*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 BGN)
+ pci:v00008086d00004237sv00008086sd00001316*
+- ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG
++ ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection (WiFi Link 5100 ABG)
+ pci:v00008086d00004238*
+  ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300
+ pci:v00008086d00004238sv00008086sd00001111*
+- ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 (3x3 AGN)
+ pci:v00008086d00004239*
+  ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200
+ pci:v00008086d00004239sv00008086sd00001311*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 AGN)
+ pci:v00008086d00004239sv00008086sd00001316*
+- ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG
++ ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 (2x2 ABG)
+ pci:v00008086d0000423A*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 5350 AGN [Echo Peak] Network Connection
+@@ -69993,37 +69993,37 @@ pci:v00008086d0000423C*
+  ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150
+ pci:v00008086d0000423Csv00008086sd00001201*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (AGN)
+ pci:v00008086d0000423Csv00008086sd00001206*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (ABG)
+ pci:v00008086d0000423Csv00008086sd00001221*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (AGN)
+ pci:v00008086d0000423Csv00008086sd00001301*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (AGN)
+ pci:v00008086d0000423Csv00008086sd00001306*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (ABG)
+ pci:v00008086d0000423Csv00008086sd00001321*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (AGN)
+ pci:v00008086d0000423D*
+  ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150
+ pci:v00008086d0000423Dsv00008086sd00001211*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (AGN)
+ pci:v00008086d0000423Dsv00008086sd00001216*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (ABG)
+ pci:v00008086d0000423Dsv00008086sd00001311*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (AGN)
+ pci:v00008086d0000423Dsv00008086sd00001316*
+- ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG
++ ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 (ABG)
+ pci:v00008086d0000444E*
+  ID_MODEL_FROM_DATABASE=Turbo Memory Controller
+@@ -70176,7 +70176,7 @@ pci:v00008086d00005201*
+  ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller
+ pci:v00008086d00005201sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Ethernet Adapter
++ ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller (EtherExpress PRO/100 Server Ethernet Adapter)
+ pci:v00008086d0000530D*
+  ID_MODEL_FROM_DATABASE=80310 (IOP) IO Processor
+@@ -70185,7 +70185,7 @@ pci:v00008086d00005845*
+  ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller
+ pci:v00008086d00005845sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller (QEMU Virtual Machine)
+ pci:v00008086d000065C0*
+  ID_MODEL_FROM_DATABASE=5100 Chipset Memory Controller Hub
+@@ -70212,16 +70212,16 @@ pci:v00008086d000065F0*
+  ID_MODEL_FROM_DATABASE=5100 Chipset FSB Registers
+ pci:v00008086d000065F0sv00001028sd0000020F*
+- ID_MODEL_FROM_DATABASE=PowerEdge R300
++ ID_MODEL_FROM_DATABASE=5100 Chipset FSB Registers (PowerEdge R300)
+ pci:v00008086d000065F0sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300
++ ID_MODEL_FROM_DATABASE=5100 Chipset FSB Registers (PowerEdge T300)
+ pci:v00008086d000065F1*
+  ID_MODEL_FROM_DATABASE=5100 Chipset Reserved Registers
+ pci:v00008086d000065F1sv00001028sd00000210*
+- ID_MODEL_FROM_DATABASE=PowerEdge T300
++ ID_MODEL_FROM_DATABASE=5100 Chipset Reserved Registers (PowerEdge T300)
+ pci:v00008086d000065F3*
+  ID_MODEL_FROM_DATABASE=5100 Chipset Reserved Registers
+@@ -70251,19 +70251,19 @@ pci:v00008086d00007000*
+  ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II]
+ pci:v00008086d00007000sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=Qemu virtual machine
++ ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II] (Qemu virtual machine)
+ pci:v00008086d00007010*
+  ID_MODEL_FROM_DATABASE=82371SB PIIX3 IDE [Natoma/Triton II]
+ pci:v00008086d00007010sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=Qemu virtual machine
++ ID_MODEL_FROM_DATABASE=82371SB PIIX3 IDE [Natoma/Triton II] (Qemu virtual machine)
+ pci:v00008086d00007020*
+  ID_MODEL_FROM_DATABASE=82371SB PIIX3 USB [Natoma/Triton II]
+ pci:v00008086d00007020sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82371SB PIIX3 USB [Natoma/Triton II] (QEMU Virtual Machine)
+ pci:v00008086d00007030*
+  ID_MODEL_FROM_DATABASE=430VX - 82437VX TVX [Triton VX]
+@@ -70281,52 +70281,52 @@ pci:v00008086d00007110*
+  ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ISA
+ pci:v00008086d00007110sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=Virtual Machine Chipset
++ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ISA (Virtual Machine Chipset)
+ pci:v00008086d00007111*
+  ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 IDE
+ pci:v00008086d00007111sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=Virtual Machine Chipset
++ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 IDE (Virtual Machine Chipset)
+ pci:v00008086d00007112*
+  ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 USB
+ pci:v00008086d00007112sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=Virtual Machine Chipset
++ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 USB (Virtual Machine Chipset)
+ pci:v00008086d00007112sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 USB (QEMU Virtual Machine)
+ pci:v00008086d00007113*
+  ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI
+ pci:v00008086d00007113sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=Virtual Machine Chipset
++ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI (Virtual Machine Chipset)
+ pci:v00008086d00007113sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=Qemu virtual machine
++ ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI (Qemu virtual machine)
+ pci:v00008086d00007120*
+  ID_MODEL_FROM_DATABASE=82810 GMCH (Graphics Memory Controller Hub)
+ pci:v00008086d00007120sv00004C53sd00001040*
+- ID_MODEL_FROM_DATABASE=CL7 mainboard
++ ID_MODEL_FROM_DATABASE=82810 GMCH (Graphics Memory Controller Hub) (CL7 mainboard)
+ pci:v00008086d00007120sv00004C53sd00001060*
+- ID_MODEL_FROM_DATABASE=PC7 mainboard
++ ID_MODEL_FROM_DATABASE=82810 GMCH (Graphics Memory Controller Hub) (PC7 mainboard)
+ pci:v00008086d00007121*
+  ID_MODEL_FROM_DATABASE=82810 (CGC) Chipset Graphics Controller
+ pci:v00008086d00007121sv00004C53sd00001040*
+- ID_MODEL_FROM_DATABASE=CL7 mainboard
++ ID_MODEL_FROM_DATABASE=82810 (CGC) Chipset Graphics Controller (CL7 mainboard)
+ pci:v00008086d00007121sv00004C53sd00001060*
+- ID_MODEL_FROM_DATABASE=PC7 mainboard
++ ID_MODEL_FROM_DATABASE=82810 (CGC) Chipset Graphics Controller (PC7 mainboard)
+ pci:v00008086d00007121sv00008086sd00004341*
+- ID_MODEL_FROM_DATABASE=Cayman (CA810) Mainboard
++ ID_MODEL_FROM_DATABASE=82810 (CGC) Chipset Graphics Controller (Cayman (CA810) Mainboard)
+ pci:v00008086d00007122*
+  ID_MODEL_FROM_DATABASE=82810 DC-100 (GMCH) Graphics Memory Controller Hub
+@@ -70338,13 +70338,13 @@ pci:v00008086d00007124*
+  ID_MODEL_FROM_DATABASE=82810E DC-133 (GMCH) Graphics Memory Controller Hub
+ pci:v00008086d00007124sv00001028sd000000B4*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX110
++ ID_MODEL_FROM_DATABASE=82810E DC-133 (GMCH) Graphics Memory Controller Hub (OptiPlex GX110)
+ pci:v00008086d00007125*
+  ID_MODEL_FROM_DATABASE=82810E DC-133 (CGC) Chipset Graphics Controller
+ pci:v00008086d00007125sv00001028sd000000B4*
+- ID_MODEL_FROM_DATABASE=OptiPlex GX110
++ ID_MODEL_FROM_DATABASE=82810E DC-133 (CGC) Chipset Graphics Controller (OptiPlex GX110)
+ pci:v00008086d00007126*
+  ID_MODEL_FROM_DATABASE=82810 DC-133 System and Graphics Controller
+@@ -70365,73 +70365,73 @@ pci:v00008086d00007190*
+  ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge
+ pci:v00008086d00007190sv00000E11sd00000500*
+- ID_MODEL_FROM_DATABASE=Armada 1750 Laptop System Chipset
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (Armada 1750 Laptop System Chipset)
+ pci:v00008086d00007190sv00000E11sd0000B110*
+- ID_MODEL_FROM_DATABASE=Armada M700/E500
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (Armada M700/E500)
+ pci:v00008086d00007190sv00001028sd0000008E*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1300 mainboard
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (PowerEdge 1300 mainboard)
+ pci:v00008086d00007190sv00001043sd0000803B*
+- ID_MODEL_FROM_DATABASE=CUBX-L/E Mainboard
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (CUBX-L/E Mainboard)
+ pci:v00008086d00007190sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Toshiba Tecra 8100 Laptop System Chipset
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (Toshiba Tecra 8100 Laptop System Chipset)
+ pci:v00008086d00007190sv000015ADsd00001976*
+- ID_MODEL_FROM_DATABASE=Virtual Machine Chipset
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (Virtual Machine Chipset)
+ pci:v00008086d00007190sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (CT7 mainboard)
+ pci:v00008086d00007190sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (CE7 mainboard)
+ pci:v00008086d00007191*
+  ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX AGP bridge
+ pci:v00008086d00007191sv00001028sd0000008E*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1300 mainboard
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (PowerEdge 1300 mainboard)
+ pci:v00008086d00007192*
+  ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled)
+ pci:v00008086d00007192sv00000E11sd00000460*
+- ID_MODEL_FROM_DATABASE=Armada 1700 Laptop System Chipset
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (Armada 1700 Laptop System Chipset)
+ pci:v00008086d00007192sv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Satellite 4010
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (Satellite 4010)
+ pci:v00008086d00007192sv00004C53sd00001000*
+- ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
+ pci:v00008086d00007192sv00008086sd00007190*
+- ID_MODEL_FROM_DATABASE=Dell PowerEdge 350
++ ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) (Dell PowerEdge 350)
+ pci:v00008086d00007194*
+  ID_MODEL_FROM_DATABASE=82440MX Host Bridge
+ pci:v00008086d00007194sv00001033sd00000000*
+- ID_MODEL_FROM_DATABASE=Versa Note Vxi
++ ID_MODEL_FROM_DATABASE=82440MX Host Bridge (Versa Note Vxi)
+ pci:v00008086d00007194sv00004C53sd000010A0*
+- ID_MODEL_FROM_DATABASE=CA3/CR3 mainboard
++ ID_MODEL_FROM_DATABASE=82440MX Host Bridge (CA3/CR3 mainboard)
+ pci:v00008086d00007195*
+  ID_MODEL_FROM_DATABASE=82440MX AC'97 Audio Controller
+ pci:v00008086d00007195sv00001033sd000080CC*
+- ID_MODEL_FROM_DATABASE=Versa Note VXi
++ ID_MODEL_FROM_DATABASE=82440MX AC'97 Audio Controller (Versa Note VXi)
+ pci:v00008086d00007195sv000010CFsd00001099*
+- ID_MODEL_FROM_DATABASE=QSound_SigmaTel Stac97 PCI Audio
++ ID_MODEL_FROM_DATABASE=82440MX AC'97 Audio Controller (QSound_SigmaTel Stac97 PCI Audio)
+ pci:v00008086d00007195sv000011D4sd00000040*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82440MX AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00007195sv000011D4sd00000048*
+- ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio
++ ID_MODEL_FROM_DATABASE=82440MX AC'97 Audio Controller (SoundMAX Integrated Digital Audio)
+ pci:v00008086d00007196*
+  ID_MODEL_FROM_DATABASE=82440MX AC'97 Modem Controller
+@@ -70452,10 +70452,10 @@ pci:v00008086d000071A0*
+  ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge
+ pci:v00008086d000071A0sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge (CT7 mainboard)
+ pci:v00008086d000071A0sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge (CE7 mainboard)
+ pci:v00008086d000071A1*
+  ID_MODEL_FROM_DATABASE=440GX - 82443GX AGP bridge
+@@ -70464,7 +70464,7 @@ pci:v00008086d000071A2*
+  ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge (AGP disabled)
+ pci:v00008086d000071A2sv00004C53sd00001000*
+- ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard
++ ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge (AGP disabled) (CC7/CR7/CP7/VC7/VP7/VR7 mainboard)
+ pci:v00008086d00007600*
+  ID_MODEL_FROM_DATABASE=82372FB PIIX5 ISA
+@@ -70482,25 +70482,25 @@ pci:v00008086d00007800*
+  ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator
+ pci:v00008086d00007800sv0000003Dsd00000008*
+- ID_MODEL_FROM_DATABASE=Starfighter AGP
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Starfighter AGP)
+ pci:v00008086d00007800sv0000003Dsd0000000B*
+- ID_MODEL_FROM_DATABASE=Starfighter AGP
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Starfighter AGP)
+ pci:v00008086d00007800sv00001092sd00000100*
+- ID_MODEL_FROM_DATABASE=Stealth II G460
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Stealth II G460)
+ pci:v00008086d00007800sv000010B4sd0000201A*
+- ID_MODEL_FROM_DATABASE=Lightspeed 740
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Lightspeed 740)
+ pci:v00008086d00007800sv000010B4sd0000202F*
+- ID_MODEL_FROM_DATABASE=Lightspeed 740
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Lightspeed 740)
+ pci:v00008086d00007800sv00008086sd00000000*
+- ID_MODEL_FROM_DATABASE=Terminator 2x/i
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Terminator 2x/i)
+ pci:v00008086d00007800sv00008086sd00000100*
+- ID_MODEL_FROM_DATABASE=Intel740 Graphics Accelerator
++ ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator (Intel740 Graphics Accelerator)
+ pci:v00008086d00008002*
+  ID_MODEL_FROM_DATABASE=Trusted Execution Technology Registers
+@@ -70611,13 +70611,13 @@ pci:v00008086d00008500*
+  ID_MODEL_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100)
+ pci:v00008086d00008500sv00001993sd00000DED*
+- ID_MODEL_FROM_DATABASE=mGuard-PCI AV#2
++ ID_MODEL_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100) (mGuard-PCI AV#2)
+ pci:v00008086d00008500sv00001993sd00000DEE*
+- ID_MODEL_FROM_DATABASE=mGuard-PCI AV#1
++ ID_MODEL_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100) (mGuard-PCI AV#1)
+ pci:v00008086d00008500sv00001993sd00000DEF*
+- ID_MODEL_FROM_DATABASE=mGuard-PCI AV#0
++ ID_MODEL_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100) (mGuard-PCI AV#0)
+ pci:v00008086d00008800*
+  ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T PCI Express Port
+@@ -70710,10 +70710,10 @@ pci:v00008086d00008C03*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
+ pci:v00008086d00008C03sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (ZBook 15)
+ pci:v00008086d00008C03sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode] (ThinkPad T440p)
+ pci:v00008086d00008C04*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+@@ -70743,7 +70743,7 @@ pci:v00008086d00008C10*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
+ pci:v00008086d00008C10sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1 (ThinkPad T440p)
+ pci:v00008086d00008C11*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
+@@ -70752,7 +70752,7 @@ pci:v00008086d00008C12*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2
+ pci:v00008086d00008C12sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2 (ThinkPad T440p)
+ pci:v00008086d00008C13*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2
+@@ -70797,10 +70797,10 @@ pci:v00008086d00008C20*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
+ pci:v00008086d00008C20sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller (ZBook 15)
+ pci:v00008086d00008C20sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller (ThinkPad T440p)
+ pci:v00008086d00008C21*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
+@@ -70809,10 +70809,10 @@ pci:v00008086d00008C22*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller
+ pci:v00008086d00008C22sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller (ZBook 15)
+ pci:v00008086d00008C22sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller (ThinkPad T440p)
+ pci:v00008086d00008C23*
+  ID_MODEL_FROM_DATABASE=8 Series Chipset Family CHAP Counters
+@@ -70824,28 +70824,28 @@ pci:v00008086d00008C26*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1
+ pci:v00008086d00008C26sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1 (ZBook 15)
+ pci:v00008086d00008C26sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1 (ThinkPad T440p)
+ pci:v00008086d00008C2D*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2
+ pci:v00008086d00008C2Dsv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2 (ZBook 15)
+ pci:v00008086d00008C2Dsv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2 (ThinkPad T440p)
+ pci:v00008086d00008C31*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI
+ pci:v00008086d00008C31sv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI (ZBook 15)
+ pci:v00008086d00008C31sv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI (ThinkPad T440p)
+ pci:v00008086d00008C33*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family LAN Controller
+@@ -70857,10 +70857,10 @@ pci:v00008086d00008C3A*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1
+ pci:v00008086d00008C3Asv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1 (ZBook 15)
+ pci:v00008086d00008C3Asv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1 (ThinkPad T440p)
+ pci:v00008086d00008C3B*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #2
+@@ -70920,10 +70920,10 @@ pci:v00008086d00008C4F*
+  ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller
+ pci:v00008086d00008C4Fsv0000103Csd00001909*
+- ID_MODEL_FROM_DATABASE=ZBook 15
++ ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller (ZBook 15)
+ pci:v00008086d00008C4Fsv000017AAsd0000220E*
+- ID_MODEL_FROM_DATABASE=ThinkPad T440p
++ ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller (ThinkPad T440p)
+ pci:v00008086d00008C50*
+  ID_MODEL_FROM_DATABASE=B85 Express LPC Controller
+@@ -70986,7 +70986,7 @@ pci:v00008086d00008D06*
+  ID_MODEL_FROM_DATABASE=Wellsburg SATA Controller [RAID mode]
+ pci:v00008086d00008D06sv000017AAsd00001031*
+- ID_MODEL_FROM_DATABASE=ThinkServer RAID 110i
++ ID_MODEL_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] (ThinkServer RAID 110i)
+ pci:v00008086d00008D08*
+  ID_MODEL_FROM_DATABASE=Wellsburg 2-port SATA Controller [IDE mode]
+@@ -71196,7 +71196,7 @@ pci:v00008086d00009C03*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode]
+ pci:v00008086d00009C03sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode] (ThinkPad X240)
+ pci:v00008086d00009C04*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode]
+@@ -71286,7 +71286,7 @@ pci:v00008086d00009C20*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller
+ pci:v00008086d00009C20sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller (ThinkPad X240)
+ pci:v00008086d00009C21*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller
+@@ -71295,7 +71295,7 @@ pci:v00008086d00009C22*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SMBus Controller
+ pci:v00008086d00009C22sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP SMBus Controller (ThinkPad X240)
+ pci:v00008086d00009C23*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP CHAP Counters
+@@ -71307,7 +71307,7 @@ pci:v00008086d00009C26*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #1
+ pci:v00008086d00009C26sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #1 (ThinkPad X240)
+ pci:v00008086d00009C2D*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #2
+@@ -71316,7 +71316,7 @@ pci:v00008086d00009C31*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP USB xHCI HC
+ pci:v00008086d00009C31sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP USB xHCI HC (ThinkPad X240)
+ pci:v00008086d00009C35*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SDIO Controller
+@@ -71328,7 +71328,7 @@ pci:v00008086d00009C3A*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #0
+ pci:v00008086d00009C3Asv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #0 (ThinkPad X240)
+ pci:v00008086d00009C3B*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #1
+@@ -71352,7 +71352,7 @@ pci:v00008086d00009C43*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller
+ pci:v00008086d00009C43sv000017AAsd00002214*
+- ID_MODEL_FROM_DATABASE=ThinkPad X240
++ ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller (ThinkPad X240)
+ pci:v00008086d00009C44*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller
+@@ -71496,25 +71496,25 @@ pci:v00008086d0000A000*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
+ pci:v00008086d0000A000sv00001458sd00005000*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge (GA-D525TUD)
+ pci:v00008086d0000A000sv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge (DeskTop Board D510MO)
+ pci:v00008086d0000A000sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge (Desktop Board D425KT)
+ pci:v00008086d0000A001*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller
+ pci:v00008086d0000A001sv00001458sd0000D000*
+- ID_MODEL_FROM_DATABASE=GA-D525TUD
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (GA-D525TUD)
+ pci:v00008086d0000A001sv00008086sd00004F4D*
+- ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (DeskTop Board D510MO)
+ pci:v00008086d0000A001sv00008086sd0000544B*
+- ID_MODEL_FROM_DATABASE=Desktop Board D425KT
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (Desktop Board D425KT)
+ pci:v00008086d0000A002*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller
+@@ -71526,19 +71526,19 @@ pci:v00008086d0000A010*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
+ pci:v00008086d0000A010sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge (Notebook N150P)
+ pci:v00008086d0000A011*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller
+ pci:v00008086d0000A011sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (Notebook N150P)
+ pci:v00008086d0000A012*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller
+ pci:v00008086d0000A012sv0000144Dsd0000C072*
+- ID_MODEL_FROM_DATABASE=Notebook N150P
++ ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller (Notebook N150P)
+ pci:v00008086d0000A013*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter
+@@ -71559,22 +71559,22 @@ pci:v00008086d0000B555*
+  ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge
+ pci:v00008086d0000B555sv000012C7sd00005005*
+- ID_MODEL_FROM_DATABASE=SS7HD PCI Adaptor Card
++ ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge (SS7HD PCI Adaptor Card)
+ pci:v00008086d0000B555sv000012C7sd00005006*
+- ID_MODEL_FROM_DATABASE=SS7HDC cPCI Adaptor Card
++ ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge (SS7HDC cPCI Adaptor Card)
+ pci:v00008086d0000B555sv000012D9sd0000000A*
+- ID_MODEL_FROM_DATABASE=PCI VoIP Gateway
++ ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge (PCI VoIP Gateway)
+ pci:v00008086d0000B555sv00004C53sd00001050*
+- ID_MODEL_FROM_DATABASE=CT7 mainboard
++ ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge (CT7 mainboard)
+ pci:v00008086d0000B555sv00004C53sd00001051*
+- ID_MODEL_FROM_DATABASE=CE7 mainboard
++ ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge (CE7 mainboard)
+ pci:v00008086d0000B555sv0000E4BFsd00001000*
+- ID_MODEL_FROM_DATABASE=CC8-1-BLUES
++ ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge (CC8-1-BLUES)
+ pci:v00008086d0000D130*
+  ID_MODEL_FROM_DATABASE=Core Processor DMI
+@@ -71583,16 +71583,16 @@ pci:v00008086d0000D131*
+  ID_MODEL_FROM_DATABASE=Core Processor DMI
+ pci:v00008086d0000D131sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=Core Processor DMI (OptiPlex 980)
+ pci:v00008086d0000D131sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=Core Processor DMI (C7SIM-Q Motherboard)
+ pci:v00008086d0000D132*
+  ID_MODEL_FROM_DATABASE=Core Processor DMI
+ pci:v00008086d0000D132sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=Core Processor DMI (Latitude E6510)
+ pci:v00008086d0000D133*
+  ID_MODEL_FROM_DATABASE=Core Processor DMI
+@@ -71613,13 +71613,13 @@ pci:v00008086d0000D138*
+  ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 1
+ pci:v00008086d0000D138sv00001028sd000002DA*
+- ID_MODEL_FROM_DATABASE=OptiPlex 980
++ ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 1 (OptiPlex 980)
+ pci:v00008086d0000D138sv00001028sd0000040B*
+- ID_MODEL_FROM_DATABASE=Latitude E6510
++ ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 1 (Latitude E6510)
+ pci:v00008086d0000D138sv000015D9sd0000060D*
+- ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++ ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 1 (C7SIM-Q Motherboard)
+ pci:v00008086d0000D139*
+  ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 2
+@@ -71730,7 +71730,7 @@ pci:v00009004d00005078*
+  ID_MODEL_FROM_DATABASE=AIC-7850
+ pci:v00009004d00005078sv00009004sd00007850*
+- ID_MODEL_FROM_DATABASE=AHA-2904/Integrated AIC-7850
++ ID_MODEL_FROM_DATABASE=AIC-7850 (AHA-2904/Integrated AIC-7850)
+ pci:v00009004d00005175*
+  ID_MODEL_FROM_DATABASE=AIC-755x
+@@ -71766,10 +71766,10 @@ pci:v00009004d00005647*
+  ID_MODEL_FROM_DATABASE=ANA-7711 TCP Offload Engine
+ pci:v00009004d00005647sv00009004sd00007710*
+- ID_MODEL_FROM_DATABASE=ANA-7711F TCP Offload Engine - Optical
++ ID_MODEL_FROM_DATABASE=ANA-7711 TCP Offload Engine (ANA-7711F TCP Offload Engine - Optical)
+ pci:v00009004d00005647sv00009004sd00007711*
+- ID_MODEL_FROM_DATABASE=ANA-7711LP TCP Offload Engine - Copper
++ ID_MODEL_FROM_DATABASE=ANA-7711 TCP Offload Engine (ANA-7711LP TCP Offload Engine - Copper)
+ pci:v00009004d00005675*
+  ID_MODEL_FROM_DATABASE=AIC-755x
+@@ -71799,7 +71799,7 @@ pci:v00009004d00006075*
+  ID_MODEL_FROM_DATABASE=AIC-1480 / APA-1480
+ pci:v00009004d00006075sv00009004sd00007560*
+- ID_MODEL_FROM_DATABASE=AIC-1480 / APA-1480 Cardbus
++ ID_MODEL_FROM_DATABASE=AIC-1480 / APA-1480 (Cardbus)
+ pci:v00009004d00006078*
+  ID_MODEL_FROM_DATABASE=AIC-7860
+@@ -71808,7 +71808,7 @@ pci:v00009004d00006178*
+  ID_MODEL_FROM_DATABASE=AIC-7861
+ pci:v00009004d00006178sv00009004sd00007861*
+- ID_MODEL_FROM_DATABASE=AHA-2940AU Single
++ ID_MODEL_FROM_DATABASE=AIC-7861 (AHA-2940AU Single)
+ pci:v00009004d00006278*
+  ID_MODEL_FROM_DATABASE=AIC-7860
+@@ -71832,46 +71832,46 @@ pci:v00009004d00006915*
+  ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A
+ pci:v00009004d00006915sv00009004sd00000008*
+- ID_MODEL_FROM_DATABASE=ANA69011A/TX 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA69011A/TX 10/100)
+ pci:v00009004d00006915sv00009004sd00000009*
+- ID_MODEL_FROM_DATABASE=ANA69011A/TX 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA69011A/TX 10/100)
+ pci:v00009004d00006915sv00009004sd00000010*
+- ID_MODEL_FROM_DATABASE=ANA62022 2-port 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62022 2-port 10/100)
+ pci:v00009004d00006915sv00009004sd00000018*
+- ID_MODEL_FROM_DATABASE=ANA62044 4-port 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62044 4-port 10/100)
+ pci:v00009004d00006915sv00009004sd00000019*
+- ID_MODEL_FROM_DATABASE=ANA62044 4-port 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62044 4-port 10/100)
+ pci:v00009004d00006915sv00009004sd00000020*
+- ID_MODEL_FROM_DATABASE=ANA62022 2-port 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62022 2-port 10/100)
+ pci:v00009004d00006915sv00009004sd00000028*
+- ID_MODEL_FROM_DATABASE=ANA69011A/TX 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA69011A/TX 10/100)
+ pci:v00009004d00006915sv00009004sd00008008*
+- ID_MODEL_FROM_DATABASE=ANA69011A/TX 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA69011A/TX 64 bit 10/100)
+ pci:v00009004d00006915sv00009004sd00008009*
+- ID_MODEL_FROM_DATABASE=ANA69011A/TX 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA69011A/TX 64 bit 10/100)
+ pci:v00009004d00006915sv00009004sd00008010*
+- ID_MODEL_FROM_DATABASE=ANA62022 2-port 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62022 2-port 64 bit 10/100)
+ pci:v00009004d00006915sv00009004sd00008018*
+- ID_MODEL_FROM_DATABASE=ANA62044 4-port 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62044 4-port 64 bit 10/100)
+ pci:v00009004d00006915sv00009004sd00008019*
+- ID_MODEL_FROM_DATABASE=ANA62044 4-port 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62044 4-port 64 bit 10/100)
+ pci:v00009004d00006915sv00009004sd00008020*
+- ID_MODEL_FROM_DATABASE=ANA62022 2-port 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA62022 2-port 64 bit 10/100)
+ pci:v00009004d00006915sv00009004sd00008028*
+- ID_MODEL_FROM_DATABASE=ANA69011A/TX 64 bit 10/100
++ ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A (ANA69011A/TX 64 bit 10/100)
+ pci:v00009004d00007078*
+  ID_MODEL_FROM_DATABASE=AHA-294x / AIC-7870
+@@ -71910,7 +71910,7 @@ pci:v00009004d00007815*
+  ID_MODEL_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC
+ pci:v00009004d00007815sv00009004sd00007815*
+- ID_MODEL_FROM_DATABASE=ARO-1130U2 RAID Controller
++ ID_MODEL_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC (ARO-1130U2 RAID Controller)
+ pci:v00009004d00007815sv00009004sd00007840*
+  ID_MODEL_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC
+@@ -71961,25 +71961,25 @@ pci:v00009004d00007895*
+  ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895
+ pci:v00009004d00007895sv00009004sd00007890*
+- ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B)
+ pci:v00009004d00007895sv00009004sd00007891*
+- ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-2940U/2940UW Dual)
+ pci:v00009004d00007895sv00009004sd00007892*
+- ID_MODEL_FROM_DATABASE=AHA-3940AU/AUW/AUWD/UWD
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-3940AU/AUW/AUWD/UWD)
+ pci:v00009004d00007895sv00009004sd00007894*
+- ID_MODEL_FROM_DATABASE=AHA-3944AUWD
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-3944AUWD)
+ pci:v00009004d00007895sv00009004sd00007895*
+- ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B)
+ pci:v00009004d00007895sv00009004sd00007896*
+- ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B)
+ pci:v00009004d00007895sv00009004sd00007897*
+- ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 (AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B)
+ pci:v00009004d00007896*
+  ID_MODEL_FROM_DATABASE=AIC-789x
+@@ -71991,13 +71991,13 @@ pci:v00009004d00008078*
+  ID_MODEL_FROM_DATABASE=AIC-7880U
+ pci:v00009004d00008078sv00009004sd00007880*
+- ID_MODEL_FROM_DATABASE=AIC-7880P Ultra/Ultra Wide SCSI Chipset
++ ID_MODEL_FROM_DATABASE=AIC-7880U (AIC-7880P Ultra/Ultra Wide SCSI Chipset)
+ pci:v00009004d00008178*
+  ID_MODEL_FROM_DATABASE=AHA-2940U/UW/D / AIC-7881U
+ pci:v00009004d00008178sv00009004sd00007881*
+- ID_MODEL_FROM_DATABASE=AHA-2940UW SCSI Host Adapter
++ ID_MODEL_FROM_DATABASE=AHA-2940U/UW/D / AIC-7881U (AHA-2940UW SCSI Host Adapter)
+ pci:v00009004d00008278*
+  ID_MODEL_FROM_DATABASE=AHA-3940U/UW/UWD / AIC-7882U
+@@ -72018,13 +72018,13 @@ pci:v00009004d00008778*
+  ID_MODEL_FROM_DATABASE=AHA-2940UW Pro / AIC-788x
+ pci:v00009004d00008778sv00009004sd00007887*
+- ID_MODEL_FROM_DATABASE=2940UW Pro Ultra-Wide SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940UW Pro / AIC-788x (2940UW Pro Ultra-Wide SCSI Controller)
+ pci:v00009004d00008878*
+  ID_MODEL_FROM_DATABASE=AHA-2930UW / AIC-7888
+ pci:v00009004d00008878sv00009004sd00007888*
+- ID_MODEL_FROM_DATABASE=AHA-2930UW SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2930UW / AIC-7888 (AHA-2930UW SCSI Controller)
+ pci:v00009004d00008B78*
+  ID_MODEL_FROM_DATABASE=ABA-1030
+@@ -72039,19 +72039,19 @@ pci:v00009005d00000010*
+  ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W
+ pci:v00009005d00000010sv00009005sd00002180*
+- ID_MODEL_FROM_DATABASE=AHA-2940U2 SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W (AHA-2940U2 SCSI Controller)
+ pci:v00009005d00000010sv00009005sd00008100*
+- ID_MODEL_FROM_DATABASE=AHA-2940U2B SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W (AHA-2940U2B SCSI Controller)
+ pci:v00009005d00000010sv00009005sd0000A100*
+- ID_MODEL_FROM_DATABASE=AHA-2940U2B SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W (AHA-2940U2B SCSI Controller)
+ pci:v00009005d00000010sv00009005sd0000A180*
+- ID_MODEL_FROM_DATABASE=AHA-2940U2W SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W (AHA-2940U2W SCSI Controller)
+ pci:v00009005d00000010sv00009005sd0000E100*
+- ID_MODEL_FROM_DATABASE=AHA-2950U2B SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W (AHA-2950U2B SCSI Controller)
+ pci:v00009005d00000011*
+  ID_MODEL_FROM_DATABASE=AHA-2930U2
+@@ -72060,19 +72060,19 @@ pci:v00009005d00000013*
+  ID_MODEL_FROM_DATABASE=78902
+ pci:v00009005d00000013sv00009005sd00000003*
+- ID_MODEL_FROM_DATABASE=AAA-131U2 Array1000 1 Channel RAID Controller
++ ID_MODEL_FROM_DATABASE=78902 (AAA-131U2 Array1000 1 Channel RAID Controller)
+ pci:v00009005d00000013sv00009005sd0000000F*
+- ID_MODEL_FROM_DATABASE=AIC7890_ARO
++ ID_MODEL_FROM_DATABASE=78902 (AIC7890_ARO)
+ pci:v00009005d0000001F*
+  ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W / 7890/7891
+ pci:v00009005d0000001Fsv00009005sd0000000F*
+- ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W / 7890/7891 (2940U2W SCSI Controller)
+ pci:v00009005d0000001Fsv00009005sd0000A180*
+- ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller
++ ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W / 7890/7891 (2940U2W SCSI Controller)
+ pci:v00009005d00000020*
+  ID_MODEL_FROM_DATABASE=AIC-7890
+@@ -72090,10 +72090,10 @@ pci:v00009005d00000050*
+  ID_MODEL_FROM_DATABASE=AHA-3940U2x/395U2x
+ pci:v00009005d00000050sv00009005sd0000F500*
+- ID_MODEL_FROM_DATABASE=AHA-3950U2B
++ ID_MODEL_FROM_DATABASE=AHA-3940U2x/395U2x (AHA-3950U2B)
+ pci:v00009005d00000050sv00009005sd0000FFFF*
+- ID_MODEL_FROM_DATABASE=AHA-3950U2B
++ ID_MODEL_FROM_DATABASE=AHA-3940U2x/395U2x (AHA-3950U2B)
+ pci:v00009005d00000051*
+  ID_MODEL_FROM_DATABASE=AHA-3950U2D
+@@ -72105,7 +72105,7 @@ pci:v00009005d00000053*
+  ID_MODEL_FROM_DATABASE=AIC-7896 SCSI Controller
+ pci:v00009005d00000053sv00009005sd0000FFFF*
+- ID_MODEL_FROM_DATABASE=AIC-7896 SCSI Controller mainboard implementation
++ ID_MODEL_FROM_DATABASE=AIC-7896 SCSI Controller (mainboard implementation)
+ pci:v00009005d0000005F*
+  ID_MODEL_FROM_DATABASE=AIC-7896U2/7897U2
+@@ -72114,25 +72114,25 @@ pci:v00009005d00000080*
+  ID_MODEL_FROM_DATABASE=AIC-7892A U160/m
+ pci:v00009005d00000080sv00000E11sd0000E2A0*
+- ID_MODEL_FROM_DATABASE=Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter
++ ID_MODEL_FROM_DATABASE=AIC-7892A U160/m (Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter)
+ pci:v00009005d00000080sv00009005sd00006220*
+- ID_MODEL_FROM_DATABASE=AHA-29160C
++ ID_MODEL_FROM_DATABASE=AIC-7892A U160/m (AHA-29160C)
+ pci:v00009005d00000080sv00009005sd000062A0*
+- ID_MODEL_FROM_DATABASE=29160N Ultra160 SCSI Controller
++ ID_MODEL_FROM_DATABASE=AIC-7892A U160/m (29160N Ultra160 SCSI Controller)
+ pci:v00009005d00000080sv00009005sd0000E220*
+- ID_MODEL_FROM_DATABASE=29160LP Low Profile Ultra160 SCSI Controller
++ ID_MODEL_FROM_DATABASE=AIC-7892A U160/m (29160LP Low Profile Ultra160 SCSI Controller)
+ pci:v00009005d00000080sv00009005sd0000E2A0*
+- ID_MODEL_FROM_DATABASE=29160 Ultra160 SCSI Controller
++ ID_MODEL_FROM_DATABASE=AIC-7892A U160/m (29160 Ultra160 SCSI Controller)
+ pci:v00009005d00000081*
+  ID_MODEL_FROM_DATABASE=AIC-7892B U160/m
+ pci:v00009005d00000081sv00009005sd000062A1*
+- ID_MODEL_FROM_DATABASE=19160 Ultra160 SCSI Controller
++ ID_MODEL_FROM_DATABASE=AIC-7892B U160/m (19160 Ultra160 SCSI Controller)
+ pci:v00009005d00000083*
+  ID_MODEL_FROM_DATABASE=AIC-7892D U160/m
+@@ -72141,10 +72141,10 @@ pci:v00009005d0000008F*
+  ID_MODEL_FROM_DATABASE=AIC-7892P U160/m
+ pci:v00009005d0000008Fsv00001179sd00000001*
+- ID_MODEL_FROM_DATABASE=Magnia Z310
++ ID_MODEL_FROM_DATABASE=AIC-7892P U160/m (Magnia Z310)
+ pci:v00009005d0000008Fsv000015D9sd00009005*
+- ID_MODEL_FROM_DATABASE=Onboard SCSI Host Adapter
++ ID_MODEL_FROM_DATABASE=AIC-7892P U160/m (Onboard SCSI Host Adapter)
+ pci:v00009005d00000092*
+  ID_MODEL_FROM_DATABASE=AVC-2010 [VideoH!]
+@@ -72156,10 +72156,10 @@ pci:v00009005d000000C0*
+  ID_MODEL_FROM_DATABASE=AHA-3960D / AIC-7899A U160/m
+ pci:v00009005d000000C0sv00000E11sd0000F620*
+- ID_MODEL_FROM_DATABASE=Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter
++ ID_MODEL_FROM_DATABASE=AHA-3960D / AIC-7899A U160/m (Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter)
+ pci:v00009005d000000C0sv00009005sd0000F620*
+- ID_MODEL_FROM_DATABASE=AHA-3960D U160/m
++ ID_MODEL_FROM_DATABASE=AHA-3960D / AIC-7899A U160/m (AHA-3960D U160/m)
+ pci:v00009005d000000C1*
+  ID_MODEL_FROM_DATABASE=AIC-7899B U160/m
+@@ -72171,28 +72171,28 @@ pci:v00009005d000000C5*
+  ID_MODEL_FROM_DATABASE=RAID subsystem HBA
+ pci:v00009005d000000C5sv00001028sd000000C5*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2400,2500,2550,4400
++ ID_MODEL_FROM_DATABASE=RAID subsystem HBA (PowerEdge 2400,2500,2550,4400)
+ pci:v00009005d000000CF*
+  ID_MODEL_FROM_DATABASE=AIC-7899P U160/m
+ pci:v00009005d000000CFsv00001028sd000000CE*
+- ID_MODEL_FROM_DATABASE=PowerEdge 1400
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (PowerEdge 1400)
+ pci:v00009005d000000CFsv00001028sd000000D1*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2550
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (PowerEdge 2550)
+ pci:v00009005d000000CFsv00001028sd000000D9*
+- ID_MODEL_FROM_DATABASE=PowerEdge 2500
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (PowerEdge 2500)
+ pci:v00009005d000000CFsv000010F1sd00002462*
+- ID_MODEL_FROM_DATABASE=Thunder K7 S2462
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (Thunder K7 S2462)
+ pci:v00009005d000000CFsv000015D9sd00009005*
+- ID_MODEL_FROM_DATABASE=Onboard SCSI Host Adapter
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (Onboard SCSI Host Adapter)
+ pci:v00009005d000000CFsv00008086sd00003411*
+- ID_MODEL_FROM_DATABASE=SDS2 Mainboard
++ ID_MODEL_FROM_DATABASE=AIC-7899P U160/m (SDS2 Mainboard)
+ pci:v00009005d00000241*
+  ID_MODEL_FROM_DATABASE=Serial ATA II RAID 1420SA
+@@ -72210,13 +72210,13 @@ pci:v00009005d00000250*
+  ID_MODEL_FROM_DATABASE=ServeRAID Controller
+ pci:v00009005d00000250sv00001014sd00000279*
+- ID_MODEL_FROM_DATABASE=ServeRAID 6M
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID 6M)
+ pci:v00009005d00000250sv00001014sd0000028C*
+- ID_MODEL_FROM_DATABASE=ServeRAID 6i/6i+
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID 6i/6i+)
+ pci:v00009005d00000250sv00001014sd0000028E*
+- ID_MODEL_FROM_DATABASE=ServeRAID 7k
++ ID_MODEL_FROM_DATABASE=ServeRAID Controller (ServeRAID 7k)
+ pci:v00009005d00000279*
+  ID_MODEL_FROM_DATABASE=ServeRAID 6M
+@@ -72225,415 +72225,415 @@ pci:v00009005d00000283*
+  ID_MODEL_FROM_DATABASE=AAC-RAID
+ pci:v00009005d00000283sv00009005sd00000283*
+- ID_MODEL_FROM_DATABASE=Catapult
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Catapult)
+ pci:v00009005d00000284*
+  ID_MODEL_FROM_DATABASE=AAC-RAID
+ pci:v00009005d00000284sv00009005sd00000284*
+- ID_MODEL_FROM_DATABASE=Tomcat
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Tomcat)
+ pci:v00009005d00000285*
+  ID_MODEL_FROM_DATABASE=AAC-RAID
+ pci:v00009005d00000285sv00000E11sd00000295*
+- ID_MODEL_FROM_DATABASE=SATA 6Ch (Bearcat)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SATA 6Ch (Bearcat))
+ pci:v00009005d00000285sv00001014sd000002F2*
+- ID_MODEL_FROM_DATABASE=ServeRAID 8i
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ServeRAID 8i)
+ pci:v00009005d00000285sv00001028sd00000287*
+- ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 320/DC
++ ID_MODEL_FROM_DATABASE=AAC-RAID (PowerEdge Expandable RAID Controller 320/DC)
+ pci:v00009005d00000285sv00001028sd00000291*
+- ID_MODEL_FROM_DATABASE=CERC SATA RAID 2 PCI SATA 6ch (DellCorsair)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (CERC SATA RAID 2 PCI SATA 6ch (DellCorsair))
+ pci:v00009005d00000285sv0000103Csd00003227*
+- ID_MODEL_FROM_DATABASE=AAR-2610SA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (AAR-2610SA)
+ pci:v00009005d00000285sv0000108Esd00000286*
+- ID_MODEL_FROM_DATABASE=Sun StorageTek SAS RAID HBA, Internal
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Sun StorageTek SAS RAID HBA, Internal)
+ pci:v00009005d00000285sv0000108Esd00000287*
+- ID_MODEL_FROM_DATABASE=STK RAID EXT
++ ID_MODEL_FROM_DATABASE=AAC-RAID (STK RAID EXT)
+ pci:v00009005d00000285sv0000108Esd00007AAC*
+- ID_MODEL_FROM_DATABASE=STK RAID REM
++ ID_MODEL_FROM_DATABASE=AAC-RAID (STK RAID REM)
+ pci:v00009005d00000285sv0000108Esd00007AAE*
+- ID_MODEL_FROM_DATABASE=STK RAID EX
++ ID_MODEL_FROM_DATABASE=AAC-RAID (STK RAID EX)
+ pci:v00009005d00000285sv000015D9sd000002B5*
+- ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S4i
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SMC AOC-USAS-S4i)
+ pci:v00009005d00000285sv000015D9sd000002B6*
+- ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8i
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SMC AOC-USAS-S8i)
+ pci:v00009005d00000285sv000015D9sd000002C9*
+- ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S4iR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SMC AOC-USAS-S4iR)
+ pci:v00009005d00000285sv000015D9sd000002CA*
+- ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8iR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SMC AOC-USAS-S8iR)
+ pci:v00009005d00000285sv000015D9sd000002D2*
+- ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8i-LP
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SMC AOC-USAS-S8i-LP)
+ pci:v00009005d00000285sv000015D9sd000002D3*
+- ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8iR-LP
++ ID_MODEL_FROM_DATABASE=AAC-RAID (SMC AOC-USAS-S8iR-LP)
+ pci:v00009005d00000285sv000017AAsd00000286*
+- ID_MODEL_FROM_DATABASE=Legend S220 (Legend Crusader)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Legend S220 (Legend Crusader))
+ pci:v00009005d00000285sv000017AAsd00000287*
+- ID_MODEL_FROM_DATABASE=Legend S230 (Legend Vulcan)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Legend S230 (Legend Vulcan))
+ pci:v00009005d00000285sv00009005sd00000285*
+- ID_MODEL_FROM_DATABASE=2200S (Vulcan)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (2200S (Vulcan))
+ pci:v00009005d00000285sv00009005sd00000286*
+- ID_MODEL_FROM_DATABASE=2120S (Crusader)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (2120S (Crusader))
+ pci:v00009005d00000285sv00009005sd00000287*
+- ID_MODEL_FROM_DATABASE=2200S (Vulcan-2m)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (2200S (Vulcan-2m))
+ pci:v00009005d00000285sv00009005sd00000288*
+- ID_MODEL_FROM_DATABASE=3230S (Harrier)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (3230S (Harrier))
+ pci:v00009005d00000285sv00009005sd00000289*
+- ID_MODEL_FROM_DATABASE=3240S (Tornado)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (3240S (Tornado))
+ pci:v00009005d00000285sv00009005sd0000028A*
+- ID_MODEL_FROM_DATABASE=ASR-2020ZCR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2020ZCR)
+ pci:v00009005d00000285sv00009005sd0000028B*
+- ID_MODEL_FROM_DATABASE=ASR-2025ZCR (Terminator)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2025ZCR (Terminator))
+ pci:v00009005d00000285sv00009005sd0000028E*
+- ID_MODEL_FROM_DATABASE=ASR-2020SA (Skyhawk)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2020SA (Skyhawk))
+ pci:v00009005d00000285sv00009005sd0000028F*
+- ID_MODEL_FROM_DATABASE=ASR-2025SA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2025SA)
+ pci:v00009005d00000285sv00009005sd00000290*
+- ID_MODEL_FROM_DATABASE=AAR-2410SA PCI SATA 4ch (Jaguar II)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (AAR-2410SA PCI SATA 4ch (Jaguar II))
+ pci:v00009005d00000285sv00009005sd00000292*
+- ID_MODEL_FROM_DATABASE=AAR-2810SA PCI SATA 8ch (Corsair-8)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (AAR-2810SA PCI SATA 8ch (Corsair-8))
+ pci:v00009005d00000285sv00009005sd00000293*
+- ID_MODEL_FROM_DATABASE=AAR-21610SA PCI SATA 16ch (Corsair-16)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (AAR-21610SA PCI SATA 16ch (Corsair-16))
+ pci:v00009005d00000285sv00009005sd00000294*
+- ID_MODEL_FROM_DATABASE=ESD SO-DIMM PCI-X SATA ZCR (Prowler)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ESD SO-DIMM PCI-X SATA ZCR (Prowler))
+ pci:v00009005d00000285sv00009005sd00000296*
+- ID_MODEL_FROM_DATABASE=ASR-2240S
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2240S)
+ pci:v00009005d00000285sv00009005sd00000297*
+- ID_MODEL_FROM_DATABASE=ASR-4005SAS
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-4005SAS)
+ pci:v00009005d00000285sv00009005sd00000298*
+- ID_MODEL_FROM_DATABASE=ASR-4000
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-4000)
+ pci:v00009005d00000285sv00009005sd00000299*
+- ID_MODEL_FROM_DATABASE=ASR-4800SAS
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-4800SAS)
+ pci:v00009005d00000285sv00009005sd0000029A*
+- ID_MODEL_FROM_DATABASE=4805SAS
++ ID_MODEL_FROM_DATABASE=AAC-RAID (4805SAS)
+ pci:v00009005d00000285sv00009005sd000002A4*
+- ID_MODEL_FROM_DATABASE=ICP ICP9085LI
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP9085LI)
+ pci:v00009005d00000285sv00009005sd000002A5*
+- ID_MODEL_FROM_DATABASE=ICP ICP5085BR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5085BR)
+ pci:v00009005d00000285sv00009005sd000002B5*
+- ID_MODEL_FROM_DATABASE=ASR5800
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR5800)
+ pci:v00009005d00000285sv00009005sd000002B6*
+- ID_MODEL_FROM_DATABASE=ASR5805
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR5805)
+ pci:v00009005d00000285sv00009005sd000002B7*
+- ID_MODEL_FROM_DATABASE=ASR5808
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR5808)
+ pci:v00009005d00000285sv00009005sd000002B8*
+- ID_MODEL_FROM_DATABASE=ICP5445SL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP5445SL)
+ pci:v00009005d00000285sv00009005sd000002B9*
+- ID_MODEL_FROM_DATABASE=ICP5085SL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP5085SL)
+ pci:v00009005d00000285sv00009005sd000002BA*
+- ID_MODEL_FROM_DATABASE=ICP5805SL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP5805SL)
+ pci:v00009005d00000285sv00009005sd000002BB*
+- ID_MODEL_FROM_DATABASE=3405
++ ID_MODEL_FROM_DATABASE=AAC-RAID (3405)
+ pci:v00009005d00000285sv00009005sd000002BC*
+- ID_MODEL_FROM_DATABASE=3805
++ ID_MODEL_FROM_DATABASE=AAC-RAID (3805)
+ pci:v00009005d00000285sv00009005sd000002BD*
+- ID_MODEL_FROM_DATABASE=31205
++ ID_MODEL_FROM_DATABASE=AAC-RAID (31205)
+ pci:v00009005d00000285sv00009005sd000002BE*
+- ID_MODEL_FROM_DATABASE=31605
++ ID_MODEL_FROM_DATABASE=AAC-RAID (31605)
+ pci:v00009005d00000285sv00009005sd000002BF*
+- ID_MODEL_FROM_DATABASE=ICP ICP5045BL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5045BL)
+ pci:v00009005d00000285sv00009005sd000002C0*
+- ID_MODEL_FROM_DATABASE=ICP ICP5085BL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5085BL)
+ pci:v00009005d00000285sv00009005sd000002C1*
+- ID_MODEL_FROM_DATABASE=ICP ICP5125BR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5125BR)
+ pci:v00009005d00000285sv00009005sd000002C2*
+- ID_MODEL_FROM_DATABASE=ICP ICP5165BR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5165BR)
+ pci:v00009005d00000285sv00009005sd000002C3*
+- ID_MODEL_FROM_DATABASE=51205
++ ID_MODEL_FROM_DATABASE=AAC-RAID (51205)
+ pci:v00009005d00000285sv00009005sd000002C4*
+- ID_MODEL_FROM_DATABASE=51605
++ ID_MODEL_FROM_DATABASE=AAC-RAID (51605)
+ pci:v00009005d00000285sv00009005sd000002C5*
+- ID_MODEL_FROM_DATABASE=ICP ICP5125SL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5125SL)
+ pci:v00009005d00000285sv00009005sd000002C6*
+- ID_MODEL_FROM_DATABASE=ICP ICP5165SL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP ICP5165SL)
+ pci:v00009005d00000285sv00009005sd000002C7*
+- ID_MODEL_FROM_DATABASE=3085
++ ID_MODEL_FROM_DATABASE=AAC-RAID (3085)
+ pci:v00009005d00000285sv00009005sd000002C8*
+- ID_MODEL_FROM_DATABASE=ICP5805BL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ICP5805BL)
+ pci:v00009005d00000285sv00009005sd000002CE*
+- ID_MODEL_FROM_DATABASE=51245
++ ID_MODEL_FROM_DATABASE=AAC-RAID (51245)
+ pci:v00009005d00000285sv00009005sd000002CF*
+- ID_MODEL_FROM_DATABASE=51645
++ ID_MODEL_FROM_DATABASE=AAC-RAID (51645)
+ pci:v00009005d00000285sv00009005sd000002D0*
+- ID_MODEL_FROM_DATABASE=52445
++ ID_MODEL_FROM_DATABASE=AAC-RAID (52445)
+ pci:v00009005d00000285sv00009005sd000002D1*
+- ID_MODEL_FROM_DATABASE=5405
++ ID_MODEL_FROM_DATABASE=AAC-RAID (5405)
+ pci:v00009005d00000285sv00009005sd000002D4*
+- ID_MODEL_FROM_DATABASE=ASR-2045
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2045)
+ pci:v00009005d00000285sv00009005sd000002D5*
+- ID_MODEL_FROM_DATABASE=ASR-2405
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2405)
+ pci:v00009005d00000285sv00009005sd000002D6*
+- ID_MODEL_FROM_DATABASE=ASR-2445
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2445)
+ pci:v00009005d00000285sv00009005sd000002D7*
+- ID_MODEL_FROM_DATABASE=ASR-2805
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2805)
+ pci:v00009005d00000285sv00009005sd000002D8*
+- ID_MODEL_FROM_DATABASE=5405G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (5405G)
+ pci:v00009005d00000285sv00009005sd000002D9*
+- ID_MODEL_FROM_DATABASE=5445G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (5445G)
+ pci:v00009005d00000285sv00009005sd000002DA*
+- ID_MODEL_FROM_DATABASE=5805G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (5805G)
+ pci:v00009005d00000285sv00009005sd000002DB*
+- ID_MODEL_FROM_DATABASE=5085G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (5085G)
+ pci:v00009005d00000285sv00009005sd000002DC*
+- ID_MODEL_FROM_DATABASE=51245G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (51245G)
+ pci:v00009005d00000285sv00009005sd000002DD*
+- ID_MODEL_FROM_DATABASE=51645G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (51645G)
+ pci:v00009005d00000285sv00009005sd000002DE*
+- ID_MODEL_FROM_DATABASE=52445G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (52445G)
+ pci:v00009005d00000285sv00009005sd000002DF*
+- ID_MODEL_FROM_DATABASE=ASR-2045G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2045G)
+ pci:v00009005d00000285sv00009005sd000002E0*
+- ID_MODEL_FROM_DATABASE=ASR-2405G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2405G)
+ pci:v00009005d00000285sv00009005sd000002E1*
+- ID_MODEL_FROM_DATABASE=ASR-2445G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2445G)
+ pci:v00009005d00000285sv00009005sd000002E2*
+- ID_MODEL_FROM_DATABASE=ASR-2805G
++ ID_MODEL_FROM_DATABASE=AAC-RAID (ASR-2805G)
+ pci:v00009005d00000286*
+  ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket)
+ pci:v00009005d00000286sv00001014sd0000034D*
+- ID_MODEL_FROM_DATABASE=8s
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (8s)
+ pci:v00009005d00000286sv00001014sd00009540*
+- ID_MODEL_FROM_DATABASE=ServeRAID 8k/8k-l4
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ServeRAID 8k/8k-l4)
+ pci:v00009005d00000286sv00001014sd00009580*
+- ID_MODEL_FROM_DATABASE=ServeRAID 8k/8k-l8
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ServeRAID 8k/8k-l8)
+ pci:v00009005d00000286sv00009005sd0000028C*
+- ID_MODEL_FROM_DATABASE=ASR-2230S + ASR-2230SLP PCI-X (Lancer)
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ASR-2230S + ASR-2230SLP PCI-X (Lancer))
+ pci:v00009005d00000286sv00009005sd0000028D*
+- ID_MODEL_FROM_DATABASE=ASR-2130S
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ASR-2130S)
+ pci:v00009005d00000286sv00009005sd0000029B*
+- ID_MODEL_FROM_DATABASE=ASR-2820SA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ASR-2820SA)
+ pci:v00009005d00000286sv00009005sd0000029C*
+- ID_MODEL_FROM_DATABASE=ASR-2620SA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ASR-2620SA)
+ pci:v00009005d00000286sv00009005sd0000029D*
+- ID_MODEL_FROM_DATABASE=ASR-2420SA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ASR-2420SA)
+ pci:v00009005d00000286sv00009005sd0000029E*
+- ID_MODEL_FROM_DATABASE=ICP ICP9024R0
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP9024R0)
+ pci:v00009005d00000286sv00009005sd0000029F*
+- ID_MODEL_FROM_DATABASE=ICP ICP9014R0
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP9014R0)
+ pci:v00009005d00000286sv00009005sd000002A0*
+- ID_MODEL_FROM_DATABASE=ICP ICP9047MA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP9047MA)
+ pci:v00009005d00000286sv00009005sd000002A1*
+- ID_MODEL_FROM_DATABASE=ICP ICP9087MA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP9087MA)
+ pci:v00009005d00000286sv00009005sd000002A2*
+- ID_MODEL_FROM_DATABASE=3800
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (3800)
+ pci:v00009005d00000286sv00009005sd000002A3*
+- ID_MODEL_FROM_DATABASE=ICP ICP5445AU
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP5445AU)
+ pci:v00009005d00000286sv00009005sd000002A4*
+- ID_MODEL_FROM_DATABASE=ICP ICP9085LI
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP9085LI)
+ pci:v00009005d00000286sv00009005sd000002A5*
+- ID_MODEL_FROM_DATABASE=ICP ICP5085BR
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP5085BR)
+ pci:v00009005d00000286sv00009005sd000002A6*
+- ID_MODEL_FROM_DATABASE=ICP9067MA
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP9067MA)
+ pci:v00009005d00000286sv00009005sd000002A7*
+- ID_MODEL_FROM_DATABASE=3805
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (3805)
+ pci:v00009005d00000286sv00009005sd000002A8*
+- ID_MODEL_FROM_DATABASE=3400
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (3400)
+ pci:v00009005d00000286sv00009005sd000002A9*
+- ID_MODEL_FROM_DATABASE=ICP ICP5085AU
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP5085AU)
+ pci:v00009005d00000286sv00009005sd000002AA*
+- ID_MODEL_FROM_DATABASE=ICP ICP5045AU
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP5045AU)
+ pci:v00009005d00000286sv00009005sd000002AC*
+- ID_MODEL_FROM_DATABASE=1800
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (1800)
+ pci:v00009005d00000286sv00009005sd000002B3*
+- ID_MODEL_FROM_DATABASE=2400
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (2400)
+ pci:v00009005d00000286sv00009005sd000002B4*
+- ID_MODEL_FROM_DATABASE=ICP ICP5045AL
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (ICP ICP5045AL)
+ pci:v00009005d00000286sv00009005sd00000800*
+- ID_MODEL_FROM_DATABASE=Callisto
++ ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) (Callisto)
+ pci:v00009005d0000028B*
+  ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2
+ pci:v00009005d0000028Bsv00009005sd00000200*
+- ID_MODEL_FROM_DATABASE=Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000201*
+- ID_MODEL_FROM_DATABASE=Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000300*
+- ID_MODEL_FROM_DATABASE=Series 6 - ASR-6405 - 4 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 - ASR-6405 - 4 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000301*
+- ID_MODEL_FROM_DATABASE=Series 6 - ASR-6805 - 8 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 - ASR-6805 - 8 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000302*
+- ID_MODEL_FROM_DATABASE=Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000310*
+- ID_MODEL_FROM_DATABASE=Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000311*
+- ID_MODEL_FROM_DATABASE=Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS)
+ pci:v00009005d0000028Bsv00009005sd00000400*
+- ID_MODEL_FROM_DATABASE=Series 6 - ASR-61205 - 12 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 - ASR-61205 - 12 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000401*
+- ID_MODEL_FROM_DATABASE=Series 6 - ASR-61605 - 16 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 - ASR-61605 - 16 internal 6G SAS ports)
+ pci:v00009005d0000028Bsv00009005sd00000403*
+- ID_MODEL_FROM_DATABASE=Series 6 - ASR-62405 - 24 internal 6G SAS ports
++ ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 (Series 6 - ASR-62405 - 24 internal 6G SAS ports)
+ pci:v00009005d0000028C*
+  ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3
+ pci:v00009005d0000028Csv00009005sd00000500*
+- ID_MODEL_FROM_DATABASE=Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Csv00009005sd00000501*
+- ID_MODEL_FROM_DATABASE=Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Csv00009005sd00000502*
+- ID_MODEL_FROM_DATABASE=Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Csv00009005sd00000503*
+- ID_MODEL_FROM_DATABASE=Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Csv00009005sd00000504*
+- ID_MODEL_FROM_DATABASE=Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Csv00009005sd00000505*
+- ID_MODEL_FROM_DATABASE=Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Csv00009005sd00000506*
+- ID_MODEL_FROM_DATABASE=Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 (Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028D*
+  ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3
+ pci:v00009005d0000028Dsv00009005sd00000550*
+- ID_MODEL_FROM_DATABASE=Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3 (Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Dsv00009005sd00000551*
+- ID_MODEL_FROM_DATABASE=Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3 (Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Dsv00009005sd00000552*
+- ID_MODEL_FROM_DATABASE=Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3 (Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Dsv00009005sd00000553*
+- ID_MODEL_FROM_DATABASE=Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3 (Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0)
+ pci:v00009005d0000028Dsv00009005sd00000554*
+- ID_MODEL_FROM_DATABASE=Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0
++ ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3 (Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0)
+ pci:v00009005d00000410*
+  ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA RAID)
+ pci:v00009005d00000410sv00009005sd00000410*
+- ID_MODEL_FROM_DATABASE=ASC-48300(Spirit RAID)
++ ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA RAID) (ASC-48300(Spirit RAID))
+ pci:v00009005d00000410sv00009005sd00000411*
+- ID_MODEL_FROM_DATABASE=ASC-58300 (Oakmont RAID)
++ ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA RAID) (ASC-58300 (Oakmont RAID))
+ pci:v00009005d00000412*
+  ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA non-RAID)
+ pci:v00009005d00000412sv00009005sd00000412*
+- ID_MODEL_FROM_DATABASE=ASC-48300 (Spirit non-RAID)
++ ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA non-RAID) (ASC-48300 (Spirit non-RAID))
+ pci:v00009005d00000412sv00009005sd00000413*
+- ID_MODEL_FROM_DATABASE=ASC-58300 (Oakmont non-RAID)
++ ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA non-RAID) (ASC-58300 (Oakmont non-RAID))
+ pci:v00009005d00000415*
+  ID_MODEL_FROM_DATABASE=ASC-58300 SAS (Razor-External HBA RAID)
+@@ -72657,13 +72657,13 @@ pci:v00009005d00000430*
+  ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA RAID)
+ pci:v00009005d00000430sv00009005sd00000430*
+- ID_MODEL_FROM_DATABASE=ASC-44300 (Spirit-Lite RAID)
++ ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA RAID) (ASC-44300 (Spirit-Lite RAID))
+ pci:v00009005d00000432*
+  ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA non-RAID)
+ pci:v00009005d00000432sv00009005sd00000432*
+- ID_MODEL_FROM_DATABASE=ASC-44300 (Spirit-Lite non-RAID)
++ ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA non-RAID) (ASC-44300 (Spirit-Lite non-RAID))
+ pci:v00009005d0000043E*
+  ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite ASIC non-RAID)
+@@ -72678,22 +72678,22 @@ pci:v00009005d00000500*
+  ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller
+ pci:v00009005d00000500sv00001014sd000002C1*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS Adapter (572A/572C)
++ ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller (PCI-X DDR 3Gb SAS Adapter (572A/572C))
+ pci:v00009005d00000500sv00001014sd000002C2*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572B/572D)
++ ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller (PCI-X DDR 3Gb SAS RAID Adapter (572B/572D))
+ pci:v00009005d00000503*
+  ID_MODEL_FROM_DATABASE=Scamp chipset SCSI controller
+ pci:v00009005d00000503sv00001014sd000002BF*
+- ID_MODEL_FROM_DATABASE=Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E)
++ ID_MODEL_FROM_DATABASE=Scamp chipset SCSI controller (Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E))
+ pci:v00009005d00000503sv00001014sd000002C3*
+- ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572F)
++ ID_MODEL_FROM_DATABASE=Scamp chipset SCSI controller (PCI-X DDR 3Gb SAS RAID Adapter (572F))
+ pci:v00009005d00000503sv00001014sd000002D5*
+- ID_MODEL_FROM_DATABASE=Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F)
++ ID_MODEL_FROM_DATABASE=Scamp chipset SCSI controller (Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F))
+ pci:v00009005d00000910*
+  ID_MODEL_FROM_DATABASE=AUA-3100B
+@@ -72714,10 +72714,10 @@ pci:v00009005d00008011*
+  ID_MODEL_FROM_DATABASE=ASC-39320D
+ pci:v00009005d00008011sv00000E11sd000000AC*
+- ID_MODEL_FROM_DATABASE=ASC-39320D U320
++ ID_MODEL_FROM_DATABASE=ASC-39320D (U320)
+ pci:v00009005d00008011sv00009005sd00000041*
+- ID_MODEL_FROM_DATABASE=ASC-39320D U320
++ ID_MODEL_FROM_DATABASE=ASC-39320D (U320)
+ pci:v00009005d00008012*
+  ID_MODEL_FROM_DATABASE=ASC-29320 U320
+@@ -72738,10 +72738,10 @@ pci:v00009005d00008017*
+  ID_MODEL_FROM_DATABASE=ASC-29320ALP U320
+ pci:v00009005d00008017sv00009005sd00000044*
+- ID_MODEL_FROM_DATABASE=ASC-29320ALP PCIx U320
++ ID_MODEL_FROM_DATABASE=ASC-29320ALP U320 (ASC-29320ALP PCIx U320)
+ pci:v00009005d00008017sv00009005sd00000045*
+- ID_MODEL_FROM_DATABASE=ASC-29320LPE PCIe U320
++ ID_MODEL_FROM_DATABASE=ASC-29320ALP U320 (ASC-29320LPE PCIe U320)
+ pci:v00009005d0000801C*
+  ID_MODEL_FROM_DATABASE=ASC-39320D U320
+@@ -72750,7 +72750,7 @@ pci:v00009005d0000801D*
+  ID_MODEL_FROM_DATABASE=AIC-7902B U320
+ pci:v00009005d0000801Dsv00001014sd000002CC*
+- ID_MODEL_FROM_DATABASE=ServeRAID 7e
++ ID_MODEL_FROM_DATABASE=AIC-7902B U320 (ServeRAID 7e)
+ pci:v00009005d0000801E*
+  ID_MODEL_FROM_DATABASE=AIC-7901A U320
+@@ -72759,7 +72759,7 @@ pci:v00009005d0000801F*
+  ID_MODEL_FROM_DATABASE=AIC-7902 U320
+ pci:v00009005d0000801Fsv00001734sd00001011*
+- ID_MODEL_FROM_DATABASE=PRIMERGY RX300 onboard SCSI
++ ID_MODEL_FROM_DATABASE=AIC-7902 U320 (PRIMERGY RX300 onboard SCSI)
+ pci:v00009005d00008080*
+  ID_MODEL_FROM_DATABASE=ASC-29320A U320 w/HostRAID
+@@ -72777,7 +72777,7 @@ pci:v00009005d0000808F*
+  ID_MODEL_FROM_DATABASE=AIC-7901 U320 w/HostRAID
+ pci:v00009005d0000808Fsv00001028sd00000168*
+- ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++ ID_MODEL_FROM_DATABASE=AIC-7901 U320 w/HostRAID (Precision Workstation 670 Mainboard)
+ pci:v00009005d00008090*
+  ID_MODEL_FROM_DATABASE=ASC-39320 U320 w/HostRAID
+@@ -72810,7 +72810,7 @@ pci:v00009005d0000809D*
+  ID_MODEL_FROM_DATABASE=AIC-7902(B) U320 w/HostRAID
+ pci:v00009005d0000809Dsv00001014sd000002CC*
+- ID_MODEL_FROM_DATABASE=ServeRAID 7e
++ ID_MODEL_FROM_DATABASE=AIC-7902(B) U320 w/HostRAID (ServeRAID 7e)
+ pci:v00009005d0000809E*
+  ID_MODEL_FROM_DATABASE=AIC-7901A U320 w/HostRAID
+@@ -72858,7 +72858,7 @@ pci:v00009710d00009815*
+  ID_MODEL_FROM_DATABASE=PCI 9815 Multi-I/O Controller
+ pci:v00009710d00009815sv00001000sd00000020*
+- ID_MODEL_FROM_DATABASE=2P0S (2 port parallel adaptor)
++ ID_MODEL_FROM_DATABASE=PCI 9815 Multi-I/O Controller (2P0S (2 port parallel adaptor))
+ pci:v00009710d00009820*
+  ID_MODEL_FROM_DATABASE=PCI 9820 Multi-I/O Controller
+@@ -72867,31 +72867,31 @@ pci:v00009710d00009835*
+  ID_MODEL_FROM_DATABASE=PCI 9835 Multi-I/O Controller
+ pci:v00009710d00009835sv00001000sd00000002*
+- ID_MODEL_FROM_DATABASE=2S (16C550 UART)
++ ID_MODEL_FROM_DATABASE=PCI 9835 Multi-I/O Controller (2S (16C550 UART))
+ pci:v00009710d00009835sv00001000sd00000012*
+- ID_MODEL_FROM_DATABASE=1P2S
++ ID_MODEL_FROM_DATABASE=PCI 9835 Multi-I/O Controller (1P2S)
+ pci:v00009710d00009845*
+  ID_MODEL_FROM_DATABASE=PCI 9845 Multi-I/O Controller
+ pci:v00009710d00009845sv00001000sd00000004*
+- ID_MODEL_FROM_DATABASE=0P4S (4 port 16550A serial card)
++ ID_MODEL_FROM_DATABASE=PCI 9845 Multi-I/O Controller (0P4S (4 port 16550A serial card))
+ pci:v00009710d00009845sv00001000sd00000006*
+- ID_MODEL_FROM_DATABASE=0P6S (6 port 16550a serial card)
++ ID_MODEL_FROM_DATABASE=PCI 9845 Multi-I/O Controller (0P6S (6 port 16550a serial card))
+ pci:v00009710d00009845sv00001000sd00000014*
+- ID_MODEL_FROM_DATABASE=1P4S (1 Parallel / 4 16550A Serial Port Adapter)
++ ID_MODEL_FROM_DATABASE=PCI 9845 Multi-I/O Controller (1P4S (1 Parallel / 4 16550A Serial Port Adapter))
+ pci:v00009710d00009855*
+  ID_MODEL_FROM_DATABASE=PCI 9855 Multi-I/O Controller
+ pci:v00009710d00009855sv00001000sd00000014*
+- ID_MODEL_FROM_DATABASE=1P4S
++ ID_MODEL_FROM_DATABASE=PCI 9855 Multi-I/O Controller (1P4S)
+ pci:v00009710d00009855sv00001000sd00000022*
+- ID_MODEL_FROM_DATABASE=2P2S (2 Parallel / 2 16550A Serial Port Adapter)
++ ID_MODEL_FROM_DATABASE=PCI 9855 Multi-I/O Controller (2P2S (2 Parallel / 2 16550A Serial Port Adapter))
+ pci:v00009710d00009865*
+  ID_MODEL_FROM_DATABASE=PCI 9865 Multi-I/O Controller
+@@ -73350,40 +73350,40 @@ pci:v0000DD01d00000003*
+  ID_MODEL_FROM_DATABASE=Octopus DVB Adapter
+ pci:v0000DD01d00000003sv0000DD01sd00000001*
+- ID_MODEL_FROM_DATABASE=Octopus DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Octopus DVB adapter)
+ pci:v0000DD01d00000003sv0000DD01sd00000002*
+- ID_MODEL_FROM_DATABASE=Octopus LE DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Octopus LE DVB adapter)
+ pci:v0000DD01d00000003sv0000DD01sd00000003*
+- ID_MODEL_FROM_DATABASE=Octopus OEM
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Octopus OEM)
+ pci:v0000DD01d00000003sv0000DD01sd00000004*
+- ID_MODEL_FROM_DATABASE=Octopus V3 DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Octopus V3 DVB adapter)
+ pci:v0000DD01d00000003sv0000DD01sd00000010*
+- ID_MODEL_FROM_DATABASE=Octopus Mini
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Octopus Mini)
+ pci:v0000DD01d00000003sv0000DD01sd00000020*
+- ID_MODEL_FROM_DATABASE=Cine S2 V6 DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Cine S2 V6 DVB adapter)
+ pci:v0000DD01d00000003sv0000DD01sd00000021*
+- ID_MODEL_FROM_DATABASE=Cine S2 V6.5 DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Cine S2 V6.5 DVB adapter)
+ pci:v0000DD01d00000003sv0000DD01sd00000030*
+- ID_MODEL_FROM_DATABASE=Cine CT V6.1 DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Cine CT V6.1 DVB adapter)
+ pci:v0000DD01d00000003sv0000DD01sd0000DB03*
+- ID_MODEL_FROM_DATABASE=Mystique SaTiX-S2 V3 DVB adapter
++ ID_MODEL_FROM_DATABASE=Octopus DVB Adapter (Mystique SaTiX-S2 V3 DVB adapter)
+ pci:v0000DD01d00000011*
+  ID_MODEL_FROM_DATABASE=Octopus CI DVB Adapter
+ pci:v0000DD01d00000011sv0000DD01sd00000040*
+- ID_MODEL_FROM_DATABASE=Octopus CI
++ ID_MODEL_FROM_DATABASE=Octopus CI DVB Adapter (Octopus CI)
+ pci:v0000DD01d00000011sv0000DD01sd00000041*
+- ID_MODEL_FROM_DATABASE=Octopus CI Single
++ ID_MODEL_FROM_DATABASE=Octopus CI DVB Adapter (Octopus CI Single)
+ pci:v0000DEAD*
+  ID_VENDOR_FROM_DATABASE=Indigita Corporation
+@@ -73416,22 +73416,22 @@ pci:v0000E159d00000001*
+  ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface
+ pci:v0000E159d00000001sv00000059sd00000001*
+- ID_MODEL_FROM_DATABASE=128k ISDN-S/T Adapter
++ ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface (128k ISDN-S/T Adapter)
+ pci:v0000E159d00000001sv00000059sd00000003*
+- ID_MODEL_FROM_DATABASE=128k ISDN-U Adapter
++ ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface (128k ISDN-U Adapter)
+ pci:v0000E159d00000001sv000000A7sd00000001*
+- ID_MODEL_FROM_DATABASE=TELES.S0/PCI 2.x ISDN Adapter
++ ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface (TELES.S0/PCI 2.x ISDN Adapter)
+ pci:v0000E159d00000001sv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=Digium X100P/X101P analogue PSTN FXO interface
++ ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface (Digium X100P/X101P analogue PSTN FXO interface)
+ pci:v0000E159d00000001sv0000B100sd00000003*
+- ID_MODEL_FROM_DATABASE=OpenVox A400P 4-port analog card
++ ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface (OpenVox A400P 4-port analog card)
+ pci:v0000E159d00000001sv0000B1D9sd00000003*
+- ID_MODEL_FROM_DATABASE=AX400P 4-port analog card
++ ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface (AX400P 4-port analog card)
+ pci:v0000E159d00000002*
+  ID_MODEL_FROM_DATABASE=Tiger100APC ISDN chipset
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-131.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-131.patch
new file mode 100644 (file)
index 0000000..003e05f
--- /dev/null
@@ -0,0 +1,146 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Fri, 29 Nov 2013 07:26:47 -0800
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 109 +++++++++++++++++++++++++++++++++-
+ 1 file changed, 107 insertions(+), 2 deletions(-)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index faecf42..dcc25bb 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -366,6 +366,9 @@ bluetooth:v0077*
+ bluetooth:v0078*
+  ID_VENDOR_FROM_DATABASE=Nike, Inc.
++bluetooth:v0078p0001*
++ ID_PRODUCT_FROM_DATABASE=Nike+ FuelBand
++
+ bluetooth:v0079*
+  ID_VENDOR_FROM_DATABASE=lesswire AG
+@@ -457,7 +460,7 @@ bluetooth:v0096*
+  ID_VENDOR_FROM_DATABASE=ODM Technology, Inc.
+ bluetooth:v0097*
+- ID_VENDOR_FROM_DATABASE=Bluetrek Technologies Limited
++ ID_VENDOR_FROM_DATABASE=ConnecteDevice Ltd.
+ bluetooth:v0098*
+  ID_VENDOR_FROM_DATABASE=zer01.tv GmbH
+@@ -634,7 +637,7 @@ bluetooth:v00D2*
+  ID_VENDOR_FROM_DATABASE=Dialog Semiconductor B.V.
+ bluetooth:v00D3*
+- ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD.
++ ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD.
+ bluetooth:v00D4*
+  ID_VENDOR_FROM_DATABASE=Kawantech
+@@ -716,3 +719,105 @@ bluetooth:v00ED*
+ bluetooth:v00EE*
+  ID_VENDOR_FROM_DATABASE=Above Average Outcomes, Inc.
++
++bluetooth:v00EF*
++ ID_VENDOR_FROM_DATABASE=Bitsplitters GmbH
++
++bluetooth:v00F0*
++ ID_VENDOR_FROM_DATABASE=PayPal, Inc.
++
++bluetooth:v00F1*
++ ID_VENDOR_FROM_DATABASE=Witron Technology Limited
++
++bluetooth:v00F2*
++ ID_VENDOR_FROM_DATABASE=Morse Project Inc.
++
++bluetooth:v00F3*
++ ID_VENDOR_FROM_DATABASE=Kent Displays Inc.
++
++bluetooth:v00F4*
++ ID_VENDOR_FROM_DATABASE=Nautilus Inc.
++
++bluetooth:v00F5*
++ ID_VENDOR_FROM_DATABASE=Smartifier Oy
++
++bluetooth:v00F6*
++ ID_VENDOR_FROM_DATABASE=Elcometer Limited
++
++bluetooth:v00F7*
++ ID_VENDOR_FROM_DATABASE=VSN Technologies Inc.
++
++bluetooth:v00F8*
++ ID_VENDOR_FROM_DATABASE=AceUni Corp., Ltd.
++
++bluetooth:v00F9*
++ ID_VENDOR_FROM_DATABASE=StickNFind
++
++bluetooth:v00FA*
++ ID_VENDOR_FROM_DATABASE=Crystal Code AB
++
++bluetooth:v00FB*
++ ID_VENDOR_FROM_DATABASE=KOUKAAM a.s.
++
++bluetooth:v00FC*
++ ID_VENDOR_FROM_DATABASE=Delphi Corporation
++
++bluetooth:v00FD*
++ ID_VENDOR_FROM_DATABASE=ValenceTech Limited
++
++bluetooth:v00FE*
++ ID_VENDOR_FROM_DATABASE=Reserved
++
++bluetooth:v00FF*
++ ID_VENDOR_FROM_DATABASE=Typo Products, LLC
++
++bluetooth:v0100*
++ ID_VENDOR_FROM_DATABASE=TomTom International BV
++
++bluetooth:v0101*
++ ID_VENDOR_FROM_DATABASE=Fugoo, Inc
++
++bluetooth:v0102*
++ ID_VENDOR_FROM_DATABASE=Keiser Corporation
++
++bluetooth:v0103*
++ ID_VENDOR_FROM_DATABASE=Bang & Olufsen A/S
++
++bluetooth:v0104*
++ ID_VENDOR_FROM_DATABASE=PLUS Locations Systems Pty Ltd
++
++bluetooth:v0105*
++ ID_VENDOR_FROM_DATABASE=Ubiquitous Computing Technology Corporation
++
++bluetooth:v0106*
++ ID_VENDOR_FROM_DATABASE=Innovative Yachtter Solutions
++
++bluetooth:v0107*
++ ID_VENDOR_FROM_DATABASE=William Demant Holding A/S
++
++bluetooth:v0108*
++ ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd.
++
++bluetooth:v0109*
++ ID_VENDOR_FROM_DATABASE=Atus BV
++
++bluetooth:v010A*
++ ID_VENDOR_FROM_DATABASE=Codegate Ltd.
++
++bluetooth:v010B*
++ ID_VENDOR_FROM_DATABASE=ERi, Inc.
++
++bluetooth:v010C*
++ ID_VENDOR_FROM_DATABASE=Transducers Direct, LLC
++
++bluetooth:v010D*
++ ID_VENDOR_FROM_DATABASE=Fujitsu Ten Limited
++
++bluetooth:v010E*
++ ID_VENDOR_FROM_DATABASE=Audi AG
++
++bluetooth:v010F*
++ ID_VENDOR_FROM_DATABASE=HiSilicon Technologies Co., Ltd.
++
++bluetooth:v0110*
++ ID_VENDOR_FROM_DATABASE=Nippon Seiki Co., Ltd.
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-151.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-151.patch
new file mode 100644 (file)
index 0000000..1052e6d
--- /dev/null
@@ -0,0 +1,35 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Tue, 10 Dec 2013 03:17:39 -0800
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit 0234c599218518b1eb478d64d9883ba46e4ce5d8)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index dcc25bb..6f8301f 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -821,3 +821,21 @@ bluetooth:v010F*
+ bluetooth:v0110*
+  ID_VENDOR_FROM_DATABASE=Nippon Seiki Co., Ltd.
++
++bluetooth:v0111*
++ ID_VENDOR_FROM_DATABASE=Steelseries ApS
++
++bluetooth:v0112*
++ ID_VENDOR_FROM_DATABASE=vyzybl Inc.
++
++bluetooth:v0113*
++ ID_VENDOR_FROM_DATABASE=Openbrain Technologies, Co., Ltd.
++
++bluetooth:v0114*
++ ID_VENDOR_FROM_DATABASE=Xensr
++
++bluetooth:v0115*
++ ID_VENDOR_FROM_DATABASE=e.solutions
++
++bluetooth:v0116*
++ ID_VENDOR_FROM_DATABASE=1OAK Technologies
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-205.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-205.patch
new file mode 100644 (file)
index 0000000..1f6a790
--- /dev/null
@@ -0,0 +1,38 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Fri, 27 Dec 2013 09:35:20 -0800
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit c4a3a17ee919e8b1197328394709edfe36d8b710)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index 6f8301f..192b715 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -427,7 +427,7 @@ bluetooth:v008B*
+  ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC
+ bluetooth:v008C*
+- ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
++ ID_VENDOR_FROM_DATABASE=Qualcomm Retail Solutions, Inc. (formerly Qualcomm Labs, Inc.)
+ bluetooth:v008D*
+  ID_VENDOR_FROM_DATABASE=Zscan Software
+@@ -839,3 +839,15 @@ bluetooth:v0115*
+ bluetooth:v0116*
+  ID_VENDOR_FROM_DATABASE=1OAK Technologies
++
++bluetooth:v0117*
++ ID_VENDOR_FROM_DATABASE=Wimoto Technologies Inc
++
++bluetooth:v0118*
++ ID_VENDOR_FROM_DATABASE=Radius Networks, Inc.
++
++bluetooth:v0119*
++ ID_VENDOR_FROM_DATABASE=Wize Technology Co., Ltd.
++
++bluetooth:v011A*
++ ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-241.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-241.patch
new file mode 100644 (file)
index 0000000..02bedf9
--- /dev/null
@@ -0,0 +1,35 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Mon, 20 Jan 2014 17:53:16 -0800
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit 43d9c2b5848b1363b659c38443c1c94db57415fd)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index 192b715..6a9dc50 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -851,3 +851,21 @@ bluetooth:v0119*
+ bluetooth:v011A*
+  ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
++
++bluetooth:v011B*
++ ID_VENDOR_FROM_DATABASE=Aruba Networks
++
++bluetooth:v011C*
++ ID_VENDOR_FROM_DATABASE=Baidu
++
++bluetooth:v011D*
++ ID_VENDOR_FROM_DATABASE=Arendi AG
++
++bluetooth:v011E*
++ ID_VENDOR_FROM_DATABASE=Skoda Auto a.s.
++
++bluetooth:v011F*
++ ID_VENDOR_FROM_DATABASE=Volkswagon AG
++
++bluetooth:v0120*
++ ID_VENDOR_FROM_DATABASE=Porsche AG
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-314.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-314.patch
new file mode 100644 (file)
index 0000000..06b0feb
--- /dev/null
@@ -0,0 +1,57 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Fri, 21 Feb 2014 21:41:01 -0800
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit 4b28cdeb2332cfbd3f5172b43a2f5f534b7e6e57)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index 6a9dc50..db3bc24 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -630,6 +630,9 @@ bluetooth:v00CE*
+ bluetooth:v00CF*
+  ID_VENDOR_FROM_DATABASE=ARCHOS SA
++bluetooth:v00D0*
++ ID_VENDOR_FROM_DATABASE=Dexcom, Inc.
++
+ bluetooth:v00D1*
+  ID_VENDOR_FROM_DATABASE=Polar Electro Europe B.V.
+@@ -869,3 +872,33 @@ bluetooth:v011F*
+ bluetooth:v0120*
+  ID_VENDOR_FROM_DATABASE=Porsche AG
++
++bluetooth:v0121*
++ ID_VENDOR_FROM_DATABASE=Sino Wealth Electronic Ltd.
++
++bluetooth:v0122*
++ ID_VENDOR_FROM_DATABASE=AirTurn, Inc.
++
++bluetooth:v0123*
++ ID_VENDOR_FROM_DATABASE=Kinsa, Inc.
++
++bluetooth:v0124*
++ ID_VENDOR_FROM_DATABASE=HID Global
++
++bluetooth:v0125*
++ ID_VENDOR_FROM_DATABASE=SEAT es
++
++bluetooth:v0126*
++ ID_VENDOR_FROM_DATABASE=Promethean Ltd.
++
++bluetooth:v0127*
++ ID_VENDOR_FROM_DATABASE=Salutica Allied Solutions
++
++bluetooth:v0128*
++ ID_VENDOR_FROM_DATABASE=GPSI Group Pty Ltd
++
++bluetooth:v0129*
++ ID_VENDOR_FROM_DATABASE=Nimble Devices Oy
++
++bluetooth:v012A*
++ ID_VENDOR_FROM_DATABASE=Changzhou Yongse Infotech Co., Ltd
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-315.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-315.patch
new file mode 100644 (file)
index 0000000..10e72ef
--- /dev/null
@@ -0,0 +1,26 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Sun, 2 Mar 2014 10:02:10 -0800
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit e525326bd07ebf3cabcfd730bc479166723f2d44)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index db3bc24..0335a71 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -902,3 +902,12 @@ bluetooth:v0129*
+ bluetooth:v012A*
+  ID_VENDOR_FROM_DATABASE=Changzhou Yongse Infotech Co., Ltd
++
++bluetooth:v012B*
++ ID_VENDOR_FROM_DATABASE=SportIQ
++
++bluetooth:v012C*
++ ID_VENDOR_FROM_DATABASE=TEMEC Instruments B.V.
++
++bluetooth:v012D*
++ ID_VENDOR_FROM_DATABASE=Sony Corporation
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-357.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-357.patch
new file mode 100644 (file)
index 0000000..d4a2ec2
--- /dev/null
@@ -0,0 +1,30 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Tue, 11 Mar 2014 09:33:31 -0700
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit f401e2b24ba17452f9655993a6dedefdffe06d23)
+(cherry picked from commit 873fbb5c7a36c2553aee6db2c9afbbbba94ca879)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index 0335a71..7d86f10 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -911,3 +911,15 @@ bluetooth:v012C*
+ bluetooth:v012D*
+  ID_VENDOR_FROM_DATABASE=Sony Corporation
++
++bluetooth:v012E*
++ ID_VENDOR_FROM_DATABASE=ASSA ABLOY
++
++bluetooth:v012F*
++ ID_VENDOR_FROM_DATABASE=Clarion Co., Ltd.
++
++bluetooth:v0130*
++ ID_VENDOR_FROM_DATABASE=Warehouse Innovations
++
++bluetooth:v0131*
++ ID_VENDOR_FROM_DATABASE=Cypress Semiconductor Corporation
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-370.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-370.patch
new file mode 100644 (file)
index 0000000..4588e43
--- /dev/null
@@ -0,0 +1,36 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Tue, 25 Mar 2014 20:21:23 -0700
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit f89b42ec0fd51feab5566d6bdbacee101023c037)
+(cherry picked from commit cc9bdcf31e33b7012a29855c22a0a0c7ca49bcac)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index 7d86f10..b928f5a 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -923,3 +923,21 @@ bluetooth:v0130*
+ bluetooth:v0131*
+  ID_VENDOR_FROM_DATABASE=Cypress Semiconductor Corporation
++
++bluetooth:v0132*
++ ID_VENDOR_FROM_DATABASE=MADS Inc
++
++bluetooth:v0133*
++ ID_VENDOR_FROM_DATABASE=Blue Maestro Limited
++
++bluetooth:v0134*
++ ID_VENDOR_FROM_DATABASE=Resolution Products, Inc.
++
++bluetooth:v0135*
++ ID_VENDOR_FROM_DATABASE=Airewear LLC
++
++bluetooth:v0136*
++ ID_VENDOR_FROM_DATABASE=ETC sp. z.o.o.
++
++bluetooth:v0137*
++ ID_VENDOR_FROM_DATABASE=Prestigio Plaza Ltd.
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-379.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-379.patch
new file mode 100644 (file)
index 0000000..e834208
--- /dev/null
@@ -0,0 +1,48 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Sat, 12 Apr 2014 10:38:16 -0700
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit b189101727e80a09864c5e5880663ef565467f19)
+(cherry picked from commit 9b57078c6304b053f7a6a9eaef7a40a97dc096ec)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index b928f5a..28aa2a7 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -733,7 +733,7 @@ bluetooth:v00F1*
+  ID_VENDOR_FROM_DATABASE=Witron Technology Limited
+ bluetooth:v00F2*
+- ID_VENDOR_FROM_DATABASE=Morse Project Inc.
++ ID_VENDOR_FROM_DATABASE=Aether Things Inc. (formerly Morse Project Inc.)
+ bluetooth:v00F3*
+  ID_VENDOR_FROM_DATABASE=Kent Displays Inc.
+@@ -941,3 +941,24 @@ bluetooth:v0136*
+ bluetooth:v0137*
+  ID_VENDOR_FROM_DATABASE=Prestigio Plaza Ltd.
++
++bluetooth:v0138*
++ ID_VENDOR_FROM_DATABASE=NTEO Inc.
++
++bluetooth:v0139*
++ ID_VENDOR_FROM_DATABASE=Focus Systems Corporation
++
++bluetooth:v013A*
++ ID_VENDOR_FROM_DATABASE=Tencent Holdings Limited
++
++bluetooth:v013B*
++ ID_VENDOR_FROM_DATABASE=Allegion
++
++bluetooth:v013C*
++ ID_VENDOR_FROM_DATABASE=Murata Manufacuring Co., Ltd.
++
++bluetooth:v013D*
++ ID_VENDOR_FROM_DATABASE=WirelessWERX
++
++bluetooth:v013E*
++ ID_VENDOR_FROM_DATABASE=nimai
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-418.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-418.patch
new file mode 100644 (file)
index 0000000..7623668
--- /dev/null
@@ -0,0 +1,71 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Fri, 16 May 2014 15:57:35 -0700
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit 24e29480bd800d3acdb3087e5863440bd0dd1d80)
+(cherry picked from commit 1edfeba28e2c63f0c69eeade570c0aae4af41f42)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 53 ++++++++++++++++++++++++++++++++++-
+ 1 file changed, 52 insertions(+), 1 deletion(-)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index 28aa2a7..a65c7db 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -961,4 +961,55 @@ bluetooth:v013D*
+  ID_VENDOR_FROM_DATABASE=WirelessWERX
+ bluetooth:v013E*
+- ID_VENDOR_FROM_DATABASE=nimai
++ ID_VENDOR_FROM_DATABASE=Nod, Inc.
++
++bluetooth:v013F*
++ ID_VENDOR_FROM_DATABASE=B&B Manufacturing Company
++
++bluetooth:v0140*
++ ID_VENDOR_FROM_DATABASE=Alpine Electronics (China) Co., Ltd
++
++bluetooth:v0141*
++ ID_VENDOR_FROM_DATABASE=FedEx Services
++
++bluetooth:v0142*
++ ID_VENDOR_FROM_DATABASE=Grape Systems Inc.
++
++bluetooth:v0143*
++ ID_VENDOR_FROM_DATABASE=Bkon Connect
++
++bluetooth:v0144*
++ ID_VENDOR_FROM_DATABASE=Lintech GmbH
++
++bluetooth:v0145*
++ ID_VENDOR_FROM_DATABASE=Novatel Wireless
++
++bluetooth:v0146*
++ ID_VENDOR_FROM_DATABASE=Ciright
++
++bluetooth:v0147*
++ ID_VENDOR_FROM_DATABASE=Mighty Cast, Inc.
++
++bluetooth:v0148*
++ ID_VENDOR_FROM_DATABASE=Ambimat Electronics
++
++bluetooth:v0149*
++ ID_VENDOR_FROM_DATABASE=Perytons Ltd.
++
++bluetooth:v014A*
++ ID_VENDOR_FROM_DATABASE=Tivoli Audio, LLC
++
++bluetooth:v014B*
++ ID_VENDOR_FROM_DATABASE=Master Lock
++
++bluetooth:v014C*
++ ID_VENDOR_FROM_DATABASE=Mesh-Net Ltd
++
++bluetooth:v014D*
++ ID_VENDOR_FROM_DATABASE=HUIZHOU DESAY SV AUTOMOTIVE CO., LTD.
++
++bluetooth:v014E*
++ ID_VENDOR_FROM_DATABASE=Tangerine, Inc.
++
++bluetooth:v014F*
++ ID_VENDOR_FROM_DATABASE=B&W Group Ltd.
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-468.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identi-468.patch
new file mode 100644 (file)
index 0000000..16d6ee1
--- /dev/null
@@ -0,0 +1,80 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Wed, 18 Jun 2014 13:55:32 +0200
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit 7cfa80f07e94c3e48703d145ef03a73dd6e7b983)
+(cherry picked from commit 969654dbb659c591454aaa3ae6a1569fa645b679)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 42 ++++++++++++++++++++++++++++++++---
+ 1 file changed, 39 insertions(+), 3 deletions(-)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index a65c7db..377748a 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -115,7 +115,7 @@ bluetooth:v0024*
+  ID_VENDOR_FROM_DATABASE=Alcatel
+ bluetooth:v0025*
+- ID_VENDOR_FROM_DATABASE=Philips Semiconductors
++ ID_VENDOR_FROM_DATABASE=NXP Semiconductors (formerly Philips Semiconductors)
+ bluetooth:v0026*
+  ID_VENDOR_FROM_DATABASE=C Technologies
+@@ -427,7 +427,7 @@ bluetooth:v008B*
+  ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC
+ bluetooth:v008C*
+- ID_VENDOR_FROM_DATABASE=Qualcomm Retail Solutions, Inc. (formerly Qualcomm Labs, Inc.)
++ ID_VENDOR_FROM_DATABASE=Gimbal Inc. (formerly Qualcomm Labs, Inc. and Qualcomm Retail Solutions, Inc.)
+ bluetooth:v008D*
+  ID_VENDOR_FROM_DATABASE=Zscan Software
+@@ -1006,10 +1006,46 @@ bluetooth:v014C*
+  ID_VENDOR_FROM_DATABASE=Mesh-Net Ltd
+ bluetooth:v014D*
+- ID_VENDOR_FROM_DATABASE=HUIZHOU DESAY SV AUTOMOTIVE CO., LTD.
++ ID_VENDOR_FROM_DATABASE=Huizhou Desay SV Automotive CO., LTD.
+ bluetooth:v014E*
+  ID_VENDOR_FROM_DATABASE=Tangerine, Inc.
+ bluetooth:v014F*
+  ID_VENDOR_FROM_DATABASE=B&W Group Ltd.
++
++bluetooth:v0150*
++ ID_VENDOR_FROM_DATABASE=Pioneer Corporation
++
++bluetooth:v0151*
++ ID_VENDOR_FROM_DATABASE=OnBeep
++
++bluetooth:v0152*
++ ID_VENDOR_FROM_DATABASE=Vernier Software & Technology
++
++bluetooth:v0153*
++ ID_VENDOR_FROM_DATABASE=ROL Ergo
++
++bluetooth:v0154*
++ ID_VENDOR_FROM_DATABASE=Pebble Technology
++
++bluetooth:v0155*
++ ID_VENDOR_FROM_DATABASE=NETATMO
++
++bluetooth:v0156*
++ ID_VENDOR_FROM_DATABASE=Accumulate AB
++
++bluetooth:v0157*
++ ID_VENDOR_FROM_DATABASE=Anhui Huami Information Technology Co., Ltd.
++
++bluetooth:v0158*
++ ID_VENDOR_FROM_DATABASE=Inmite s.r.o.
++
++bluetooth:v0159*
++ ID_VENDOR_FROM_DATABASE=ChefSteps, Inc.
++
++bluetooth:v015A*
++ ID_VENDOR_FROM_DATABASE=micus AG
++
++bluetooth:v015B*
++ ID_VENDOR_FROM_DATABASE=Biomedical Research Ltd.
diff --git a/debian/patches/hwdb-Update-database-of-Bluetooth-company-identifier.patch b/debian/patches/hwdb-Update-database-of-Bluetooth-company-identifier.patch
new file mode 100644 (file)
index 0000000..0515256
--- /dev/null
@@ -0,0 +1,326 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Sat, 21 Sep 2013 11:45:05 -0700
+Subject: hwdb: Update database of Bluetooth company identifiers
+
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 209 +++++++++++++++++++++++++++++++---
+ 1 file changed, 193 insertions(+), 16 deletions(-)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index c8cb322..faecf42 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -46,7 +46,7 @@ bluetooth:v000D*
+  ID_VENDOR_FROM_DATABASE=Texas Instruments Inc.
+ bluetooth:v000E*
+- ID_VENDOR_FROM_DATABASE=Ceva, Inc. (formerly Parthus Technologies Inc.)
++ ID_VENDOR_FROM_DATABASE=Ceva, Inc. (formerly Parthus Technologies, Inc.)
+ bluetooth:v000F*
+  ID_VENDOR_FROM_DATABASE=Broadcom Corporation
+@@ -55,7 +55,7 @@ bluetooth:v0010*
+  ID_VENDOR_FROM_DATABASE=Mitel Semiconductor
+ bluetooth:v0011*
+- ID_VENDOR_FROM_DATABASE=Widcomm, Inc.
++ ID_VENDOR_FROM_DATABASE=Widcomm, Inc
+ bluetooth:v0012*
+  ID_VENDOR_FROM_DATABASE=Zeevo, Inc.
+@@ -73,13 +73,13 @@ bluetooth:v0016*
+  ID_VENDOR_FROM_DATABASE=KC Technology Inc.
+ bluetooth:v0017*
+- ID_VENDOR_FROM_DATABASE=Newlogic
++ ID_VENDOR_FROM_DATABASE=NewLogic
+ bluetooth:v0018*
+  ID_VENDOR_FROM_DATABASE=Transilica, Inc.
+ bluetooth:v0019*
+- ID_VENDOR_FROM_DATABASE=Rohde & Schwartz GmbH & Co. KG
++ ID_VENDOR_FROM_DATABASE=Rohde & Schwarz GmbH & Co. KG
+ bluetooth:v001A*
+  ID_VENDOR_FROM_DATABASE=TTPCom Limited
+@@ -151,7 +151,7 @@ bluetooth:v0030*
+  ID_VENDOR_FROM_DATABASE=ST Microelectronics
+ bluetooth:v0031*
+- ID_VENDOR_FROM_DATABASE=Synopsys
++ ID_VENDOR_FROM_DATABASE=Synopsis
+ bluetooth:v0032*
+  ID_VENDOR_FROM_DATABASE=Red-M (Communications) Ltd
+@@ -190,16 +190,16 @@ bluetooth:v003D*
+  ID_VENDOR_FROM_DATABASE=IPextreme, Inc.
+ bluetooth:v003E*
+- ID_VENDOR_FROM_DATABASE=Systems and Chips, Inc
++ ID_VENDOR_FROM_DATABASE=Systems and Chips, Inc.
+ bluetooth:v003F*
+- ID_VENDOR_FROM_DATABASE=Bluetooth SIG, Inc
++ ID_VENDOR_FROM_DATABASE=Bluetooth SIG, Inc.
+ bluetooth:v0040*
+  ID_VENDOR_FROM_DATABASE=Seiko Epson Corporation
+ bluetooth:v0041*
+- ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution Taiwain, Inc.
++ ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution Taiwan, Inc.
+ bluetooth:v0042*
+  ID_VENDOR_FROM_DATABASE=CONWISE Technology Corporation Ltd
+@@ -244,7 +244,7 @@ bluetooth:v004F*
+  ID_VENDOR_FROM_DATABASE=APT Licensing Ltd.
+ bluetooth:v0050*
+- ID_VENDOR_FROM_DATABASE=SiRF Technology, Inc.
++ ID_VENDOR_FROM_DATABASE=SiRF Technology
+ bluetooth:v0051*
+  ID_VENDOR_FROM_DATABASE=Tzero Technologies, Inc.
+@@ -379,7 +379,7 @@ bluetooth:v007C*
+  ID_VENDOR_FROM_DATABASE=A & R Cambridge
+ bluetooth:v007D*
+- ID_VENDOR_FROM_DATABASE=Seers Technology Co. Ltd.
++ ID_VENDOR_FROM_DATABASE=Seers Technology Co. Ltd
+ bluetooth:v007E*
+  ID_VENDOR_FROM_DATABASE=Sports Tracking Technologies Ltd.
+@@ -406,7 +406,7 @@ bluetooth:v0085*
+  ID_VENDOR_FROM_DATABASE=BlueRadios, Inc.
+ bluetooth:v0086*
+- ID_VENDOR_FROM_DATABASE=equinux AG
++ ID_VENDOR_FROM_DATABASE=equinox AG
+ bluetooth:v0087*
+  ID_VENDOR_FROM_DATABASE=Garmin International, Inc.
+@@ -421,7 +421,7 @@ bluetooth:v008A*
+  ID_VENDOR_FROM_DATABASE=Jawbone
+ bluetooth:v008B*
+- ID_VENDOR_FROM_DATABASE=Topcon Positioning Systems, LLC
++ ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC
+ bluetooth:v008C*
+  ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
+@@ -433,13 +433,13 @@ bluetooth:v008E*
+  ID_VENDOR_FROM_DATABASE=Quintic Corp.
+ bluetooth:v008F*
+- ID_VENDOR_FROM_DATABASE=Stollmann E+V GmbH
++ ID_VENDOR_FROM_DATABASE=Stollman E+V GmbH
+ bluetooth:v0090*
+  ID_VENDOR_FROM_DATABASE=Funai Electric Co., Ltd.
+ bluetooth:v0091*
+- ID_VENDOR_FROM_DATABASE=Advanced PANMOBIL systems GmbH & Co. KG
++ ID_VENDOR_FROM_DATABASE=Advanced PANMOBIL Systems GmbH & Co. KG
+ bluetooth:v0092*
+  ID_VENDOR_FROM_DATABASE=ThinkOptics, Inc.
+@@ -460,7 +460,7 @@ bluetooth:v0097*
+  ID_VENDOR_FROM_DATABASE=Bluetrek Technologies Limited
+ bluetooth:v0098*
+- ID_VENDOR_FROM_DATABASE=zero1.tv GmbH
++ ID_VENDOR_FROM_DATABASE=zer01.tv GmbH
+ bluetooth:v0099*
+  ID_VENDOR_FROM_DATABASE=i.Tech Dynamic Global Distribution Ltd.
+@@ -511,7 +511,7 @@ bluetooth:v00A8*
+  ID_VENDOR_FROM_DATABASE=ARP Devices Limited
+ bluetooth:v00A9*
+- ID_VENDOR_FROM_DATABASE=Magneti Marelli S.p.A.
++ ID_VENDOR_FROM_DATABASE=Magneti Marelli S.p.A
+ bluetooth:v00AA*
+  ID_VENDOR_FROM_DATABASE=CAEN RFID srl
+@@ -539,3 +539,180 @@ bluetooth:v00B1*
+ bluetooth:v00B2*
+  ID_VENDOR_FROM_DATABASE=Bekey A/S
++
++bluetooth:v00B3*
++ ID_VENDOR_FROM_DATABASE=Clarinox Technologies Pty. Ltd.
++
++bluetooth:v00B4*
++ ID_VENDOR_FROM_DATABASE=BDE Technology Co., Ltd.
++
++bluetooth:v00B5*
++ ID_VENDOR_FROM_DATABASE=Swirl Networks
++
++bluetooth:v00B6*
++ ID_VENDOR_FROM_DATABASE=Meso international
++
++bluetooth:v00B7*
++ ID_VENDOR_FROM_DATABASE=TreLab Ltd
++
++bluetooth:v00B8*
++ ID_VENDOR_FROM_DATABASE=Qualcomm Innovation Center, Inc. (QuIC)
++
++bluetooth:v00B9*
++ ID_VENDOR_FROM_DATABASE=Johnson Controls, Inc.
++
++bluetooth:v00BA*
++ ID_VENDOR_FROM_DATABASE=Starkey Laboratories Inc.
++
++bluetooth:v00BB*
++ ID_VENDOR_FROM_DATABASE=S-Power Electronics Limited
++
++bluetooth:v00BC*
++ ID_VENDOR_FROM_DATABASE=Ace Sensor Inc
++
++bluetooth:v00BD*
++ ID_VENDOR_FROM_DATABASE=Aplix Corporation
++
++bluetooth:v00BE*
++ ID_VENDOR_FROM_DATABASE=AAMP of America
++
++bluetooth:v00BF*
++ ID_VENDOR_FROM_DATABASE=Stalmart Technology Limited
++
++bluetooth:v00C0*
++ ID_VENDOR_FROM_DATABASE=AMICCOM Electronics Corporation
++
++bluetooth:v00C1*
++ ID_VENDOR_FROM_DATABASE=Shenzhen Excelsecu Data Technology Co.,Ltd
++
++bluetooth:v00C2*
++ ID_VENDOR_FROM_DATABASE=Geneq Inc.
++
++bluetooth:v00C3*
++ ID_VENDOR_FROM_DATABASE=adidas AG
++
++bluetooth:v00C4*
++ ID_VENDOR_FROM_DATABASE=LG Electronics
++
++bluetooth:v00C5*
++ ID_VENDOR_FROM_DATABASE=Onset Computer Corporation
++
++bluetooth:v00C6*
++ ID_VENDOR_FROM_DATABASE=Selfly BV
++
++bluetooth:v00C7*
++ ID_VENDOR_FROM_DATABASE=Quuppa Oy.
++
++bluetooth:v00C8*
++ ID_VENDOR_FROM_DATABASE=GeLo Inc
++
++bluetooth:v00C9*
++ ID_VENDOR_FROM_DATABASE=Evluma
++
++bluetooth:v00CA*
++ ID_VENDOR_FROM_DATABASE=MC10
++
++bluetooth:v00CB*
++ ID_VENDOR_FROM_DATABASE=Binauric SE
++
++bluetooth:v00CC*
++ ID_VENDOR_FROM_DATABASE=Beats Electronics
++
++bluetooth:v00CD*
++ ID_VENDOR_FROM_DATABASE=Microchip Technology Inc.
++
++bluetooth:v00CE*
++ ID_VENDOR_FROM_DATABASE=Elgato Systems GmbH
++
++bluetooth:v00CF*
++ ID_VENDOR_FROM_DATABASE=ARCHOS SA
++
++bluetooth:v00D1*
++ ID_VENDOR_FROM_DATABASE=Polar Electro Europe B.V.
++
++bluetooth:v00D2*
++ ID_VENDOR_FROM_DATABASE=Dialog Semiconductor B.V.
++
++bluetooth:v00D3*
++ ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD.
++
++bluetooth:v00D4*
++ ID_VENDOR_FROM_DATABASE=Kawantech
++
++bluetooth:v00D5*
++ ID_VENDOR_FROM_DATABASE=Austco Communication Systems
++
++bluetooth:v00D6*
++ ID_VENDOR_FROM_DATABASE=Timex Group USA, Inc.
++
++bluetooth:v00D7*
++ ID_VENDOR_FROM_DATABASE=Qualcomm Technologies, Inc.
++
++bluetooth:v00D8*
++ ID_VENDOR_FROM_DATABASE=Qualcomm Connected Experiences, Inc.
++
++bluetooth:v00D9*
++ ID_VENDOR_FROM_DATABASE=Voyetra Turtle Beach
++
++bluetooth:v00DA*
++ ID_VENDOR_FROM_DATABASE=txtr GmbH
++
++bluetooth:v00DB*
++ ID_VENDOR_FROM_DATABASE=Biosentronics
++
++bluetooth:v00DC*
++ ID_VENDOR_FROM_DATABASE=Procter & Gamble
++
++bluetooth:v00DD*
++ ID_VENDOR_FROM_DATABASE=Hosiden Corporation
++
++bluetooth:v00DE*
++ ID_VENDOR_FROM_DATABASE=Muzik LLC
++
++bluetooth:v00DF*
++ ID_VENDOR_FROM_DATABASE=Misfit Wearables Corp
++
++bluetooth:v00E0*
++ ID_VENDOR_FROM_DATABASE=Google
++
++bluetooth:v00E1*
++ ID_VENDOR_FROM_DATABASE=Danlers Ltd
++
++bluetooth:v00E2*
++ ID_VENDOR_FROM_DATABASE=Semilink Inc
++
++bluetooth:v00E3*
++ ID_VENDOR_FROM_DATABASE=inMusic Brands, Inc
++
++bluetooth:v00E4*
++ ID_VENDOR_FROM_DATABASE=L.S. Research Inc.
++
++bluetooth:v00E5*
++ ID_VENDOR_FROM_DATABASE=Eden Software Consultants Ltd.
++
++bluetooth:v00E6*
++ ID_VENDOR_FROM_DATABASE=Freshtemp
++
++bluetooth:v00E7*
++ ID_VENDOR_FROM_DATABASE=KS Technologies
++
++bluetooth:v00E8*
++ ID_VENDOR_FROM_DATABASE=ACTS Technologies
++
++bluetooth:v00E9*
++ ID_VENDOR_FROM_DATABASE=Vtrack Systems
++
++bluetooth:v00EA*
++ ID_VENDOR_FROM_DATABASE=Nielsen-Kellerman Company
++
++bluetooth:v00EB*
++ ID_VENDOR_FROM_DATABASE=Server Technology, Inc.
++
++bluetooth:v00EC*
++ ID_VENDOR_FROM_DATABASE=BioResearch Associates
++
++bluetooth:v00ED*
++ ID_VENDOR_FROM_DATABASE=Jolly Logic, LLC
++
++bluetooth:v00EE*
++ ID_VENDOR_FROM_DATABASE=Above Average Outcomes, Inc.
diff --git a/debian/patches/hwdb-add-Samsung-700G.patch b/debian/patches/hwdb-add-Samsung-700G.patch
new file mode 100644 (file)
index 0000000..72b3240
--- /dev/null
@@ -0,0 +1,22 @@
+From: Dmitry Pisklov <dpisklov@gmail.com>
+Date: Mon, 6 Jan 2014 20:06:59 -0500
+Subject: hwdb: add Samsung 700G
+
+https://bugs.freedesktop.org/show_bug.cgi?id=72311
+(cherry picked from commit dcafc342bfa44d4d5ee76e5ddc12fd36f8f64af5)
+---
+ hwdb/60-keyboard.hwdb | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 644cb94..ccfc734 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -875,6 +875,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr*
+  KEYBOARD_KEY_a9=!                                      # Fn Lock - Function lock off
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
+  KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
diff --git a/debian/patches/hwdb-change-key-mappings-for-Samsung-90X3A.patch b/debian/patches/hwdb-change-key-mappings-for-Samsung-90X3A.patch
new file mode 100644 (file)
index 0000000..2b23cf9
--- /dev/null
@@ -0,0 +1,39 @@
+From: Raudi <mpell@web.de>
+Date: Mon, 6 Jan 2014 19:44:08 -0500
+Subject: hwdb: change key mappings for Samsung 90X3A
+
+The Key codes didn't match with the described key. Also the key
+identifier strings were missing. I hope I chose appropriate ones.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=70296
+(cherry picked from commit dfa2ea215df5f1e78084de862a54c0f1f321a13a)
+---
+ hwdb/60-keyboard.hwdb | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index ab9e569..644cb94 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -886,7 +886,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
+  KEYBOARD_KEY_b3=!prog3                                 # Fn+F11 fan/cooling mode changer
+ # Series 9
+-keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr*
+  KEYBOARD_KEY_ce=!                                      # Fn+F8 keyboard backlight up
+  KEYBOARD_KEY_8d=!                                      # Fn+F7 keyboard backlight down
+@@ -894,6 +893,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr
+  KEYBOARD_KEY_97=!                                      # Fn+F12 Wi-Fi toggle
+  KEYBOARD_KEY_d5=!                                      # Fn+F6 battery life extender
++keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
++ KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
++ KEYBOARD_KEY_8d=!prog3                                 # Fn+F6 performance mode
++ KEYBOARD_KEY_97=!kbdillumdown                          # Fn+F7 keyboard backlight down
++ KEYBOARD_KEY_96=!kbdillumup                            # Fn+F8 keyboard backlight up
++ KEYBOARD_KEY_d5=!wlan                                  # Fn+F12 Wi-Fi toggle
++
+ # SQ1US
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pnSQ1US:pvr*
+  KEYBOARD_KEY_d4=menu
diff --git a/debian/patches/hwdb-fix-case-sensitive-match.patch b/debian/patches/hwdb-fix-case-sensitive-match.patch
new file mode 100644 (file)
index 0000000..240661d
--- /dev/null
@@ -0,0 +1,23 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 4 Jun 2014 17:55:14 +0200
+Subject: hwdb: fix case-sensitive match
+
+(cherry picked from commit 4c02dd7153f970244950b5e00f7bdfea8d2ff0be)
+(cherry picked from commit 47023e8267dafc845ed51544f193e33de6c2e350)
+---
+ hwdb/60-keyboard.hwdb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 17f06e8..3071c61 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -868,7 +868,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:pvr*
+ ###########################################################
+ # Plantronics .Audio 626 DSP
+-keyboard:usb:v047fpC006*
++keyboard:usb:v047FpC006*
+  KEYBOARD_KEY_b002f=f20                                # Microphone mute button; should be micmute
+ ###########################################################
diff --git a/debian/patches/hwdb-fix-match-for-Thinkpad-X201-tablet.patch b/debian/patches/hwdb-fix-match-for-Thinkpad-X201-tablet.patch
new file mode 100644 (file)
index 0000000..846705e
--- /dev/null
@@ -0,0 +1,22 @@
+From: AppleBloom <rat.o.drat@gmail.com>
+Date: Mon, 6 Jan 2014 20:51:47 -0500
+Subject: hwdb: fix match for Thinkpad X201 tablet
+
+https://bugs.freedesktop.org/show_bug.cgi?id=71929
+(cherry picked from commit f92164e45a0f7524e294fb383e624ff754095a25)
+---
+ hwdb/60-keyboard.hwdb | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index cf3d1fb..d253724 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -524,6 +524,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr*
+ # Thinkpad X200_Tablet
+ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*
+  KEYBOARD_KEY_5d=menu
+  KEYBOARD_KEY_63=fn
+  KEYBOARD_KEY_66=screenlock
diff --git a/debian/patches/hwdb-remove-duplicate-entry-for-Samsung-700Z.patch b/debian/patches/hwdb-remove-duplicate-entry-for-Samsung-700Z.patch
new file mode 100644 (file)
index 0000000..af4d485
--- /dev/null
@@ -0,0 +1,28 @@
+From: Dmitry Pisklov <dpisklov@gmail.com>
+Date: Mon, 6 Jan 2014 20:08:21 -0500
+Subject: hwdb: remove duplicate entry for Samsung 700Z
+
+keyboardbrightnessup/down are not even real keys.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=72311
+(cherry picked from commit 245dc22920d6592e50265c82c8def8e4bbf0e665)
+---
+ hwdb/60-keyboard.hwdb | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index ccfc734..cf3d1fb 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -918,11 +918,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*SX20S*:pvr*
+  KEYBOARD_KEY_77=f22                                    # Touchpad on
+  KEYBOARD_KEY_79=f23                                    # Touchpad off
+-keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
+- KEYBOARD_KEY_ba=ejectcd
+- KEYBOARD_KEY_96=keyboardbrightnessup
+- KEYBOARD_KEY_97=keyboardbrightnessdown
+-
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700T*:pvr*
+  KEYBOARD_KEY_ad=leftmeta
diff --git a/debian/patches/hwdb-update-189.patch b/debian/patches/hwdb-update-189.patch
new file mode 100644 (file)
index 0000000..e52bdc0
--- /dev/null
@@ -0,0 +1,4918 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Sun, 22 Dec 2013 11:32:11 -0800
+Subject: hwdb: update
+
+(cherry picked from commit c309c17df4e9ecb548bf437159b3cdc2cbfe6ef1)
+
+Conflicts:
+       hwdb/20-sdio-vendor-model.hwdb
+---
+ hwdb/20-OUI.hwdb              | 1174 ++++++++++++++++++++++++++++++++++++++++-
+ hwdb/20-pci-vendor-model.hwdb |  689 ++++++++++++++++++++++--
+ hwdb/20-usb-vendor-model.hwdb |  112 +++-
+ 3 files changed, 1922 insertions(+), 53 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index 5067167..92b96ae 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -13411,6 +13411,222 @@ OUI:40D855198*
+ OUI:40D855199*
+  ID_OUI_FROM_DATABASE=PRESSOL Schmiergeraete GmbH
++OUI:40D85519A*
++ ID_OUI_FROM_DATABASE=Rohde&Schwarz Topex SA
++
++OUI:40D85519B*
++ ID_OUI_FROM_DATABASE=Northern Star Technologies
++
++OUI:40D85519C*
++ ID_OUI_FROM_DATABASE=Parris Service Corporation
++
++OUI:40D85519D*
++ ID_OUI_FROM_DATABASE=EMAC, Inc.
++
++OUI:40D85519E*
++ ID_OUI_FROM_DATABASE=Thirdwayv Inc.
++
++OUI:40D85519F*
++ ID_OUI_FROM_DATABASE=Patria Aviation Oy
++
++OUI:40D8551A0*
++ ID_OUI_FROM_DATABASE=Futaba Corporation
++
++OUI:40D8551A1*
++ ID_OUI_FROM_DATABASE=KRONOTECH SRL
++
++OUI:40D8551A2*
++ ID_OUI_FROM_DATABASE=HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.
++
++OUI:40D8551A3*
++ ID_OUI_FROM_DATABASE=Noritake Itron Corporation
++
++OUI:40D8551A4*
++ ID_OUI_FROM_DATABASE=cibite AG
++
++OUI:40D8551A5*
++ ID_OUI_FROM_DATABASE=DemoPad
++
++OUI:40D8551A6*
++ ID_OUI_FROM_DATABASE=RB-LINK Wireless
++
++OUI:40D8551A7*
++ ID_OUI_FROM_DATABASE=ENTEC Electric & Electronic CO., LTD
++
++OUI:40D8551A8*
++ ID_OUI_FROM_DATABASE=Multiobrabotka
++
++OUI:40D8551A9*
++ ID_OUI_FROM_DATABASE=Lubino s.r.o.
++
++OUI:40D8551AA*
++ ID_OUI_FROM_DATABASE=Broachlink Technology Co.,Limited
++
++OUI:40D8551AB*
++ ID_OUI_FROM_DATABASE=Rosslare Enterprises Limited
++
++OUI:40D8551AC*
++ ID_OUI_FROM_DATABASE=ELAN SYSTEMS
++
++OUI:40D8551AD*
++ ID_OUI_FROM_DATABASE=WICHER DIGITAL TECHNIK
++
++OUI:40D8551AE*
++ ID_OUI_FROM_DATABASE=Autonomous Solutions, Inc
++
++OUI:40D8551AF*
++ ID_OUI_FROM_DATABASE=Vigitron Inc.
++
++OUI:40D8551B0*
++ ID_OUI_FROM_DATABASE=Shin-ei Electronic Measuring Co.,Ltd.
++
++OUI:40D8551B1*
++ ID_OUI_FROM_DATABASE=Logos 01 S.r.l.
++
++OUI:40D8551B2*
++ ID_OUI_FROM_DATABASE=AGE A. Gilg Elektronik
++
++OUI:40D8551B3*
++ ID_OUI_FROM_DATABASE=BETTINI SRL
++
++OUI:40D8551B4*
++ ID_OUI_FROM_DATABASE=Inforce Computing Inc.
++
++OUI:40D8551B5*
++ ID_OUI_FROM_DATABASE=A+EC Klein Ingenieurbuero
++
++OUI:40D8551B6*
++ ID_OUI_FROM_DATABASE=Magic Systems
++
++OUI:40D8551B7*
++ ID_OUI_FROM_DATABASE=TEWS Elektronik GmbH & Co. KG
++
++OUI:40D8551B8*
++ ID_OUI_FROM_DATABASE=Orion Systems, Inc
++
++OUI:40D8551B9*
++ ID_OUI_FROM_DATABASE=Beking Industrieele automatisering
++
++OUI:40D8551BA*
++ ID_OUI_FROM_DATABASE=Creative Lighting And Sound Systems Pty Ltd
++
++OUI:40D8551BB*
++ ID_OUI_FROM_DATABASE=Micromega Dynamics SA
++
++OUI:40D8551BC*
++ ID_OUI_FROM_DATABASE=KbDevice,Inc.
++
++OUI:40D8551BD*
++ ID_OUI_FROM_DATABASE=HORIBA ABX
++
++OUI:40D8551BE*
++ ID_OUI_FROM_DATABASE=PEEK TRAFFIC
++
++OUI:40D8551BF*
++ ID_OUI_FROM_DATABASE=shanghai mingding information tech co.Ltd
++
++OUI:40D8551C0*
++ ID_OUI_FROM_DATABASE=NPB Automation AB
++
++OUI:40D8551C1*
++ ID_OUI_FROM_DATABASE=Triamec Motion AG
++
++OUI:40D8551C2*
++ ID_OUI_FROM_DATABASE=Digital Display Systems
++
++OUI:40D8551C3*
++ ID_OUI_FROM_DATABASE=Cornfed Systems LLC
++
++OUI:40D8551C4*
++ ID_OUI_FROM_DATABASE=QED Advanced Systems Limited
++
++OUI:40D8551C6*
++ ID_OUI_FROM_DATABASE=Device Solutions Ltd
++
++OUI:40D8551C7*
++ ID_OUI_FROM_DATABASE=Wexiödisk AB
++
++OUI:40D8551C8*
++ ID_OUI_FROM_DATABASE=Sensata Technologies
++
++OUI:40D8551C9*
++ ID_OUI_FROM_DATABASE=Andy-L Ltd.
++
++OUI:40D8551CA*
++ ID_OUI_FROM_DATABASE=Rigel Engineering
++
++OUI:40D8551CB*
++ ID_OUI_FROM_DATABASE=MG S.r.l.
++
++OUI:40D8551CD*
++ ID_OUI_FROM_DATABASE=YXLON International A/S
++
++OUI:40D8551CE*
++ ID_OUI_FROM_DATABASE=Peter Huber
++
++OUI:40D8551CF*
++ ID_OUI_FROM_DATABASE=Omnik New Energy Co., Ltd
++
++OUI:40D8551D0*
++ ID_OUI_FROM_DATABASE=Webeasy BV
++
++OUI:40D8551D1*
++ ID_OUI_FROM_DATABASE=Founder Broadband Network Service Co.,Ltd.
++
++OUI:40D8551D2*
++ ID_OUI_FROM_DATABASE=InventLab s.c.
++
++OUI:40D8551D3*
++ ID_OUI_FROM_DATABASE=Kaluga Teletypes Manufacturing Plant
++
++OUI:40D8551D4*
++ ID_OUI_FROM_DATABASE=Prisma Engineering srl
++
++OUI:40D8551D5*
++ ID_OUI_FROM_DATABASE=FST21 Ltd.
++
++OUI:40D8551D6*
++ ID_OUI_FROM_DATABASE=EMS Computers Pty Ltd
++
++OUI:40D8551D7*
++ ID_OUI_FROM_DATABASE=Wheatstone Corporation
++
++OUI:40D8551D8*
++ ID_OUI_FROM_DATABASE=Owl Computing Technologies, Inc.
++
++OUI:40D8551D9*
++ ID_OUI_FROM_DATABASE=Commercial Wireless Systems International LLC.
++
++OUI:40D8551DA*
++ ID_OUI_FROM_DATABASE=Energy Technology and Control Ltd.
++
++OUI:40D8551DB*
++ ID_OUI_FROM_DATABASE=NIPPON TECHNO LAB.,INC,
++
++OUI:40D8551DC*
++ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
++
++OUI:40D8551DD*
++ ID_OUI_FROM_DATABASE=BaOpt Benelux bv
++
++OUI:40D8551DE*
++ ID_OUI_FROM_DATABASE=Vidisys GmbH
++
++OUI:40D8551DF*
++ ID_OUI_FROM_DATABASE=Chengdu Meihuan Technology Co.,Ltd
++
++OUI:40D8551E0*
++ ID_OUI_FROM_DATABASE=Embedded Technology Corporation
++
++OUI:40D8551E1*
++ ID_OUI_FROM_DATABASE=AD QUALITE
++
++OUI:40D8551E2*
++ ID_OUI_FROM_DATABASE=ELNEC s.r.o.
++
++OUI:40D8551E3*
++ ID_OUI_FROM_DATABASE=Mega Electronics Ltd
++
+ OUI:000000*
+  ID_OUI_FROM_DATABASE=XEROX CORPORATION
+@@ -13664,7 +13880,7 @@ OUI:000053*
+  ID_OUI_FROM_DATABASE=COMPUCORP
+ OUI:000054*
+- ID_OUI_FROM_DATABASE=MODICON, INC.
++ ID_OUI_FROM_DATABASE=Schnieder Electric
+ OUI:000055*
+  ID_OUI_FROM_DATABASE=COMMISSARIAT A L`ENERGIE ATOM.
+@@ -13694,7 +13910,7 @@ OUI:00005D*
+  ID_OUI_FROM_DATABASE=CS TELECOM
+ OUI:00005E*
+- ID_OUI_FROM_DATABASE=USC INFORMATION SCIENCES INST
++ ID_OUI_FROM_DATABASE=ICANN, IANA Department
+ OUI:00005F*
+  ID_OUI_FROM_DATABASE=SUMITOMO ELECTRIC IND., LTD.
+@@ -17957,7 +18173,7 @@ OUI:0005ED*
+  ID_OUI_FROM_DATABASE=Technikum Joanneum GmbH
+ OUI:0005EE*
+- ID_OUI_FROM_DATABASE=BEWATOR Group
++ ID_OUI_FROM_DATABASE=Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR
+ OUI:0005EF*
+  ID_OUI_FROM_DATABASE=ADOIR Digital Technology
+@@ -19412,7 +19628,7 @@ OUI:0007D2*
+  ID_OUI_FROM_DATABASE=Logopak Systeme GmbH & Co. KG
+ OUI:0007D3*
+- ID_OUI_FROM_DATABASE=Stork Prints B.V.
++ ID_OUI_FROM_DATABASE=SPGPrints B.V.
+ OUI:0007D4*
+  ID_OUI_FROM_DATABASE=Zhejiang Yutong Network Communication Co Ltd.
+@@ -19613,7 +19829,7 @@ OUI:000815*
+  ID_OUI_FROM_DATABASE=CATS Co., Ltd.
+ OUI:000816*
+- ID_OUI_FROM_DATABASE=Bluetags A/S
++ ID_OUI_FROM_DATABASE=Bluelon ApS
+ OUI:000817*
+  ID_OUI_FROM_DATABASE=EmergeCore Networks LLC
+@@ -29819,7 +30035,7 @@ OUI:001587*
+  ID_OUI_FROM_DATABASE=Takenaka Seisakusho Co.,Ltd
+ OUI:001588*
+- ID_OUI_FROM_DATABASE=Balda Solution Malaysia Sdn Bhd
++ ID_OUI_FROM_DATABASE=Salutica Allied Solutions Sdn Bhd
+ OUI:001589*
+  ID_OUI_FROM_DATABASE=D-MAX Technology Co.,Ltd
+@@ -33935,7 +34151,7 @@ OUI:001AE7*
+  ID_OUI_FROM_DATABASE=Aztek Networks, Inc.
+ OUI:001AE8*
+- ID_OUI_FROM_DATABASE=Siemens Enterprise Communications GmbH & Co. KG
++ ID_OUI_FROM_DATABASE=Unify GmbH and Co KG
+ OUI:001AE9*
+  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+@@ -36926,7 +37142,7 @@ OUI:001ECC*
+  ID_OUI_FROM_DATABASE=2Wire, Inc.
+ OUI:001ECD*
+- ID_OUI_FROM_DATABASE=2Wire, Inc.
++ ID_OUI_FROM_DATABASE=KYLAND Technology Co. LTD
+ OUI:001ECE*
+  ID_OUI_FROM_DATABASE=2Wire, Inc.
+@@ -40337,7 +40553,7 @@ OUI:002340*
+  ID_OUI_FROM_DATABASE=MiX Telematics
+ OUI:002341*
+- ID_OUI_FROM_DATABASE=Siemens AG, Infrastructure & Cities Sector, Building Technologies Division
++ ID_OUI_FROM_DATABASE=Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR
+ OUI:002342*
+  ID_OUI_FROM_DATABASE=Coffee Equipment Company
+@@ -42200,7 +42416,7 @@ OUI:0025B8*
+  ID_OUI_FROM_DATABASE=Agile Communications, Inc.
+ OUI:0025B9*
+- ID_OUI_FROM_DATABASE=Agilink Systems Corp.
++ ID_OUI_FROM_DATABASE=Cypress Solutions Inc
+ OUI:0025BA*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
+@@ -44405,7 +44621,7 @@ OUI:004065*
+  ID_OUI_FROM_DATABASE=GTE SPACENET
+ OUI:004066*
+- ID_OUI_FROM_DATABASE=HITACHI CABLE, LTD.
++ ID_OUI_FROM_DATABASE=Hitachi Metals, Ltd.
+ OUI:004067*
+  ID_OUI_FROM_DATABASE=OMNIBYTE CORPORATION
+@@ -46100,7 +46316,7 @@ OUI:0060A3*
+  ID_OUI_FROM_DATABASE=CONTINUUM TECHNOLOGY CORP.
+ OUI:0060A4*
+- ID_OUI_FROM_DATABASE=GRINAKER SYSTEM TECHNOLOGIES
++ ID_OUI_FROM_DATABASE=GEW Technologies (PTY)Ltd
+ OUI:0060A5*
+  ID_OUI_FROM_DATABASE=PERFORMANCE TELECOM CORP.
+@@ -46904,7 +47120,7 @@ OUI:0080A1*
+  ID_OUI_FROM_DATABASE=MICROTEST, INC.
+ OUI:0080A2*
+- ID_OUI_FROM_DATABASE=Tattile SRL
++ ID_OUI_FROM_DATABASE=CREATIVE ELECTRONIC SYSTEMS
+ OUI:0080A3*
+  ID_OUI_FROM_DATABASE=Lantronix
+@@ -47188,6 +47404,9 @@ OUI:0080FF*
+ OUI:008865*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:008B43*
++ ID_OUI_FROM_DATABASE=RFTECH
++
+ OUI:008C10*
+  ID_OUI_FROM_DATABASE=Black Box Corp.
+@@ -47980,6 +48199,9 @@ OUI:0091D6*
+ OUI:0091FA*
+  ID_OUI_FROM_DATABASE=Synapse Product Development
++OUI:0092FA*
++ ID_OUI_FROM_DATABASE=SHENZHEN WISKY TECHNOLOGY CO.,LTD
++
+ OUI:009363*
+  ID_OUI_FROM_DATABASE=Uni-Link Technology Co., Ltd.
+@@ -51340,6 +51562,9 @@ OUI:00E8AB*
+ OUI:00EB2D*
+  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++OUI:00EEBD*
++ ID_OUI_FROM_DATABASE=HTC Corporation
++
+ OUI:00F051*
+  ID_OUI_FROM_DATABASE=KWB Gmbh
+@@ -51481,6 +51706,9 @@ OUI:044BFF*
+ OUI:044CEF*
+  ID_OUI_FROM_DATABASE=Fujian Sanao Technology Co.,Ltd
++OUI:044E06*
++ ID_OUI_FROM_DATABASE=Ericsson AB
++
+ OUI:044F8B*
+  ID_OUI_FROM_DATABASE=Adapteva, Inc.
+@@ -51628,6 +51856,9 @@ OUI:04DAD2*
+ OUI:04DB56*
+  ID_OUI_FROM_DATABASE=Apple, Inc.
++OUI:04DB8A*
++ ID_OUI_FROM_DATABASE=Suntech International Ltd.
++
+ OUI:04DD4C*
+  ID_OUI_FROM_DATABASE=Velocytech
+@@ -51664,6 +51895,9 @@ OUI:04EE91*
+ OUI:04F021*
+  ID_OUI_FROM_DATABASE=Compex Systems Pte Ltd
++OUI:04F13E*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:04F17D*
+  ID_OUI_FROM_DATABASE=Tarana Wireless
+@@ -52117,6 +52351,12 @@ OUI:08008F*
+ OUI:080090*
+  ID_OUI_FROM_DATABASE=SONOMA SYSTEMS
++OUI:080371*
++ ID_OUI_FROM_DATABASE=KRG CORPORATE
++
++OUI:0805CD*
++ ID_OUI_FROM_DATABASE=DongGuang EnMai Electronic Product Co.Ltd.
++
+ OUI:0808C2*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+@@ -52204,12 +52444,21 @@ OUI:083E0C*
+ OUI:083E8E*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
++OUI:083F3E*
++ ID_OUI_FROM_DATABASE=WSH GmbH
++
++OUI:083F76*
++ ID_OUI_FROM_DATABASE=Intellian Technologies, Inc.
++
+ OUI:084027*
+  ID_OUI_FROM_DATABASE=Gridstore Inc.
+ OUI:08482C*
+  ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD.
++OUI:084929*
++ ID_OUI_FROM_DATABASE=CYBATI
++
+ OUI:084E1C*
+  ID_OUI_FROM_DATABASE=H2A Systems, LLC
+@@ -52222,6 +52471,9 @@ OUI:08512E*
+ OUI:085240*
+  ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH
++OUI:085700*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:085AE0*
+  ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd.
+@@ -52240,6 +52492,9 @@ OUI:0868D0*
+ OUI:0868EA*
+  ID_OUI_FROM_DATABASE=EITO ELECTRONICS CO., LTD.
++OUI:086DF2*
++ ID_OUI_FROM_DATABASE=Shenzhen MIMOWAVE Technology Co.,Ltd
++
+ OUI:087045*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -52450,6 +52705,9 @@ OUI:0C3956*
+ OUI:0C3C65*
+  ID_OUI_FROM_DATABASE=Dome Imaging Inc
++OUI:0C3E9F*
++ ID_OUI_FROM_DATABASE=Apple, Inc
++
+ OUI:0C469D*
+  ID_OUI_FROM_DATABASE=MS Sedco
+@@ -52462,6 +52720,9 @@ OUI:0C4C39*
+ OUI:0C4DE9*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:0C4F5A*
++ ID_OUI_FROM_DATABASE=ASA-RT s.r.l.
++
+ OUI:0C51F7*
+  ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX
+@@ -52597,6 +52858,9 @@ OUI:0CC0C0*
+ OUI:0CC3A7*
+  ID_OUI_FROM_DATABASE=Meritec
++OUI:0CC47A*
++ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
++
+ OUI:0CC47E*
+  ID_OUI_FROM_DATABASE=EUCAST Co., Ltd.
+@@ -52657,6 +52921,9 @@ OUI:0CDDEF*
+ OUI:0CDFA4*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:0CE0E4*
++ ID_OUI_FROM_DATABASE=Plantronics, Inc
++
+ OUI:0CE5D3*
+  ID_OUI_FROM_DATABASE=DH electronics GmbH
+@@ -52765,6 +53032,9 @@ OUI:101F74*
+ OUI:102279*
+  ID_OUI_FROM_DATABASE=ZeroDesktop, Inc.
++OUI:1027BE*
++ ID_OUI_FROM_DATABASE=TVIP
++
+ OUI:102831*
+  ID_OUI_FROM_DATABASE=Morion Inc.
+@@ -52954,6 +53224,12 @@ OUI:10D542*
+ OUI:10DDB1*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:10DDF4*
++ ID_OUI_FROM_DATABASE=Maxway Electronics CO.,LTD
++
++OUI:10DEE4*
++ ID_OUI_FROM_DATABASE=automationNEXT GmbH
++
+ OUI:10E2D5*
+  ID_OUI_FROM_DATABASE=Qi Hardware Inc.
+@@ -53155,6 +53431,12 @@ OUI:14B1C8*
+ OUI:14B73D*
+  ID_OUI_FROM_DATABASE=ARCHEAN Technologies
++OUI:14B968*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
++OUI:14C089*
++ ID_OUI_FROM_DATABASE=DUNE HD LTD
++
+ OUI:14C21D*
+  ID_OUI_FROM_DATABASE=Sabtech Industries
+@@ -53275,6 +53557,9 @@ OUI:182012*
+ OUI:182032*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:1820A6*
++ ID_OUI_FROM_DATABASE=Sage Co., Ltd.
++
+ OUI:182666*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -53386,6 +53671,9 @@ OUI:1880CE*
+ OUI:1880F5*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
++OUI:188331*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:188410*
+  ID_OUI_FROM_DATABASE=CoreTrust Inc.
+@@ -53401,6 +53689,9 @@ OUI:188796*
+ OUI:188857*
+  ID_OUI_FROM_DATABASE=Beijing Jinhong Xi-Dian Information Technology Corp.
++OUI:1889DF*
++ ID_OUI_FROM_DATABASE=CerebrEX Inc.
++
+ OUI:188ED5*
+  ID_OUI_FROM_DATABASE=TP Vision Belgium N.V. - innovation site Brugge
+@@ -53491,6 +53782,9 @@ OUI:18E288*
+ OUI:18E2C2*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:18E728*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:18E7F4*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -53521,6 +53815,9 @@ OUI:18FC9F*
+ OUI:18FE34*
+  ID_OUI_FROM_DATABASE=Espressif Inc.
++OUI:18FF2E*
++ ID_OUI_FROM_DATABASE=Shenzhen Rui Ying Da Technology Co., Ltd
++
+ OUI:1C0656*
+  ID_OUI_FROM_DATABASE=IDY Corporation
+@@ -53551,6 +53848,9 @@ OUI:1C184A*
+ OUI:1C19DE*
+  ID_OUI_FROM_DATABASE=eyevis GmbH
++OUI:1C1B68*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:1C1D67*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
+@@ -53707,6 +54007,9 @@ OUI:1CA770*
+ OUI:1CAA07*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:1CAB01*
++ ID_OUI_FROM_DATABASE=Innovolt
++
+ OUI:1CABA7*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -53770,6 +54073,9 @@ OUI:1CE62B*
+ OUI:1CE6C7*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:1CEEE8*
++ ID_OUI_FROM_DATABASE=Ilshin Elecom
++
+ OUI:1CF061*
+  ID_OUI_FROM_DATABASE=SCAPS GmbH
+@@ -53779,6 +54085,9 @@ OUI:1CF5E7*
+ OUI:1CFA68*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++OUI:1CFCBB*
++ ID_OUI_FROM_DATABASE=Realfiction ApS
++
+ OUI:1CFEA7*
+  ID_OUI_FROM_DATABASE=IDentytech Solutins Ltd.
+@@ -53794,12 +54103,21 @@ OUI:200505*
+ OUI:2005E8*
+  ID_OUI_FROM_DATABASE=OOO InProMedia
++OUI:2008ED*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:200A5E*
+  ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing co.,LTD
+ OUI:200BC7*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:200CC8*
++ ID_OUI_FROM_DATABASE=NETGEAR INC.,
++
++OUI:200E95*
++ ID_OUI_FROM_DATABASE=IEC – TC9 WG43
++
+ OUI:20107A*
+  ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd.
+@@ -53917,6 +54235,9 @@ OUI:207D74*
+ OUI:20858C*
+  ID_OUI_FROM_DATABASE=Assa
++OUI:2087AC*
++ ID_OUI_FROM_DATABASE=AES motomation
++
+ OUI:208984*
+  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD
+@@ -54022,6 +54343,9 @@ OUI:20E564*
+ OUI:20E791*
+  ID_OUI_FROM_DATABASE=Siemens Healthcare Diagnostics, Inc
++OUI:20EAC7*
++ ID_OUI_FROM_DATABASE=SHENZHEN RIOPINE ELECTRONICS CO., LTD
++
+ OUI:20EEC6*
+  ID_OUI_FROM_DATABASE=Elefirst Science & Tech Co ., ltd
+@@ -54070,6 +54394,9 @@ OUI:241064*
+ OUI:241125*
+  ID_OUI_FROM_DATABASE=Hutek Co., Ltd.
++OUI:241148*
++ ID_OUI_FROM_DATABASE=Entropix, LLC
++
+ OUI:2411D0*
+  ID_OUI_FROM_DATABASE=Chongqing Ehs Science and Technology Development Co.,Ltd.
+@@ -54085,6 +54412,9 @@ OUI:241F2C*
+ OUI:2421AB*
+  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications
++OUI:242642*
++ ID_OUI_FROM_DATABASE=SHARP Corporation.
++
+ OUI:242FFA*
+  ID_OUI_FROM_DATABASE=Toshiba Global Commerce Solutions
+@@ -54328,6 +54658,9 @@ OUI:281878*
+ OUI:2818FD*
+  ID_OUI_FROM_DATABASE=Aditya Infotech Ltd.
++OUI:282246*
++ ID_OUI_FROM_DATABASE=Beijing Sinoix Communication Co., LTD
++
+ OUI:2826A6*
+  ID_OUI_FROM_DATABASE=PBR electronics GmbH
+@@ -54397,6 +54730,12 @@ OUI:286046*
+ OUI:286094*
+  ID_OUI_FROM_DATABASE=CAPELEC
++OUI:286336*
++ ID_OUI_FROM_DATABASE=Siemens AG - Industrial Automation - EWA
++
++OUI:28656B*
++ ID_OUI_FROM_DATABASE=Keystone Microtech Corporation
++
+ OUI:286AB8*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -54451,6 +54790,9 @@ OUI:28987B*
+ OUI:289A4B*
+  ID_OUI_FROM_DATABASE=SteelSeries ApS
++OUI:289AFA*
++ ID_OUI_FROM_DATABASE=TCT Mobile Limited
++
+ OUI:289EDF*
+  ID_OUI_FROM_DATABASE=Danfoss Turbocor Compressors, Inc
+@@ -54487,6 +54829,9 @@ OUI:28BA18*
+ OUI:28BAB5*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:28BB59*
++ ID_OUI_FROM_DATABASE=RNET Technologies, Inc.
++
+ OUI:28BE9B*
+  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
+@@ -54502,6 +54847,9 @@ OUI:28C68E*
+ OUI:28C718*
+  ID_OUI_FROM_DATABASE=Altierre
++OUI:28C825*
++ ID_OUI_FROM_DATABASE=DellKing Industrial Co., Ltd
++
+ OUI:28C914*
+  ID_OUI_FROM_DATABASE=Taimag Corporation
+@@ -54547,6 +54895,9 @@ OUI:28D997*
+ OUI:28DB81*
+  ID_OUI_FROM_DATABASE=Shanghai Guao Electronic Technology Co., Ltd
++OUI:28DEF6*
++ ID_OUI_FROM_DATABASE=bioMerieux Inc.
++
+ OUI:28E02C*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -54598,6 +54949,9 @@ OUI:2C00F7*
+ OUI:2C0623*
+  ID_OUI_FROM_DATABASE=Win Leader Inc.
++OUI:2C073C*
++ ID_OUI_FROM_DATABASE=DEVLINE LIMITED
++
+ OUI:2C10C1*
+  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+@@ -54655,6 +55009,9 @@ OUI:2C3A28*
+ OUI:2C3BFD*
+  ID_OUI_FROM_DATABASE=Netstor Technology Co., Ltd.
++OUI:2C3ECF*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:2C3F38*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -54673,6 +55030,9 @@ OUI:2C441B*
+ OUI:2C44FD*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:2C534A*
++ ID_OUI_FROM_DATABASE=Shenzhen Winyao Electronic Limited
++
+ OUI:2C542D*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -54748,6 +55108,9 @@ OUI:2C922C*
+ OUI:2C9464*
+  ID_OUI_FROM_DATABASE=Cincoze Co., Ltd.
++OUI:2C957F*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:2C9717*
+  ID_OUI_FROM_DATABASE=I.C.Y. B.V.
+@@ -55009,6 +55372,9 @@ OUI:3092F6*
+ OUI:309BAD*
+  ID_OUI_FROM_DATABASE=BBK Electronics Corp., Ltd.,
++OUI:30A8DB*
++ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++
+ OUI:30AABD*
+  ID_OUI_FROM_DATABASE=Shanghai Reallytek Information Technology Co.,Ltd
+@@ -55024,6 +55390,12 @@ OUI:30B216*
+ OUI:30B3A2*
+  ID_OUI_FROM_DATABASE=Shenzhen Heguang Measurement & Control Technology Co.,Ltd
++OUI:30B5C2*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
++OUI:30C750*
++ ID_OUI_FROM_DATABASE=MIC Technology Group
++
+ OUI:30C82A*
+  ID_OUI_FROM_DATABASE=Wi-Next s.r.l.
+@@ -55060,6 +55432,9 @@ OUI:30F31D*
+ OUI:30F33A*
+  ID_OUI_FROM_DATABASE=+plugg srl
++OUI:30F42F*
++ ID_OUI_FROM_DATABASE=ESP
++
+ OUI:30F70D*
+  ID_OUI_FROM_DATABASE=Cisco Systems
+@@ -55087,6 +55462,9 @@ OUI:3413E8*
+ OUI:34159E*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:3417EB*
++ ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++
+ OUI:341A4C*
+  ID_OUI_FROM_DATABASE=SHENZHEN WEIBU ELECTRONICS CO.,LTD.
+@@ -55117,6 +55495,9 @@ OUI:343111*
+ OUI:3440B5*
+  ID_OUI_FROM_DATABASE=IBM
++OUI:34466F*
++ ID_OUI_FROM_DATABASE=HiTEM Engineering
++
+ OUI:344B3D*
+  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
+@@ -55126,6 +55507,9 @@ OUI:344B50*
+ OUI:344F3F*
+  ID_OUI_FROM_DATABASE=IO-Power Technology Co., Ltd.
++OUI:344F5C*
++ ID_OUI_FROM_DATABASE=R&amp;M AG
++
+ OUI:344F69*
+  ID_OUI_FROM_DATABASE=EKINOPS SAS
+@@ -55318,6 +55702,12 @@ OUI:34D7B4*
+ OUI:34DBFD*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:34DE1A*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
++OUI:34DE34*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:34DF2A*
+  ID_OUI_FROM_DATABASE=Fujikon Industrial Co.,Limited
+@@ -55456,6 +55846,9 @@ OUI:386793*
+ OUI:386BBB*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:386C9B*
++ ID_OUI_FROM_DATABASE=Ivy Biomedical
++
+ OUI:386E21*
+  ID_OUI_FROM_DATABASE=Wasion Group Ltd.
+@@ -55576,9 +55969,15 @@ OUI:38ECE4*
+ OUI:38EE9D*
+  ID_OUI_FROM_DATABASE=Anedo Ltd.
++OUI:38F098*
++ ID_OUI_FROM_DATABASE=Vapor Stone Rail Systems
++
+ OUI:38F597*
+  ID_OUI_FROM_DATABASE=home2net GmbH
++OUI:38F708*
++ ID_OUI_FROM_DATABASE=National Resource Management, Inc.
++
+ OUI:38F8B7*
+  ID_OUI_FROM_DATABASE=V2COM PARTICIPACOES S.A.
+@@ -55603,9 +56002,15 @@ OUI:3C0771*
+ OUI:3C081E*
+  ID_OUI_FROM_DATABASE=Beijing Yupont Electric Power Technology Co.,Ltd
++OUI:3C08F6*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:3C096D*
+  ID_OUI_FROM_DATABASE=Powerhouse Dynamics
++OUI:3C0C48*
++ ID_OUI_FROM_DATABASE=Servergy, Inc.
++
+ OUI:3C0E23*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -55639,6 +56044,9 @@ OUI:3C1A79*
+ OUI:3C1CBE*
+  ID_OUI_FROM_DATABASE=JADAK LLC
++OUI:3C25D7*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:3C26D5*
+  ID_OUI_FROM_DATABASE=Sotera Wireless
+@@ -55744,6 +56152,9 @@ OUI:3C83B5*
+ OUI:3C86A8*
+  ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD
++OUI:3C89A6*
++ ID_OUI_FROM_DATABASE=KAPELSE
++
+ OUI:3C8AB0*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -55837,6 +56248,9 @@ OUI:3CD92B*
+ OUI:3CDF1E*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:3CDFBD*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:3CE072*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -55870,6 +56284,9 @@ OUI:3CF748*
+ OUI:3CFB96*
+  ID_OUI_FROM_DATABASE=Emcraft Systems LLC
++OUI:400107*
++ ID_OUI_FROM_DATABASE=Arista Corp
++
+ OUI:4001C6*
+  ID_OUI_FROM_DATABASE=3COM EUROPE LTD
+@@ -55948,6 +56365,9 @@ OUI:40406B*
+ OUI:404A03*
+  ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
++OUI:404A18*
++ ID_OUI_FROM_DATABASE=Addrek Smart Solutions
++
+ OUI:404D8E*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
+@@ -56011,6 +56431,9 @@ OUI:407074*
+ OUI:407496*
+  ID_OUI_FROM_DATABASE=aFUN TECHNOLOGY INC.
++OUI:407875*
++ ID_OUI_FROM_DATABASE=IMBEL - Industria de Material Belico do Brasil
++
+ OUI:407A80*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -56059,6 +56482,9 @@ OUI:40A6A4*
+ OUI:40A6D9*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:40A8F0*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:40AC8D*
+  ID_OUI_FROM_DATABASE=Data Management, Inc.
+@@ -56164,6 +56590,9 @@ OUI:4403A7*
+ OUI:440CFD*
+  ID_OUI_FROM_DATABASE=NetMan Co., Ltd.
++OUI:4411C2*
++ ID_OUI_FROM_DATABASE=Telegartner Karl Gartner GmbH
++
+ OUI:441319*
+  ID_OUI_FROM_DATABASE=WKK TECHNOLOGY LTD.
+@@ -56182,6 +56611,9 @@ OUI:4423AA*
+ OUI:4425BB*
+  ID_OUI_FROM_DATABASE=Bamboo Entertainment Corporation
++OUI:442938*
++ ID_OUI_FROM_DATABASE=NietZsche enterprise Co.Ltd.
++
+ OUI:442A60*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -56230,6 +56662,9 @@ OUI:443D21*
+ OUI:443EB2*
+  ID_OUI_FROM_DATABASE=DEOTRON Co., LTD.
++OUI:444891*
++ ID_OUI_FROM_DATABASE=HDMI Licensing, LLC
++
+ OUI:444A65*
+  ID_OUI_FROM_DATABASE=Silverflare Ltd.
+@@ -56287,6 +56722,9 @@ OUI:446D57*
+ OUI:44700B*
+  ID_OUI_FROM_DATABASE=IFFU
++OUI:447098*
++ ID_OUI_FROM_DATABASE=MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED
++
+ OUI:447BC4*
+  ID_OUI_FROM_DATABASE=DualShine Technology(SZ)Co.,Ltd
+@@ -56296,6 +56734,9 @@ OUI:447C7F*
+ OUI:447DA5*
+  ID_OUI_FROM_DATABASE=VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD
++OUI:447E76*
++ ID_OUI_FROM_DATABASE=Trek Technology (S) Pte Ltd
++
+ OUI:447E95*
+  ID_OUI_FROM_DATABASE=Alpha and Omega, Inc
+@@ -56365,6 +56806,9 @@ OUI:44C15C*
+ OUI:44C233*
+  ID_OUI_FROM_DATABASE=Guangzhou Comet Technology Development Co.Ltd
++OUI:44C306*
++ ID_OUI_FROM_DATABASE=SIFROM Inc.
++
+ OUI:44C39B*
+  ID_OUI_FROM_DATABASE=OOO RUBEZH NPO
+@@ -56443,6 +56887,9 @@ OUI:4813F3*
+ OUI:48174C*
+  ID_OUI_FROM_DATABASE=MicroPower technologies
++OUI:481842*
++ ID_OUI_FROM_DATABASE=Shanghai Winaas Co. Equipment Co. Ltd.
++
+ OUI:481BD2*
+  ID_OUI_FROM_DATABASE=Intron Scientific co., ltd.
+@@ -56458,6 +56905,9 @@ OUI:4833DD*
+ OUI:48343D*
+  ID_OUI_FROM_DATABASE=IEP GmbH
++OUI:483D32*
++ ID_OUI_FROM_DATABASE=Syscor Controls &amp; Automation
++
+ OUI:484487*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
+@@ -56476,6 +56926,9 @@ OUI:485261*
+ OUI:485A3F*
+  ID_OUI_FROM_DATABASE=WISOL
++OUI:485AB6*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:485B39*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+@@ -56500,6 +56953,9 @@ OUI:486FD2*
+ OUI:487119*
+  ID_OUI_FROM_DATABASE=SGB GROUP LTD.
++OUI:48746E*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:488E42*
+  ID_OUI_FROM_DATABASE=DIGALOG GmbH
+@@ -56530,6 +56986,9 @@ OUI:48AA5D*
+ OUI:48B253*
+  ID_OUI_FROM_DATABASE=Marketaxess Corporation
++OUI:48B5A7*
++ ID_OUI_FROM_DATABASE=Glory Horse Industries Ltd.
++
+ OUI:48B8DE*
+  ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD.
+@@ -56554,6 +57013,9 @@ OUI:48C8B6*
+ OUI:48CB6E*
+  ID_OUI_FROM_DATABASE=Cello Electronics (UK) Ltd
++OUI:48D0CF*
++ ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
++
+ OUI:48D224*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+@@ -56584,6 +57046,12 @@ OUI:48EB30*
+ OUI:48ED80*
+  ID_OUI_FROM_DATABASE=daesung eltec
++OUI:48EE07*
++ ID_OUI_FROM_DATABASE=Silver Palm Technologies LLC
++
++OUI:48EE86*
++ ID_OUI_FROM_DATABASE=UTStarcom (China) Co.,Ltd
++
+ OUI:48F230*
+  ID_OUI_FROM_DATABASE=Ubizcore Co.,LTD
+@@ -56605,6 +57073,9 @@ OUI:48F925*
+ OUI:48FCB8*
+  ID_OUI_FROM_DATABASE=Woodstream Corporation
++OUI:48FEEA*
++ ID_OUI_FROM_DATABASE=HOMA B.V.
++
+ OUI:4C0082*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -56626,6 +57097,9 @@ OUI:4C09B4*
+ OUI:4C0B3A*
+  ID_OUI_FROM_DATABASE=TCT Mobile Limited
++OUI:4C0DEE*
++ ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD.
++
+ OUI:4C0F6E*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -56746,6 +57220,9 @@ OUI:4C7897*
+ OUI:4C79BA*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:4C7F62*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:4C804F*
+  ID_OUI_FROM_DATABASE=Armstrong Monitoring Corp
+@@ -56755,6 +57232,9 @@ OUI:4C8093*
+ OUI:4C82CF*
+  ID_OUI_FROM_DATABASE=Echostar Technologies
++OUI:4C8B30*
++ ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
++
+ OUI:4C8B55*
+  ID_OUI_FROM_DATABASE=Grupo Digicon
+@@ -56779,6 +57259,9 @@ OUI:4C9E80*
+ OUI:4C9EE4*
+  ID_OUI_FROM_DATABASE=Hanyang Navicom Co.,Ltd.
++OUI:4CA56D*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:4CA74B*
+  ID_OUI_FROM_DATABASE=Alcatel Lucent
+@@ -56833,6 +57316,9 @@ OUI:4CCC34*
+ OUI:4CD637*
+  ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd
++OUI:4CD7B6*
++ ID_OUI_FROM_DATABASE=Helmer Scientific
++
+ OUI:4CD9C4*
+  ID_OUI_FROM_DATABASE=Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd
+@@ -56854,6 +57340,9 @@ OUI:4CEDDE*
+ OUI:4CF02E*
+  ID_OUI_FROM_DATABASE=Vifa Denmark A/S
++OUI:4CF45B*
++ ID_OUI_FROM_DATABASE=Blue Clover Devices
++
+ OUI:4CF737*
+  ID_OUI_FROM_DATABASE=SamJi Electronics Co., Ltd
+@@ -56884,6 +57373,9 @@ OUI:5017FF*
+ OUI:501AC5*
+  ID_OUI_FROM_DATABASE=Microsoft
++OUI:501CBF*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:50206B*
+  ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions
+@@ -56950,6 +57442,9 @@ OUI:504F94*
+ OUI:505663*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:5056A8*
++ ID_OUI_FROM_DATABASE=Jolla Ltd
++
+ OUI:5057A8*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -56959,6 +57454,9 @@ OUI:505AC6*
+ OUI:506028*
+  ID_OUI_FROM_DATABASE=Xirrus Inc.
++OUI:506184*
++ ID_OUI_FROM_DATABASE=Avaya, Inc
++
+ OUI:5061D6*
+  ID_OUI_FROM_DATABASE=Indu-Sol GmbH
+@@ -57025,6 +57523,9 @@ OUI:509871*
+ OUI:509F27*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++OUI:50A054*
++ ID_OUI_FROM_DATABASE=Actineon
++
+ OUI:50A0BF*
+  ID_OUI_FROM_DATABASE=Alba Fiber Systems Inc.
+@@ -57046,6 +57547,9 @@ OUI:50ABBF*
+ OUI:50AF73*
+  ID_OUI_FROM_DATABASE=Shenzhen Bitland Information Technology Co., Ltd.
++OUI:50B695*
++ ID_OUI_FROM_DATABASE=Micropoint Biotechnologies,Inc.
++
+ OUI:50B7C3*
+  ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
+@@ -57163,6 +57667,9 @@ OUI:5422F8*
+ OUI:542696*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:54271E*
++ ID_OUI_FROM_DATABASE=AzureWave Technonloies, Inc.
++
+ OUI:542A9C*
+  ID_OUI_FROM_DATABASE=LSY Defense, LLC.
+@@ -57175,6 +57682,9 @@ OUI:542F89*
+ OUI:543131*
+  ID_OUI_FROM_DATABASE=Raster Vision Ltd
++OUI:543530*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:5435DF*
+  ID_OUI_FROM_DATABASE=Symeo GmbH
+@@ -57214,6 +57724,9 @@ OUI:545FA9*
+ OUI:5461EA*
+  ID_OUI_FROM_DATABASE=Zaplox AB
++OUI:54724F*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:547398*
+  ID_OUI_FROM_DATABASE=Toyo Electronics Corporation
+@@ -57274,6 +57787,9 @@ OUI:549D85*
+ OUI:54A04F*
+  ID_OUI_FROM_DATABASE=t-mac Technologies Ltd
++OUI:54A31B*
++ ID_OUI_FROM_DATABASE=Shenzhen Linkworld Technology Co,.LTD
++
+ OUI:54A51B*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
+@@ -57286,6 +57802,9 @@ OUI:54A619*
+ OUI:54A9D4*
+  ID_OUI_FROM_DATABASE=Minibar Systems
++OUI:54AE27*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:54B620*
+  ID_OUI_FROM_DATABASE=SUHDOL E&C Co.Ltd.
+@@ -57295,9 +57814,15 @@ OUI:54BEF7*
+ OUI:54CDA7*
+  ID_OUI_FROM_DATABASE=Fujian Shenzhou Electronic Co.,Ltd
++OUI:54CDEE*
++ ID_OUI_FROM_DATABASE=ShenZhen Apexis Electronic Co.,Ltd
++
+ OUI:54D0ED*
+  ID_OUI_FROM_DATABASE=AXIM Communications
++OUI:54D163*
++ ID_OUI_FROM_DATABASE=MAX-TECH,INC
++
+ OUI:54D1B0*
+  ID_OUI_FROM_DATABASE=Universal Laser Systems, Inc
+@@ -57310,6 +57835,9 @@ OUI:54DF63*
+ OUI:54E032*
+  ID_OUI_FROM_DATABASE=Juniper Networks
++OUI:54E2E0*
++ ID_OUI_FROM_DATABASE=Pace plc
++
+ OUI:54E3B0*
+  ID_OUI_FROM_DATABASE=JVL Industri Elektronik
+@@ -57337,6 +57865,9 @@ OUI:54FB58*
+ OUI:54FDBF*
+  ID_OUI_FROM_DATABASE=Scheidt & Bachmann GmbH
++OUI:580528*
++ ID_OUI_FROM_DATABASE=LABRIS NETWORKS
++
+ OUI:580556*
+  ID_OUI_FROM_DATABASE=Elettronica GF S.r.L.
+@@ -57346,6 +57877,9 @@ OUI:5808FA*
+ OUI:5809E5*
+  ID_OUI_FROM_DATABASE=Kivic Inc.
++OUI:580A20*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:581243*
+  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
+@@ -57394,6 +57928,9 @@ OUI:5846E1*
+ OUI:5848C0*
+  ID_OUI_FROM_DATABASE=COFLEC
++OUI:58493B*
++ ID_OUI_FROM_DATABASE=Palo Alto Networks
++
+ OUI:5849BA*
+  ID_OUI_FROM_DATABASE=Chitai Electronic Corp.
+@@ -57406,6 +57943,9 @@ OUI:584CEE*
+ OUI:585076*
+  ID_OUI_FROM_DATABASE=Linear Equipamentos Eletronicos SA
++OUI:5850AB*
++ ID_OUI_FROM_DATABASE=TLS Corporation
++
+ OUI:5850E6*
+  ID_OUI_FROM_DATABASE=Best Buy Corporation
+@@ -57493,6 +58033,9 @@ OUI:589835*
+ OUI:58986F*
+  ID_OUI_FROM_DATABASE=Revolution Display
++OUI:589CFC*
++ ID_OUI_FROM_DATABASE=FreeBSD Foundation
++
+ OUI:58A2B5*
+  ID_OUI_FROM_DATABASE=LG Electronics
+@@ -57628,6 +58171,9 @@ OUI:5C22C4*
+ OUI:5C2479*
+  ID_OUI_FROM_DATABASE=Baltech AG
++OUI:5C254C*
++ ID_OUI_FROM_DATABASE=Avire Global Pte Ltd
++
+ OUI:5C260A*
+  ID_OUI_FROM_DATABASE=Dell Inc.
+@@ -57757,6 +58303,9 @@ OUI:5CBD9E*
+ OUI:5CC213*
+  ID_OUI_FROM_DATABASE=Fr. Sauter AG
++OUI:5CC5D4*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:5CC6D0*
+  ID_OUI_FROM_DATABASE=Skyworth Digital technology(shenzhen)co.ltd.
+@@ -57808,6 +58357,9 @@ OUI:5CE286*
+ OUI:5CE2F4*
+  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
++OUI:5CE7BF*
++ ID_OUI_FROM_DATABASE=New Singularity International Technical Development Co.,Ltd
++
+ OUI:5CE8EB*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+@@ -57826,6 +58378,9 @@ OUI:5CF370*
+ OUI:5CF3FC*
+  ID_OUI_FROM_DATABASE=IBM Corp
++OUI:5CF50D*
++ ID_OUI_FROM_DATABASE=Institute of microelectronic applications
++
+ OUI:5CF6DC*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
+@@ -57847,6 +58402,9 @@ OUI:5CFFFF*
+ OUI:6002B4*
+  ID_OUI_FROM_DATABASE=Wistron NeWeb Corp.
++OUI:600308*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:600347*
+  ID_OUI_FROM_DATABASE=Billion Electric Co. Ltd.
+@@ -57874,6 +58432,9 @@ OUI:601D0F*
+ OUI:601E02*
+  ID_OUI_FROM_DATABASE=EltexAlatau
++OUI:602103*
++ ID_OUI_FROM_DATABASE=STCUBE.INC
++
+ OUI:6021C0*
+  ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd.
+@@ -58117,12 +58678,18 @@ OUI:60FB42*
+ OUI:60FE1E*
+  ID_OUI_FROM_DATABASE=China Palms Telecom.Ltd
++OUI:60FE20*
++ ID_OUI_FROM_DATABASE=2 Wire
++
+ OUI:60FEC5*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:60FEF9*
+  ID_OUI_FROM_DATABASE=Thomas & Betts
++OUI:60FFDD*
++ ID_OUI_FROM_DATABASE=C.E. ELECTRONICS, INC
++
+ OUI:6400F1*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -58228,6 +58795,9 @@ OUI:645563*
+ OUI:64557F*
+  ID_OUI_FROM_DATABASE=NSFOCUS Information Technology Co., Ltd.
++OUI:6455B1*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:645601*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD
+@@ -58363,6 +58933,9 @@ OUI:64AE88*
+ OUI:64B310*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:64B370*
++ ID_OUI_FROM_DATABASE=PowerComm Solutons LLC
++
+ OUI:64B64A*
+  ID_OUI_FROM_DATABASE=ViVOtech, Inc.
+@@ -58435,12 +59008,18 @@ OUI:64E682*
+ OUI:64E84F*
+  ID_OUI_FROM_DATABASE=Serialway Communication Technology Co. Ltd
++OUI:64E892*
++ ID_OUI_FROM_DATABASE=Morio Denki Co., Ltd.
++
+ OUI:64E8E6*
+  ID_OUI_FROM_DATABASE=global moisture management system
+ OUI:64E950*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:64EB8C*
++ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
++
+ OUI:64ED57*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -58570,6 +59149,9 @@ OUI:687251*
+ OUI:68764F*
+  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++OUI:687848*
++ ID_OUI_FROM_DATABASE=Westunitis Co., Ltd.
++
+ OUI:68784C*
+  ID_OUI_FROM_DATABASE=Nortel Networks
+@@ -58594,6 +59176,9 @@ OUI:688470*
+ OUI:688540*
+  ID_OUI_FROM_DATABASE=IGI Mobile, Inc.
++OUI:68856A*
++ ID_OUI_FROM_DATABASE=OuterLink Corporation
++
+ OUI:6886A7*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -58684,6 +59269,9 @@ OUI:68CE4E*
+ OUI:68D1FD*
+  ID_OUI_FROM_DATABASE=Shenzhen Trimax Technology Co.,Ltd
++OUI:68D247*
++ ID_OUI_FROM_DATABASE=Portalis LC
++
+ OUI:68D925*
+  ID_OUI_FROM_DATABASE=ProSys Development Services
+@@ -58732,6 +59320,9 @@ OUI:68FCB3*
+ OUI:6C0460*
+  ID_OUI_FROM_DATABASE=RBH Access Technologies Inc.
++OUI:6C09D6*
++ ID_OUI_FROM_DATABASE=Digiquest Electronics LTD
++
+ OUI:6C0E0D*
+  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
+@@ -58816,12 +59407,18 @@ OUI:6C5D63*
+ OUI:6C5E7A*
+  ID_OUI_FROM_DATABASE=Ubiquitous Internet Telecom Co., Ltd
++OUI:6C5F1C*
++ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
++
+ OUI:6C6126*
+  ID_OUI_FROM_DATABASE=Rinicom Holdings
+ OUI:6C626D*
+  ID_OUI_FROM_DATABASE=Micro-Star INT'L CO., LTD
++OUI:6C641A*
++ ID_OUI_FROM_DATABASE=Penguin Computing
++
+ OUI:6C6F18*
+  ID_OUI_FROM_DATABASE=Stereotaxis, Inc.
+@@ -58864,6 +59461,9 @@ OUI:6C92BF*
+ OUI:6C98EB*
+  ID_OUI_FROM_DATABASE=Xyne GmbH
++OUI:6C9989*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:6C9AC9*
+  ID_OUI_FROM_DATABASE=Valentine Research, Inc.
+@@ -59023,6 +59623,9 @@ OUI:702559*
+ OUI:702B1D*
+  ID_OUI_FROM_DATABASE=E-Domus International Limited
++OUI:702C1F*
++ ID_OUI_FROM_DATABASE=Wisol
++
+ OUI:702F4B*
+  ID_OUI_FROM_DATABASE=PolyVision Inc.
+@@ -59071,6 +59674,9 @@ OUI:704AE4*
+ OUI:704CED*
+  ID_OUI_FROM_DATABASE=TMRG, Inc.
++OUI:704E01*
++ ID_OUI_FROM_DATABASE=KWANGWON TECH CO., LTD.
++
+ OUI:7052C5*
+  ID_OUI_FROM_DATABASE=Avaya, Inc.
+@@ -59389,9 +59995,15 @@ OUI:746630*
+ OUI:746A89*
+  ID_OUI_FROM_DATABASE=Rezolt Corporation
++OUI:746A8F*
++ ID_OUI_FROM_DATABASE=VS Vision Systems GmbH
++
+ OUI:746B82*
+  ID_OUI_FROM_DATABASE=MOVEK
++OUI:746F3D*
++ ID_OUI_FROM_DATABASE=Contec GmbH
++
+ OUI:7472F2*
+  ID_OUI_FROM_DATABASE=Chipsip Technology Co., Ltd.
+@@ -59413,6 +60025,9 @@ OUI:747E2D*
+ OUI:74867A*
+  ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++OUI:74882A*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:74888B*
+  ID_OUI_FROM_DATABASE=ADB Broadband Italia
+@@ -59422,6 +60037,9 @@ OUI:748E08*
+ OUI:748EF8*
+  ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc.
++OUI:748F1B*
++ ID_OUI_FROM_DATABASE=MasterImage 3D
++
+ OUI:749050*
+  ID_OUI_FROM_DATABASE=Renesas Electronics Corporation
+@@ -59437,6 +60055,9 @@ OUI:74943D*
+ OUI:749975*
+  ID_OUI_FROM_DATABASE=IBM Corporation
++OUI:749C52*
++ ID_OUI_FROM_DATABASE=Huizhou Desay SV Automotive Co., Ltd.
++
+ OUI:749DDC*
+  ID_OUI_FROM_DATABASE=2Wire
+@@ -59467,6 +60088,9 @@ OUI:74BE08*
+ OUI:74BFA1*
+  ID_OUI_FROM_DATABASE=HYUNTECK
++OUI:74C621*
++ ID_OUI_FROM_DATABASE=Zhejiang Hite Renewable Energy Co.,LTD
++
+ OUI:74C99A*
+  ID_OUI_FROM_DATABASE=Ericsson AB
+@@ -59605,6 +60229,9 @@ OUI:78303B*
+ OUI:7830E1*
+  ID_OUI_FROM_DATABASE=UltraClenz, LLC
++OUI:7831C1*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:78324F*
+  ID_OUI_FROM_DATABASE=Millennium Group, Inc.
+@@ -59614,6 +60241,9 @@ OUI:783CE3*
+ OUI:783D5B*
+  ID_OUI_FROM_DATABASE=TELNET Redes Inteligentes S.A.
++OUI:783E53*
++ ID_OUI_FROM_DATABASE=BSkyB Ltd
++
+ OUI:783F15*
+  ID_OUI_FROM_DATABASE=EasySYNC Ltd.
+@@ -59638,6 +60268,9 @@ OUI:78491D*
+ OUI:784B08*
+  ID_OUI_FROM_DATABASE=f.robotics acquisitions ltd
++OUI:784B87*
++ ID_OUI_FROM_DATABASE=Murata Manufacturing Co.,Ltd.
++
+ OUI:78510C*
+  ID_OUI_FROM_DATABASE=LiveU Ltd.
+@@ -59674,6 +60307,9 @@ OUI:78617C*
+ OUI:7866AE*
+  ID_OUI_FROM_DATABASE=ZTEC Instruments, Inc.
++OUI:786A89*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:786C1C*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -59737,6 +60373,9 @@ OUI:78A2A0*
+ OUI:78A3E4*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:78A504*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:78A5DD*
+  ID_OUI_FROM_DATABASE=Shenzhen Smarteye Digital Electronics Co., Ltd
+@@ -59830,6 +60469,9 @@ OUI:78D5B5*
+ OUI:78D6F0*
+  ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
++OUI:78D752*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:78D99F*
+  ID_OUI_FROM_DATABASE=NuCom HK Ltd.
+@@ -59887,6 +60529,9 @@ OUI:78FE3D*
+ OUI:78FE41*
+  ID_OUI_FROM_DATABASE=Socus networks
++OUI:78FEE2*
++ ID_OUI_FROM_DATABASE=Shanghai Diveo Technology Co., Ltd
++
+ OUI:78FF57*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -59929,6 +60574,9 @@ OUI:7C1476*
+ OUI:7C160D*
+  ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG
++OUI:7C1A03*
++ ID_OUI_FROM_DATABASE=8Locations Co., Ltd.
++
+ OUI:7C1AFC*
+  ID_OUI_FROM_DATABASE=Dalian Co-Edifice Video Technology Co., Ltd
+@@ -60058,6 +60706,9 @@ OUI:7C822D*
+ OUI:7C8306*
+  ID_OUI_FROM_DATABASE=Glen Dimplex Nordic as
++OUI:7C8D91*
++ ID_OUI_FROM_DATABASE=Shanghai Hongzhuo Information Technology co.,LTD
++
+ OUI:7C8EE4*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -60172,6 +60823,9 @@ OUI:7CDD90*
+ OUI:7CE044*
+  ID_OUI_FROM_DATABASE=NEON Inc
++OUI:7CE1FF*
++ ID_OUI_FROM_DATABASE=Computer Performance, Inc. DBA Digital Loggers, Inc.
++
+ OUI:7CE56B*
+  ID_OUI_FROM_DATABASE=ESEN Optoelectronics Technology Co.,Ltd.
+@@ -60214,6 +60868,9 @@ OUI:80000B*
+ OUI:800010*
+  ID_OUI_FROM_DATABASE=ATT BELL LABORATORIES
++OUI:80006E*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:8005DF*
+  ID_OUI_FROM_DATABASE=Montage Technology Group Limited
+@@ -60307,9 +60964,15 @@ OUI:805719*
+ OUI:8058C5*
+  ID_OUI_FROM_DATABASE=NovaTec Kommunikationstechnik GmbH
++OUI:8059FD*
++ ID_OUI_FROM_DATABASE=Noviga
++
+ OUI:806007*
+  ID_OUI_FROM_DATABASE=RIM
++OUI:80618F*
++ ID_OUI_FROM_DATABASE=Shenzhen sangfei consumer communications co.,ltd
++
+ OUI:806459*
+  ID_OUI_FROM_DATABASE=Nimbus Inc.
+@@ -60448,6 +61111,9 @@ OUI:80D733*
+ OUI:80DB31*
+  ID_OUI_FROM_DATABASE=Power Quotient International Co., Ltd.
++OUI:80EA96*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:80EE73*
+  ID_OUI_FROM_DATABASE=Shuttle Inc.
+@@ -60481,6 +61147,9 @@ OUI:840F45*
+ OUI:841715*
+  ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd.
++OUI:841766*
++ ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd
++
+ OUI:841888*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -60502,9 +61171,15 @@ OUI:84248D*
+ OUI:84253F*
+  ID_OUI_FROM_DATABASE=Silex Technology, Inc
++OUI:8425A4*
++ ID_OUI_FROM_DATABASE=Tariox Limited
++
+ OUI:8425DB*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:842615*
++ ID_OUI_FROM_DATABASE=ADB Broadband Italia
++
+ OUI:84262B*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent
+@@ -60586,6 +61261,9 @@ OUI:846AED*
+ OUI:846EB1*
+  ID_OUI_FROM_DATABASE=Park Assist LLC
++OUI:847207*
++ ID_OUI_FROM_DATABASE=I&C Technology
++
+ OUI:84742A*
+  ID_OUI_FROM_DATABASE=zte corporation
+@@ -60610,12 +61288,18 @@ OUI:848336*
+ OUI:848371*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:848433*
++ ID_OUI_FROM_DATABASE=Paradox Engineering SA
++
+ OUI:848506*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:848D84*
+  ID_OUI_FROM_DATABASE=Rajant Corporation
++OUI:848E0C*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:848E96*
+  ID_OUI_FROM_DATABASE=Embertec Pty Ltd
+@@ -60838,6 +61522,9 @@ OUI:888717*
+ OUI:8887DD*
+  ID_OUI_FROM_DATABASE=DarbeeVision Inc.
++OUI:888914*
++ ID_OUI_FROM_DATABASE=All Components Incorporated
++
+ OUI:888964*
+  ID_OUI_FROM_DATABASE=GSI Electronics Inc.
+@@ -60853,6 +61540,9 @@ OUI:889166*
+ OUI:8891DD*
+  ID_OUI_FROM_DATABASE=Racktivity
++OUI:889471*
++ ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc.
++
+ OUI:8894F9*
+  ID_OUI_FROM_DATABASE=Gemicom Technology, Inc.
+@@ -60883,6 +61573,9 @@ OUI:88A3CC*
+ OUI:88A5BD*
+  ID_OUI_FROM_DATABASE=QPCOM INC.
++OUI:88A73C*
++ ID_OUI_FROM_DATABASE=Ragentek Technology Group
++
+ OUI:88ACC1*
+  ID_OUI_FROM_DATABASE=Generiton Co., Ltd.
+@@ -60916,6 +61609,9 @@ OUI:88CB87*
+ OUI:88D7BC*
+  ID_OUI_FROM_DATABASE=DEP Company
++OUI:88D962*
++ ID_OUI_FROM_DATABASE=Canopus Systems US LLC
++
+ OUI:88DC96*
+  ID_OUI_FROM_DATABASE=SENAO Networks, Inc.
+@@ -60928,12 +61624,18 @@ OUI:88E0A0*
+ OUI:88E0F3*
+  ID_OUI_FROM_DATABASE=Juniper Networks
++OUI:88E3AB*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:88E712*
+  ID_OUI_FROM_DATABASE=Whirlpool Corporation
+ OUI:88E7A6*
+  ID_OUI_FROM_DATABASE=iKnowledge Integration Corp.
++OUI:88E8F8*
++ ID_OUI_FROM_DATABASE=YONG TAI ELECTRONIC (DONGGUAN) LTD.
++
+ OUI:88E917*
+  ID_OUI_FROM_DATABASE=Tamaggo
+@@ -60949,6 +61651,9 @@ OUI:88F488*
+ OUI:88F490*
+  ID_OUI_FROM_DATABASE=Jetmobile Pte Ltd
++OUI:88F7C7*
++ ID_OUI_FROM_DATABASE=Technicolor USA Inc.
++
+ OUI:88FD15*
+  ID_OUI_FROM_DATABASE=LINEEYE CO., LTD
+@@ -60994,6 +61699,9 @@ OUI:8C271D*
+ OUI:8C278A*
+  ID_OUI_FROM_DATABASE=Vocollect Inc
++OUI:8C2937*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:8C2DAA*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -61012,6 +61720,9 @@ OUI:8C3C07*
+ OUI:8C3C4A*
+  ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC.
++OUI:8C41F2*
++ ID_OUI_FROM_DATABASE=RDA Technologies Ltd.
++
+ OUI:8C4435*
+  ID_OUI_FROM_DATABASE=Shanghai BroadMobi Communication Technology Co., Ltd.
+@@ -61099,6 +61810,9 @@ OUI:8C7716*
+ OUI:8C7B9D*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:8C7C92*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:8C7CB5*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -61153,6 +61867,9 @@ OUI:8CB82C*
+ OUI:8CB864*
+  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
++OUI:8CBEBE*
++ ID_OUI_FROM_DATABASE=Xiaomi Technology Co.,Ltd
++
+ OUI:8CC121*
+  ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company
+@@ -61285,6 +62002,9 @@ OUI:902B34*
+ OUI:902E87*
+  ID_OUI_FROM_DATABASE=LabJack
++OUI:9031CD*
++ ID_OUI_FROM_DATABASE=Onyx Healthcare Inc.
++
+ OUI:90342B*
+  ID_OUI_FROM_DATABASE=Gatekeeper Systems, Inc.
+@@ -61324,6 +62044,9 @@ OUI:9049FA*
+ OUI:904CE5*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++OUI:904E2B*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:90507B*
+  ID_OUI_FROM_DATABASE=Advanced PANMOBIL Systems GmbH & Co. KG
+@@ -61426,6 +62149,9 @@ OUI:9092B4*
+ OUI:9094E4*
+  ID_OUI_FROM_DATABASE=D-Link International
++OUI:909864*
++ ID_OUI_FROM_DATABASE=Impex-Sat GmbH&amp;Co KG
++
+ OUI:909916*
+  ID_OUI_FROM_DATABASE=ELVEES NeoTek OJSC
+@@ -61501,6 +62227,12 @@ OUI:90D92C*
+ OUI:90DA4E*
+  ID_OUI_FROM_DATABASE=AVANU
++OUI:90DB46*
++ ID_OUI_FROM_DATABASE=E-LEAD ELECTRONIC CO., LTD
++
++OUI:90DFB7*
++ ID_OUI_FROM_DATABASE=s.m.s smart microwave sensors GmbH
++
+ OUI:90E0F0*
+  ID_OUI_FROM_DATABASE=Harman International
+@@ -61513,6 +62245,12 @@ OUI:90E6BA*
+ OUI:90EA60*
+  ID_OUI_FROM_DATABASE=SPI Lasers Ltd
++OUI:90F1AA*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
++
++OUI:90F1B0*
++ ID_OUI_FROM_DATABASE=Hangzhou Anheng Info&Tech CO.,LTD
++
+ OUI:90F278*
+  ID_OUI_FROM_DATABASE=Radius Gateway
+@@ -61624,6 +62362,9 @@ OUI:945047*
+ OUI:945103*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:9451BF*
++ ID_OUI_FROM_DATABASE=Hyundai ESG
++
+ OUI:94592D*
+  ID_OUI_FROM_DATABASE=EKE Building Technology Systems Ltd
+@@ -61681,6 +62422,9 @@ OUI:949BFD*
+ OUI:949C55*
+  ID_OUI_FROM_DATABASE=Alta Data Technologies
++OUI:949F3F*
++ ID_OUI_FROM_DATABASE=Optek Digital Technology company limited
++
+ OUI:949FB4*
+  ID_OUI_FROM_DATABASE=ChengDu JiaFaAnTai Technology Co.,Ltd
+@@ -61711,6 +62455,9 @@ OUI:94BA56*
+ OUI:94BF1E*
+  ID_OUI_FROM_DATABASE=eflow Inc. / Smart Device Planning and Development Division
++OUI:94C014*
++ ID_OUI_FROM_DATABASE=Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek
++
+ OUI:94C150*
+  ID_OUI_FROM_DATABASE=2Wire Inc
+@@ -61939,6 +62686,9 @@ OUI:9873C4*
+ OUI:9876B6*
+  ID_OUI_FROM_DATABASE=Adafruit
++OUI:987770*
++ ID_OUI_FROM_DATABASE=Pep Digital Technology (Guangzhou) Co., Ltd
++
+ OUI:988217*
+  ID_OUI_FROM_DATABASE=Disruptive Ltd
+@@ -61990,6 +62740,9 @@ OUI:98BC57*
+ OUI:98BC99*
+  ID_OUI_FROM_DATABASE=Edeltech Co.,Ltd.
++OUI:98C0EB*
++ ID_OUI_FROM_DATABASE=Global Regency Ltd
++
+ OUI:98C845*
+  ID_OUI_FROM_DATABASE=PacketAccess
+@@ -62026,6 +62779,9 @@ OUI:98E79A*
+ OUI:98EC65*
+  ID_OUI_FROM_DATABASE=Cosesy ApS
++OUI:98F0AB*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:98F537*
+  ID_OUI_FROM_DATABASE=zte corporation
+@@ -62113,6 +62869,9 @@ OUI:9C31B6*
+ OUI:9C3AAF*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:9C3EAA*
++ ID_OUI_FROM_DATABASE=EnvyLogic Co.,Ltd.
++
+ OUI:9C417C*
+  ID_OUI_FROM_DATABASE=Hame  Technology Co.,  Limited
+@@ -62179,6 +62938,12 @@ OUI:9C611D*
+ OUI:9C645E*
+  ID_OUI_FROM_DATABASE=Harman Consumer Group
++OUI:9C65B0*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
++OUI:9C65F9*
++ ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
++
+ OUI:9C6650*
+  ID_OUI_FROM_DATABASE=Glodio Technolies Co.,Ltd Tianjin Branch
+@@ -62203,6 +62968,9 @@ OUI:9C807D*
+ OUI:9C80DF*
+  ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
++OUI:9C86DA*
++ ID_OUI_FROM_DATABASE=Phoenix Geophysics Ltd.
++
+ OUI:9C8888*
+  ID_OUI_FROM_DATABASE=Simac Techniek NV
+@@ -62272,6 +63040,9 @@ OUI:9CB793*
+ OUI:9CBB98*
+  ID_OUI_FROM_DATABASE=Shen Zhen RND Electronic Co.,LTD
++OUI:9CBD9D*
++ ID_OUI_FROM_DATABASE=SkyDisk, Inc.
++
+ OUI:9CC077*
+  ID_OUI_FROM_DATABASE=PrintCounts, LLC
+@@ -62332,6 +63103,9 @@ OUI:9CF8DB*
+ OUI:9CF938*
+  ID_OUI_FROM_DATABASE=AREVA NP GmbH
++OUI:9CFBF1*
++ ID_OUI_FROM_DATABASE=MESOMATIC GmbH & Co.KG
++
+ OUI:9CFFBE*
+  ID_OUI_FROM_DATABASE=OTSL Inc.
+@@ -62449,6 +63223,9 @@ OUI:A05DE7*
+ OUI:A05E6B*
+  ID_OUI_FROM_DATABASE=MELPER Co., Ltd.
++OUI:A06518*
++ ID_OUI_FROM_DATABASE=VNPT TECHNOLOGY
++
+ OUI:A067BE*
+  ID_OUI_FROM_DATABASE=Sicon s.r.l.
+@@ -62479,6 +63256,9 @@ OUI:A073FC*
+ OUI:A07591*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:A07771*
++ ID_OUI_FROM_DATABASE=Vialis BV
++
+ OUI:A078BA*
+  ID_OUI_FROM_DATABASE=Pantech Co., Ltd.
+@@ -62500,6 +63280,9 @@ OUI:A08869*
+ OUI:A088B4*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:A089E4*
++ ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
++
+ OUI:A08A87*
+  ID_OUI_FROM_DATABASE=HuiZhou KaiYue Electronic Co.,Ltd
+@@ -62599,6 +63382,9 @@ OUI:A0E25A*
+ OUI:A0E295*
+  ID_OUI_FROM_DATABASE=DAT System Co.,Ltd
++OUI:A0E453*
++ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++
+ OUI:A0E534*
+  ID_OUI_FROM_DATABASE=Stratec Biomedical AG
+@@ -62635,6 +63421,9 @@ OUI:A0F419*
+ OUI:A0F450*
+  ID_OUI_FROM_DATABASE=HTC Corporation
++OUI:A0F459*
++ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
++
+ OUI:A0FE91*
+  ID_OUI_FROM_DATABASE=AVAT Automation GmbH
+@@ -62740,6 +63529,9 @@ OUI:A45D36*
+ OUI:A46706*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:A46CC1*
++ ID_OUI_FROM_DATABASE=LTi REEnergy GmbH
++
+ OUI:A46E79*
+  ID_OUI_FROM_DATABASE=DFT System Co.Ltd
+@@ -62785,6 +63577,9 @@ OUI:A49947*
+ OUI:A49981*
+  ID_OUI_FROM_DATABASE=FuJian Elite Power Tech CO.,LTD.
++OUI:A49A58*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:A49B13*
+  ID_OUI_FROM_DATABASE=Burroughs Payment Systems, Inc.
+@@ -62836,6 +63631,9 @@ OUI:A4B980*
+ OUI:A4BADB*
+  ID_OUI_FROM_DATABASE=Dell Inc.
++OUI:A4BBAF*
++ ID_OUI_FROM_DATABASE=Lime Instruments
++
+ OUI:A4BE61*
+  ID_OUI_FROM_DATABASE=EutroVision System, Inc.
+@@ -62941,6 +63739,9 @@ OUI:A80180*
+ OUI:A80600*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:A80C0D*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:A8154D*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+@@ -62959,6 +63760,9 @@ OUI:A81FAF*
+ OUI:A82066*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:A824EB*
++ ID_OUI_FROM_DATABASE=ZAO NPO Introtest
++
+ OUI:A826D9*
+  ID_OUI_FROM_DATABASE=HTC Corporation
+@@ -62992,6 +63796,9 @@ OUI:A854B2*
+ OUI:A8556A*
+  ID_OUI_FROM_DATABASE=Pocketnet Technology Inc.
++OUI:A8574E*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:A85BB0*
+  ID_OUI_FROM_DATABASE=Shenzhen Dehoo Technology Co.,Ltd
+@@ -63034,6 +63841,9 @@ OUI:A87B39*
+ OUI:A87E33*
+  ID_OUI_FROM_DATABASE=Nokia Danmark A/S
++OUI:A881F1*
++ ID_OUI_FROM_DATABASE=BMEYE B.V.
++
+ OUI:A886DD*
+  ID_OUI_FROM_DATABASE=Apple, Inc.
+@@ -63085,12 +63895,18 @@ OUI:A8B0AE*
+ OUI:A8B1D4*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:A8B9B3*
++ ID_OUI_FROM_DATABASE=ESSYS
++
+ OUI:A8BBCF*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:A8BD1A*
+  ID_OUI_FROM_DATABASE=Honey Bee (Hong Kong) Limited
++OUI:A8BD3A*
++ ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD
++
+ OUI:A8C222*
+  ID_OUI_FROM_DATABASE=TM-Research Inc.
+@@ -63157,6 +63973,9 @@ OUI:AA0004*
+ OUI:AC0142*
+  ID_OUI_FROM_DATABASE=Uriel Technologies SIA
++OUI:AC02CA*
++ ID_OUI_FROM_DATABASE=HI Solutions, Inc.
++
+ OUI:AC02CF*
+  ID_OUI_FROM_DATABASE=RW Tecnologia Industria e Comercio Ltda
+@@ -63208,6 +64027,9 @@ OUI:AC319D*
+ OUI:AC34CB*
+  ID_OUI_FROM_DATABASE=Shanhai GBCOM Communication Technology Co. Ltd
++OUI:AC3613*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:AC3C0B*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -63406,6 +64228,9 @@ OUI:ACCE8F*
+ OUI:ACCF23*
+  ID_OUI_FROM_DATABASE=Hi-flying electronics technology Co.,Ltd
++OUI:ACCF5C*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:ACD180*
+  ID_OUI_FROM_DATABASE=Crexendo Business Solutions, Inc.
+@@ -63421,6 +64246,9 @@ OUI:ACD9D6*
+ OUI:ACDBDA*
+  ID_OUI_FROM_DATABASE=Shenzhen Geniatech Inc, Ltd
++OUI:ACE069*
++ ID_OUI_FROM_DATABASE=ISAAC Instruments
++
+ OUI:ACE215*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+@@ -63493,6 +64321,9 @@ OUI:B01C91*
+ OUI:B024F3*
+  ID_OUI_FROM_DATABASE=Progeny Systems
++OUI:B03495*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:B0358D*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -63523,6 +64354,9 @@ OUI:B050BC*
+ OUI:B0518E*
+  ID_OUI_FROM_DATABASE=Holl technology CO.Ltd.
++OUI:B05706*
++ ID_OUI_FROM_DATABASE=Vallox Oy
++
+ OUI:B058C4*
+  ID_OUI_FROM_DATABASE=Broadcast Microwave Services, Inc
+@@ -63538,6 +64372,12 @@ OUI:B06563*
+ OUI:B065BD*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:B068B6*
++ ID_OUI_FROM_DATABASE=Hangzhou OYE Technology Co. Ltd
++
++OUI:B06971*
++ ID_OUI_FROM_DATABASE=DEI Sales, Inc.
++
+ OUI:B06CBF*
+  ID_OUI_FROM_DATABASE=3ality Digital Systems GmbH
+@@ -63568,6 +64408,9 @@ OUI:B0808C*
+ OUI:B081D8*
+  ID_OUI_FROM_DATABASE=I-sys Corp
++OUI:B0869E*
++ ID_OUI_FROM_DATABASE=Chloride S.r.L
++
+ OUI:B08807*
+  ID_OUI_FROM_DATABASE=Strata Worldwide
+@@ -63643,6 +64486,9 @@ OUI:B0BF99*
+ OUI:B0C4E7*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:B0C554*
++ ID_OUI_FROM_DATABASE=D-Link International
++
+ OUI:B0C69A*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -63673,6 +64519,9 @@ OUI:B0D2F5*
+ OUI:B0D7C5*
+  ID_OUI_FROM_DATABASE=STP KFT
++OUI:B0DA00*
++ ID_OUI_FROM_DATABASE=CERA ELECTRONIQUE
++
+ OUI:B0DF3A*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -63694,6 +64543,9 @@ OUI:B0E97E*
+ OUI:B0EC71*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:B0EC8F*
++ ID_OUI_FROM_DATABASE=GMX SAS
++
+ OUI:B0EE45*
+  ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc.
+@@ -63736,6 +64588,9 @@ OUI:B41489*
+ OUI:B41513*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:B418D1*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:B41DEF*
+  ID_OUI_FROM_DATABASE=Internet Laboratories, Inc.
+@@ -63754,6 +64609,9 @@ OUI:B428F1*
+ OUI:B42A39*
+  ID_OUI_FROM_DATABASE=ORBIT MERRET, spol. s r. o.
++OUI:B42C92*
++ ID_OUI_FROM_DATABASE=Zhejiang Weirong Electronic Co., Ltd
++
+ OUI:B42CBE*
+  ID_OUI_FROM_DATABASE=Direct Payment Solutions Limited
+@@ -63787,6 +64645,9 @@ OUI:B43E3B*
+ OUI:B4417A*
+  ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd
++OUI:B4430D*
++ ID_OUI_FROM_DATABASE=Broadlink Pty Ltd
++
+ OUI:B44CC2*
+  ID_OUI_FROM_DATABASE=NR ELECTRIC CO., LTD
+@@ -63847,6 +64708,9 @@ OUI:B482C5*
+ OUI:B482FE*
+  ID_OUI_FROM_DATABASE=Askey Computer Corp
++OUI:B48547*
++ ID_OUI_FROM_DATABASE=Amptown System Company GmbH
++
+ OUI:B48910*
+  ID_OUI_FROM_DATABASE=Coster T.E. S.P.A.
+@@ -63856,6 +64720,9 @@ OUI:B4944E*
+ OUI:B49842*
+  ID_OUI_FROM_DATABASE=zte corporation
++OUI:B4994C*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:B499BA*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
+@@ -63875,7 +64742,7 @@ OUI:B4A5A9*
+  ID_OUI_FROM_DATABASE=MODI GmbH
+ OUI:B4A82B*
+- ID_OUI_FROM_DATABASE=Histar
++ ID_OUI_FROM_DATABASE=Histar Digital Electronics Co., Ltd.
+ OUI:B4A95A*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
+@@ -63895,6 +64762,9 @@ OUI:B4B362*
+ OUI:B4B52F*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:B4B542*
++ ID_OUI_FROM_DATABASE=Hubbell Power Systems, Inc.
++
+ OUI:B4B5AF*
+  ID_OUI_FROM_DATABASE=Minsung Electronics
+@@ -64021,6 +64891,9 @@ OUI:B830A8*
+ OUI:B836D8*
+  ID_OUI_FROM_DATABASE=Videoswitch
++OUI:B83861*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:B838CA*
+  ID_OUI_FROM_DATABASE=Kyokko Tsushin System CO.,LTD
+@@ -64036,6 +64909,9 @@ OUI:B83E59*
+ OUI:B8415F*
+  ID_OUI_FROM_DATABASE=ASP AG
++OUI:B843E4*
++ ID_OUI_FROM_DATABASE=Vlatacom
++
+ OUI:B847C6*
+  ID_OUI_FROM_DATABASE=SanJet Technology Corp.
+@@ -64075,6 +64951,9 @@ OUI:B8653B*
+ OUI:B86B23*
+  ID_OUI_FROM_DATABASE=Toshiba
++OUI:B86CE8*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:B870F4*
+  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
+@@ -64543,6 +65422,9 @@ OUI:BCF2AF*
+ OUI:BCF5AC*
+  ID_OUI_FROM_DATABASE=LG Electronics
++OUI:BCF61C*
++ ID_OUI_FROM_DATABASE=Geomodeling Wuxi Technology Co. Ltd.
++
+ OUI:BCF685*
+  ID_OUI_FROM_DATABASE=D-Link International
+@@ -64762,6 +65644,9 @@ OUI:C0C3B6*
+ OUI:C0C520*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
++OUI:C0C569*
++ ID_OUI_FROM_DATABASE=SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD
++
+ OUI:C0C687*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
+@@ -64798,6 +65683,9 @@ OUI:C0EAE4*
+ OUI:C0F1C4*
+  ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd.
++OUI:C0F79D*
++ ID_OUI_FROM_DATABASE=Powercode
++
+ OUI:C0F8DA*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -64816,18 +65704,27 @@ OUI:C401B1*
+ OUI:C40415*
+  ID_OUI_FROM_DATABASE=NETGEAR INC.,
++OUI:C40528*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:C40938*
+  ID_OUI_FROM_DATABASE=Fujian Star-net Communication Co., Ltd
+ OUI:C40ACB*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:C40E45*
++ ID_OUI_FROM_DATABASE=ACK Networks,Inc.
++
+ OUI:C40F09*
+  ID_OUI_FROM_DATABASE=Hermes electronic GmbH
+ OUI:C4108A*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
++OUI:C4143C*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:C416FA*
+  ID_OUI_FROM_DATABASE=Prysm Inc
+@@ -64858,6 +65755,9 @@ OUI:C42628*
+ OUI:C42795*
+  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
++OUI:C4291D*
++ ID_OUI_FROM_DATABASE=KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.
++
+ OUI:C42C03*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -64900,9 +65800,15 @@ OUI:C44AD0*
+ OUI:C44B44*
+  ID_OUI_FROM_DATABASE=Omniprint Inc.
++OUI:C44E1F*
++ ID_OUI_FROM_DATABASE=BlueN
++
+ OUI:C44EAC*
+  ID_OUI_FROM_DATABASE=Shenzhen Shiningworth Technology Co., Ltd.
++OUI:C45006*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:C45444*
+  ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
+@@ -65002,6 +65908,9 @@ OUI:C495A2*
+ OUI:C49805*
+  ID_OUI_FROM_DATABASE=Minieum Networks, Inc
++OUI:C4A81D*
++ ID_OUI_FROM_DATABASE=D-Link International
++
+ OUI:C4AAA1*
+  ID_OUI_FROM_DATABASE=SUMMIT DEVELOPMENT, spol.s r.o.
+@@ -65014,12 +65923,18 @@ OUI:C4B512*
+ OUI:C4BA99*
+  ID_OUI_FROM_DATABASE=I+ME Actia Informatik und Mikro-Elektronik GmbH
++OUI:C4C0AE*
++ ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD.
++
+ OUI:C4C19F*
+  ID_OUI_FROM_DATABASE=National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO)
+ OUI:C4C755*
+  ID_OUI_FROM_DATABASE=Beijing HuaqinWorld Technology Co.,Ltd
++OUI:C4C919*
++ ID_OUI_FROM_DATABASE=Energy Imports Ltd
++
+ OUI:C4CAD9*
+  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+@@ -65050,6 +65965,9 @@ OUI:C4E7BE*
+ OUI:C4E92F*
+  ID_OUI_FROM_DATABASE=AB Sciex
++OUI:C4E984*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:C4EBE3*
+  ID_OUI_FROM_DATABASE=RRCN SAS
+@@ -65092,6 +66010,9 @@ OUI:C80E95*
+ OUI:C81479*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:C816BD*
++ ID_OUI_FROM_DATABASE=HISENSE ELECTRIC CO.,LTD.
++
+ OUI:C819F7*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -65302,6 +66223,9 @@ OUI:C8D2C1*
+ OUI:C8D3A3*
+  ID_OUI_FROM_DATABASE=D-Link International
++OUI:C8D429*
++ ID_OUI_FROM_DATABASE=Muehlbauer AG
++
+ OUI:C8D5FE*
+  ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd
+@@ -65428,6 +66352,9 @@ OUI:CC34D7*
+ OUI:CC3540*
+  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
++OUI:CC398C*
++ ID_OUI_FROM_DATABASE=Shiningtek
++
+ OUI:CC3A61*
+  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
+@@ -65527,6 +66454,12 @@ OUI:CC7D37*
+ OUI:CC7EE7*
+  ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company
++OUI:CC856C*
++ ID_OUI_FROM_DATABASE=SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD
++
++OUI:CC89FD*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:CC8CE3*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -65539,18 +66472,27 @@ OUI:CC912B*
+ OUI:CC944A*
+  ID_OUI_FROM_DATABASE=Pfeiffer Vacuum GmbH
++OUI:CC95D7*
++ ID_OUI_FROM_DATABASE=VIZIO, Inc
++
+ OUI:CC96A0*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
+ OUI:CC9E00*
+  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
++OUI:CC9F35*
++ ID_OUI_FROM_DATABASE=Transbit Sp. z o.o.
++
+ OUI:CCA374*
+  ID_OUI_FROM_DATABASE=Guangdong Guanglian Electronic Technology Co.Ltd
+ OUI:CCA462*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:CCA614*
++ ID_OUI_FROM_DATABASE=AIFA TECHNOLOGY CORP.
++
+ OUI:CCAF78*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -65650,6 +66592,9 @@ OUI:CCF954*
+ OUI:CCF9E8*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:CCFA00*
++ ID_OUI_FROM_DATABASE=LG Electronics
++
+ OUI:CCFB65*
+  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+@@ -65731,6 +66676,9 @@ OUI:D0574C*
+ OUI:D05785*
+  ID_OUI_FROM_DATABASE=Pantech Co., Ltd.
++OUI:D057A1*
++ ID_OUI_FROM_DATABASE=Werma Signaltechnik GmbH & Co. KG
++
+ OUI:D05875*
+  ID_OUI_FROM_DATABASE=Active Control Technology Inc.
+@@ -65743,6 +66691,9 @@ OUI:D05A0F*
+ OUI:D05FCE*
+  ID_OUI_FROM_DATABASE=Hitachi Data Systems
++OUI:D0634D*
++ ID_OUI_FROM_DATABASE=Meiko Maschinenbau GmbH &amp; Co. KG
++
+ OUI:D063B4*
+  ID_OUI_FROM_DATABASE=SolidRun Ltd.
+@@ -65755,6 +66706,9 @@ OUI:D067E5*
+ OUI:D0699E*
+  ID_OUI_FROM_DATABASE=LUMINEX Lighting Control Equipment
++OUI:D069D0*
++ ID_OUI_FROM_DATABASE=Verto Medical Solutions, LLC
++
+ OUI:D0737F*
+  ID_OUI_FROM_DATABASE=Mini-Circuits
+@@ -65767,12 +66721,18 @@ OUI:D073D5*
+ OUI:D075BE*
+  ID_OUI_FROM_DATABASE=Reno A&E
++OUI:D07AB5*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:D07DE5*
+  ID_OUI_FROM_DATABASE=Forward Pay Systems, Inc.
+ OUI:D07E28*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:D07E35*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:D08999*
+  ID_OUI_FROM_DATABASE=APCON, Inc.
+@@ -65797,6 +66757,9 @@ OUI:D095C7*
+ OUI:D09B05*
+  ID_OUI_FROM_DATABASE=Emtronix
++OUI:D09C30*
++ ID_OUI_FROM_DATABASE=Foster Electric Company, Limited
++
+ OUI:D09D0A*
+  ID_OUI_FROM_DATABASE=LINKCOM
+@@ -65824,6 +66787,9 @@ OUI:D0B53D*
+ OUI:D0BB80*
+  ID_OUI_FROM_DATABASE=SHL Telemedicine International Ltd.
++OUI:D0BD01*
++ ID_OUI_FROM_DATABASE=DS International
++
+ OUI:D0BE2C*
+  ID_OUI_FROM_DATABASE=CNSLink Co., Ltd.
+@@ -65965,6 +66931,9 @@ OUI:D4206D*
+ OUI:D4223F*
+  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
++OUI:D4224E*
++ ID_OUI_FROM_DATABASE=Alcatel Lucent
++
+ OUI:D42751*
+  ID_OUI_FROM_DATABASE=Infopia Co., Ltd
+@@ -65977,6 +66946,12 @@ OUI:D429EA*
+ OUI:D42C3D*
+  ID_OUI_FROM_DATABASE=Sky Light Digital Limited
++OUI:D42F23*
++ ID_OUI_FROM_DATABASE=Akenori PTE Ltd
++
++OUI:D4319D*
++ ID_OUI_FROM_DATABASE=Sinwatec
++
+ OUI:D43A65*
+  ID_OUI_FROM_DATABASE=IGRS Engineering Lab Ltd.
+@@ -66241,6 +67216,9 @@ OUI:D809C3*
+ OUI:D80DE3*
+  ID_OUI_FROM_DATABASE=FXI TECHNOLOGIES AS
++OUI:D8150D*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:D8160A*
+  ID_OUI_FROM_DATABASE=Nippon Electro-Sensory Devices
+@@ -66277,6 +67255,9 @@ OUI:D82916*
+ OUI:D82986*
+  ID_OUI_FROM_DATABASE=Best Wish Technology LTD
++OUI:D82A15*
++ ID_OUI_FROM_DATABASE=Leitner SpA
++
+ OUI:D82A7E*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -66325,9 +67306,15 @@ OUI:D85D4C*
+ OUI:D85D84*
+  ID_OUI_FROM_DATABASE=CAx soft GmbH
++OUI:D86194*
++ ID_OUI_FROM_DATABASE=Objetivos y Sevicios de Valor Añadido
++
+ OUI:D862DB*
+  ID_OUI_FROM_DATABASE=Eno Inc.
++OUI:D86595*
++ ID_OUI_FROM_DATABASE=Toy's Myth Inc.
++
+ OUI:D866C6*
+  ID_OUI_FROM_DATABASE=Shenzhen Daystar Technology Co.,ltd
+@@ -66361,6 +67348,9 @@ OUI:D87988*
+ OUI:D87CDD*
+  ID_OUI_FROM_DATABASE=SANIX INCORPORATED
++OUI:D881CE*
++ ID_OUI_FROM_DATABASE=AHN INC.
++
+ OUI:D88A3B*
+  ID_OUI_FROM_DATABASE=UNIT-EM
+@@ -66418,6 +67408,9 @@ OUI:D8B377*
+ OUI:D8B6C1*
+  ID_OUI_FROM_DATABASE=NetworkAccountant, Inc.
++OUI:D8B6D6*
++ ID_OUI_FROM_DATABASE=Blu Tether Limited
++
+ OUI:D8B8F6*
+  ID_OUI_FROM_DATABASE=Nantworks
+@@ -66466,6 +67459,12 @@ OUI:D8DA52*
+ OUI:D8DCE9*
+  ID_OUI_FROM_DATABASE=Kunshan Erlab ductless filtration system Co.,Ltd
++OUI:D8DD5F*
++ ID_OUI_FROM_DATABASE=BALMUDA Inc.
++
++OUI:D8DDFD*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:D8DF0D*
+  ID_OUI_FROM_DATABASE=beroNet GmbH
+@@ -66484,9 +67483,15 @@ OUI:D8E952*
+ OUI:D8EB97*
+  ID_OUI_FROM_DATABASE=TRENDnet, Inc.
++OUI:D8EE78*
++ ID_OUI_FROM_DATABASE=Moog Protokraft
++
+ OUI:D8F0F2*
+  ID_OUI_FROM_DATABASE=Zeebo Inc
++OUI:D8FC93*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:D8FE8F*
+  ID_OUI_FROM_DATABASE=IDFone Co., Ltd.
+@@ -66499,6 +67504,9 @@ OUI:DC0265*
+ OUI:DC028E*
+  ID_OUI_FROM_DATABASE=zte corporation
++OUI:DC052F*
++ ID_OUI_FROM_DATABASE=National Products Inc.
++
+ OUI:DC0575*
+  ID_OUI_FROM_DATABASE=SIEMENS ENERGY AUTOMATION
+@@ -66619,6 +67627,9 @@ OUI:DC86D8*
+ OUI:DC9B1E*
+  ID_OUI_FROM_DATABASE=Intercom, Inc.
++OUI:DC9B9C*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:DC9C52*
+  ID_OUI_FROM_DATABASE=Sapphire Technology Limited.
+@@ -66670,6 +67681,9 @@ OUI:DCC101*
+ OUI:DCC422*
+  ID_OUI_FROM_DATABASE=Systembase Limited
++OUI:DCC793*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:DCCBA8*
+  ID_OUI_FROM_DATABASE=Explora Technologies Inc
+@@ -66703,6 +67717,9 @@ OUI:DCDECA*
+ OUI:DCE2AC*
+  ID_OUI_FROM_DATABASE=Lumens Digital Optics Inc.
++OUI:DCE578*
++ ID_OUI_FROM_DATABASE=Experimental Factory of Scientific Engineering and Special Design Department
++
+ OUI:DCE71C*
+  ID_OUI_FROM_DATABASE=AUG Elektronik GmbH
+@@ -66781,6 +67798,9 @@ OUI:E03005*
+ OUI:E031D0*
+  ID_OUI_FROM_DATABASE=SZ Telstar CO., LTD
++OUI:E036E3*
++ ID_OUI_FROM_DATABASE=Stage One International Co., Ltd.
++
+ OUI:E039D7*
+  ID_OUI_FROM_DATABASE=Plexxi, Inc.
+@@ -66793,6 +67813,9 @@ OUI:E03E4A*
+ OUI:E03E7D*
+  ID_OUI_FROM_DATABASE=data-complex GmbH
++OUI:E03F49*
++ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++
+ OUI:E0469A*
+  ID_OUI_FROM_DATABASE=NETGEAR
+@@ -66841,6 +67864,9 @@ OUI:E0757D*
+ OUI:E07C62*
+  ID_OUI_FROM_DATABASE=Whistle Labs, Inc.
++OUI:E07F53*
++ ID_OUI_FROM_DATABASE=TECHBOARD SRL
++
+ OUI:E07F88*
+  ID_OUI_FROM_DATABASE=EVIDENCE Network SIA
+@@ -66967,6 +67993,9 @@ OUI:E0D10A*
+ OUI:E0D1E6*
+  ID_OUI_FROM_DATABASE=Aliph dba Jawbone
++OUI:E0D31A*
++ ID_OUI_FROM_DATABASE=EQUES Technology Co., Limited
++
+ OUI:E0D7BA*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -66979,6 +68008,9 @@ OUI:E0DADC*
+ OUI:E0DB55*
+  ID_OUI_FROM_DATABASE=Dell Inc
++OUI:E0DB88*
++ ID_OUI_FROM_DATABASE=Open Standard Digital-IF Interface for SATCOM Systems
++
+ OUI:E0DCA0*
+  ID_OUI_FROM_DATABASE=Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch
+@@ -67030,6 +68062,9 @@ OUI:E40439*
+ OUI:E4115B*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:E4121D*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:E41289*
+  ID_OUI_FROM_DATABASE=topsystem Systemhaus GmbH
+@@ -67093,6 +68128,9 @@ OUI:E446BD*
+ OUI:E448C7*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
++OUI:E44C6C*
++ ID_OUI_FROM_DATABASE=Shenzhen Guo Wei Electronic Co,. Ltd.
++
+ OUI:E44E18*
+  ID_OUI_FROM_DATABASE=Gardasoft VisionLimited
+@@ -67144,6 +68182,9 @@ OUI:E47CF9*
+ OUI:E47D5A*
+  ID_OUI_FROM_DATABASE=Beijing Hanbang Technology Corp.
++OUI:E48184*
++ ID_OUI_FROM_DATABASE=Alcatel-Lucent
++
+ OUI:E481B3*
+  ID_OUI_FROM_DATABASE=Shenzhen ACT Industrial Co.,Ltd.
+@@ -67267,6 +68308,9 @@ OUI:E8056D*
+ OUI:E80688*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:E8088B*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:E80B13*
+  ID_OUI_FROM_DATABASE=Akib Systems Taiwan, INC
+@@ -67285,6 +68329,9 @@ OUI:E81132*
+ OUI:E81324*
+  ID_OUI_FROM_DATABASE=GuangZhou Bonsoninfo System CO.,LTD
++OUI:E817FC*
++ ID_OUI_FROM_DATABASE=NIFTY Corporation
++
+ OUI:E82877*
+  ID_OUI_FROM_DATABASE=TMY Co., Ltd.
+@@ -67363,6 +68410,9 @@ OUI:E85E53*
+ OUI:E8611F*
+  ID_OUI_FROM_DATABASE=Dawning Information Industry Co.,Ltd
++OUI:E8617E*
++ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
++
+ OUI:E86183*
+  ID_OUI_FROM_DATABASE=Black Diamond Advanced Technology, LLC
+@@ -67438,6 +68488,9 @@ OUI:E8A4C1*
+ OUI:E8ABFA*
+  ID_OUI_FROM_DATABASE=Shenzhen Reecam Tech.Ltd.
++OUI:E8B1FC*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:E8B4AE*
+  ID_OUI_FROM_DATABASE=Shenzhen C&D Electronics Co.,Ltd
+@@ -67519,6 +68572,9 @@ OUI:E8E776*
+ OUI:E8E875*
+  ID_OUI_FROM_DATABASE=iS5 Communications Inc.
++OUI:E8EA6A*
++ ID_OUI_FROM_DATABASE=StarTech.com
++
+ OUI:E8EADA*
+  ID_OUI_FROM_DATABASE=Denkovi Assembly Electroncs LTD
+@@ -67534,6 +68590,9 @@ OUI:E8F226*
+ OUI:E8F928*
+  ID_OUI_FROM_DATABASE=RFTECH SRL
++OUI:E8FC60*
++ ID_OUI_FROM_DATABASE=ELCOM Innovations Private Limited
++
+ OUI:EC0ED6*
+  ID_OUI_FROM_DATABASE=ITECH INSTRUMENTS SAS
+@@ -67756,6 +68815,12 @@ OUI:ECF236*
+ OUI:ECF35B*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:ECF4BB*
++ ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++
++OUI:ECF72B*
++ ID_OUI_FROM_DATABASE=HD DIGITAL TECH CO., LTD.
++
+ OUI:ECFAAA*
+  ID_OUI_FROM_DATABASE=The IMS Company
+@@ -67783,6 +68848,9 @@ OUI:F008F1*
+ OUI:F013C3*
+  ID_OUI_FROM_DATABASE=SHENZHEN FENDA TECHNOLOGY CO., LTD
++OUI:F015A0*
++ ID_OUI_FROM_DATABASE=KyungDong One Co., Ltd.
++
+ OUI:F01C13*
+  ID_OUI_FROM_DATABASE=LG Electronics
+@@ -67822,12 +68890,21 @@ OUI:F02A61*
+ OUI:F02FD8*
+  ID_OUI_FROM_DATABASE=Bi2-Vision
++OUI:F0321A*
++ ID_OUI_FROM_DATABASE=Mita-Teknik A/S
++
+ OUI:F037A1*
+  ID_OUI_FROM_DATABASE=Huike Electronics (SHENZHEN) CO., LTD.
++OUI:F03A4B*
++ ID_OUI_FROM_DATABASE=Bloombase, Inc.
++
+ OUI:F03A55*
+  ID_OUI_FROM_DATABASE=Omega Elektronik AS
++OUI:F03FF8*
++ ID_OUI_FROM_DATABASE=R L Drake
++
+ OUI:F04335*
+  ID_OUI_FROM_DATABASE=DVN(Shanghai)Ltd.
+@@ -67900,12 +68977,18 @@ OUI:F07F0C*
+ OUI:F081AF*
+  ID_OUI_FROM_DATABASE=IRZ AUTOMATION TECHNOLOGIES LTD
++OUI:F08261*
++ ID_OUI_FROM_DATABASE=SAGEMCOM
++
+ OUI:F0842F*
+  ID_OUI_FROM_DATABASE=ADB Broadband Italia
+ OUI:F084C9*
+  ID_OUI_FROM_DATABASE=zte corporation
++OUI:F08A28*
++ ID_OUI_FROM_DATABASE=JIANGSU HENGSION ELECTRONIC S and T CO.,LTD
++
+ OUI:F08BFE*
+  ID_OUI_FROM_DATABASE=COSTEL.,CO.LTD
+@@ -67990,6 +69073,9 @@ OUI:F0DA7C*
+ OUI:F0DB30*
+  ID_OUI_FROM_DATABASE=Yottabyte
++OUI:F0DBF8*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:F0DCE2*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -68029,6 +69115,9 @@ OUI:F0F260*
+ OUI:F0F5AE*
+  ID_OUI_FROM_DATABASE=Adaptrum Inc.
++OUI:F0F61C*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:F0F644*
+  ID_OUI_FROM_DATABASE=Whitesky Science & Technology Co.,Ltd.
+@@ -68089,6 +69178,9 @@ OUI:F42896*
+ OUI:F436E1*
+  ID_OUI_FROM_DATABASE=Abilis Systems SARL
++OUI:F437B7*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:F43814*
+  ID_OUI_FROM_DATABASE=Shanghai Howell Electronic Co.,Ltd
+@@ -68191,6 +69283,9 @@ OUI:F48771*
+ OUI:F48E09*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:F490CA*
++ ID_OUI_FROM_DATABASE=Tensorcom
++
+ OUI:F490EA*
+  ID_OUI_FROM_DATABASE=Deciso B.V.
+@@ -68221,9 +69316,15 @@ OUI:F4B164*
+ OUI:F4B381*
+  ID_OUI_FROM_DATABASE=WindowMaster A/S
++OUI:F4B52F*
++ ID_OUI_FROM_DATABASE=Juniper networks
++
+ OUI:F4B549*
+  ID_OUI_FROM_DATABASE=Yeastar Technology Co., Ltd.
++OUI:F4B6E5*
++ ID_OUI_FROM_DATABASE=TerraSem Co.,Ltd
++
+ OUI:F4B72A*
+  ID_OUI_FROM_DATABASE=TIME INTERCONNECT LTD
+@@ -68251,6 +69352,9 @@ OUI:F4CD90*
+ OUI:F4CE46*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
++OUI:F4CFE2*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:F4D9FB*
+  ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
+@@ -68260,6 +69364,9 @@ OUI:F4DC4D*
+ OUI:F4DCDA*
+  ID_OUI_FROM_DATABASE=Zhuhai Jiahe Communication Technology Co., limited
++OUI:F4DCF9*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:F4E142*
+  ID_OUI_FROM_DATABASE=Delta Elektronika BV
+@@ -68413,6 +69520,9 @@ OUI:F8572E*
+ OUI:F85BC9*
+  ID_OUI_FROM_DATABASE=M-Cube Spa
++OUI:F85C45*
++ ID_OUI_FROM_DATABASE=IC Nexus Co. Ltd.
++
+ OUI:F85F2A*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -68494,6 +69604,9 @@ OUI:F8A45F*
+ OUI:F8A963*
+  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
++OUI:F8A9D0*
++ ID_OUI_FROM_DATABASE=LG Electronics
++
+ OUI:F8A9DE*
+  ID_OUI_FROM_DATABASE=PUISSANCE PLUS
+@@ -68566,6 +69679,9 @@ OUI:F8DC7A*
+ OUI:F8DFA8*
+  ID_OUI_FROM_DATABASE=ZTE Corporation
++OUI:F8E079*
++ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
++
+ OUI:F8E4FB*
+  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+@@ -68581,6 +69697,9 @@ OUI:F8EA0A*
+ OUI:F8EDA5*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:F8F005*
++ ID_OUI_FROM_DATABASE=Newport Media Inc.
++
+ OUI:F8F014*
+  ID_OUI_FROM_DATABASE=RackWare Inc.
+@@ -68623,12 +69742,18 @@ OUI:FC01CD*
+ OUI:FC0647*
+  ID_OUI_FROM_DATABASE=Cortland Research, LLC
++OUI:FC07A0*
++ ID_OUI_FROM_DATABASE=LRE Medical GmbH
++
+ OUI:FC0877*
+  ID_OUI_FROM_DATABASE=Prentke Romich Company
+ OUI:FC09D8*
+  ID_OUI_FROM_DATABASE=ACTEON Group
++OUI:FC09F6*
++ ID_OUI_FROM_DATABASE=GUANGDONG TONZE ELECTRIC CO.,LTD
++
+ OUI:FC0A81*
+  ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
+@@ -68641,6 +69766,15 @@ OUI:FC10BD*
+ OUI:FC1186*
+  ID_OUI_FROM_DATABASE=Logic3 plc
++OUI:FC1349*
++ ID_OUI_FROM_DATABASE=Global Apps Corp.
++
++OUI:FC15B4*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
++OUI:FC1607*
++ ID_OUI_FROM_DATABASE=Taian Technology(Wuxi) Co.,Ltd.
++
+ OUI:FC1794*
+  ID_OUI_FROM_DATABASE=InterCreative Co., Ltd
+@@ -68668,6 +69802,9 @@ OUI:FC229C*
+ OUI:FC253F*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:FC27A2*
++ ID_OUI_FROM_DATABASE=TRANS ELECTRIC CO., LTD.
++
+ OUI:FC2A54*
+  ID_OUI_FROM_DATABASE=Connected Data, Inc.
+@@ -68761,6 +69898,9 @@ OUI:FC8E7E*
+ OUI:FC8FC4*
+  ID_OUI_FROM_DATABASE=Intelligent Technology Inc.
++OUI:FC923B*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:FC946C*
+  ID_OUI_FROM_DATABASE=UBIVELOX
+@@ -68791,6 +69931,9 @@ OUI:FCAF6A*
+ OUI:FCB0C4*
+  ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co., Ltd
++OUI:FCBBA1*
++ ID_OUI_FROM_DATABASE=Shenzhen Minicreate Technology Co.,Ltd
++
+ OUI:FCC23D*
+  ID_OUI_FROM_DATABASE=Atmel Corporation
+@@ -68851,6 +69994,9 @@ OUI:FCF528*
+ OUI:FCF8AE*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:FCF8B7*
++ ID_OUI_FROM_DATABASE=TRONTEQ Electronic
++
+ OUI:FCFAF7*
+  ID_OUI_FROM_DATABASE=Shanghai Baud Data Communication Co.,Ltd.
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 289f81c..6142dc8 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -917,6 +917,9 @@ pci:v00001000d0000005Bsv00001028sd00001F37*
+ pci:v00001000d0000005Bsv00001028sd00001F38*
+  ID_MODEL_FROM_DATABASE=PERC H710 Mini (for monolithics)
++pci:v00001000d0000005Bsv00008086sd00003510*
++ ID_MODEL_FROM_DATABASE=RMS25PB080 RAID Controller
++
+ pci:v00001000d0000005Bsv00008086sd00003513*
+  ID_MODEL_FROM_DATABASE=RMS25CB080 RAID Controller
+@@ -4203,7 +4206,7 @@ pci:v00001002d00006631*
+  ID_MODEL_FROM_DATABASE=Oland
+ pci:v00001002d00006640*
+- ID_MODEL_FROM_DATABASE=Saturn XT [Radeon HD 8950M]
++ ID_MODEL_FROM_DATABASE=Saturn XT [FirePro M6100]
+ pci:v00001002d00006641*
+  ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M]
+@@ -4248,7 +4251,10 @@ pci:v00001002d00006660*
+  ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M]
+ pci:v00001002d00006663*
+- ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570M]
++ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M]
++
++pci:v00001002d00006663sv00001025sd00000846*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8570A
+ pci:v00001002d00006664*
+  ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series]
+@@ -4904,12 +4910,18 @@ pci:v00001002d00006758sv0000174Bsd00007670*
+ pci:v00001002d00006758sv0000174Bsd0000E181*
+  ID_MODEL_FROM_DATABASE=Radeon HD 6670
++pci:v00001002d00006758sv00001787sd00002309*
++ ID_MODEL_FROM_DATABASE=Radeon HD 6670
++
+ pci:v00001002d00006759*
+- ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570]
++ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550]
+ pci:v00001002d00006759sv0000103Csd00003130*
+  ID_MODEL_FROM_DATABASE=Radeon HD 6570
++pci:v00001002d00006759sv00001043sd00000403*
++ ID_MODEL_FROM_DATABASE=Radeon HD 6570
++
+ pci:v00001002d00006759sv00001462sd00002500*
+  ID_MODEL_FROM_DATABASE=Radeon HD 6570
+@@ -4925,6 +4937,9 @@ pci:v00001002d00006759sv00001642sd00003A67*
+ pci:v00001002d00006759sv00001682sd00003280*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7570
++pci:v00001002d00006759sv00001682sd00003530*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8550
++
+ pci:v00001002d00006759sv0000174Bsd00007570*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7570
+@@ -5585,6 +5600,9 @@ pci:v00001002d00006779sv0000103Csd00002128*
+ pci:v00001002d00006779sv0000103Csd00002AEE*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7450A
++pci:v00001002d00006779sv00001462sd00002125*
++ ID_MODEL_FROM_DATABASE=Radeon HD 6450
++
+ pci:v00001002d00006779sv00001462sd00002346*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7450
+@@ -5813,6 +5831,15 @@ pci:v00001002d000067A1*
+ pci:v00001002d000067A2*
+  ID_MODEL_FROM_DATABASE=Hawaii GL
++pci:v00001002d000067A8*
++ ID_MODEL_FROM_DATABASE=Hawaii
++
++pci:v00001002d000067A9*
++ ID_MODEL_FROM_DATABASE=Hawaii
++
++pci:v00001002d000067AA*
++ ID_MODEL_FROM_DATABASE=Hawaii
++
+ pci:v00001002d000067B0*
+  ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X]
+@@ -5907,7 +5934,7 @@ pci:v00001002d00006821sv00001002sd0000031E*
+  ID_MODEL_FROM_DATABASE=FirePro SX4000
+ pci:v00001002d00006822*
+- ID_MODEL_FROM_DATABASE=Venus PRO
++ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon E8860]
+ pci:v00001002d00006823*
+  ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M]
+@@ -7463,6 +7490,9 @@ pci:v00001002d000068F9sv0000103Csd00002AAE*
+ pci:v00001002d000068F9sv0000103Csd00003580*
+  ID_MODEL_FROM_DATABASE=Radeon HD 5450
++pci:v00001002d000068F9sv00001043sd00000386*
++ ID_MODEL_FROM_DATABASE=Radeon HD 5450
++
+ pci:v00001002d000068F9sv00001043sd000003C2*
+  ID_MODEL_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP)
+@@ -8834,9 +8864,18 @@ pci:v00001002d00009901*
+ pci:v00001002d00009902*
+  ID_MODEL_FROM_DATABASE=Trinity HDMI Audio Controller
++pci:v00001002d00009902sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001002d00009903*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G]
++pci:v00001002d00009903sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
++pci:v00001002d00009903sv0000103Csd00001952*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001002d00009904*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7560D]
+@@ -10964,6 +11003,9 @@ pci:v00001022d00007801*
+ pci:v00001022d00007801sv0000103Csd0000168B*
+  ID_MODEL_FROM_DATABASE=ProBook 4535s Notebook
++pci:v00001022d00007801sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d00007802*
+  ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
+@@ -10982,27 +11024,45 @@ pci:v00001022d00007806*
+ pci:v00001022d00007807*
+  ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller
++pci:v00001022d00007807sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d00007808*
+  ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller
++pci:v00001022d00007808sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d00007809*
+  ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller
++pci:v00001022d00007809sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d0000780B*
+  ID_MODEL_FROM_DATABASE=FCH SMBus Controller
++pci:v00001022d0000780Bsv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d0000780C*
+  ID_MODEL_FROM_DATABASE=FCH IDE Controller
+ pci:v00001022d0000780D*
+  ID_MODEL_FROM_DATABASE=FCH Azalia Controller
++pci:v00001022d0000780Dsv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d0000780Dsv00001043sd00008444*
+  ID_MODEL_FROM_DATABASE=F2A85-M Series
+ pci:v00001022d0000780E*
+  ID_MODEL_FROM_DATABASE=FCH LPC Bridge
++pci:v00001022d0000780Esv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d0000780F*
+  ID_MODEL_FROM_DATABASE=FCH PCI Bridge
+@@ -11015,11 +11075,41 @@ pci:v00001022d00007813*
+ pci:v00001022d00007814*
+  ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller
++pci:v00001022d00007814sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v00001022d00007900*
+- ID_MODEL_FROM_DATABASE=CZ SATA Controller [IDE mode]
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [IDE mode]
++
++pci:v00001022d00007901*
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode]
++
++pci:v00001022d00007902*
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
++
++pci:v00001022d00007903*
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
++
++pci:v00001022d00007904*
++ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode]
++
++pci:v00001022d00007906*
++ ID_MODEL_FROM_DATABASE=FCH SD Flash Controller
++
++pci:v00001022d00007908*
++ ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller
+ pci:v00001022d0000790B*
+- ID_MODEL_FROM_DATABASE=CZ SMBus Controller
++ ID_MODEL_FROM_DATABASE=FCH SMBus Controller
++
++pci:v00001022d0000790E*
++ ID_MODEL_FROM_DATABASE=FCH LPC Bridge
++
++pci:v00001022d0000790F*
++ ID_MODEL_FROM_DATABASE=FCH PCI Bridge
++
++pci:v00001022d00007914*
++ ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller
+ pci:v00001022d00009600*
+  ID_MODEL_FROM_DATABASE=RS780 Host Bridge
+@@ -23672,6 +23762,21 @@ pci:v000010DEd000005E6*
+ pci:v000010DEd000005E7*
+  ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060]
++pci:v000010DEd000005E7sv000010DEsd00000595*
++ ID_MODEL_FROM_DATABASE=Tesla T10 Processor
++
++pci:v000010DEd000005E7sv000010DEsd0000068F*
++ ID_MODEL_FROM_DATABASE=Tesla T10 Processor
++
++pci:v000010DEd000005E7sv000010DEsd00000697*
++ ID_MODEL_FROM_DATABASE=Tesla M1060
++
++pci:v000010DEd000005E7sv000010DEsd00000714*
++ ID_MODEL_FROM_DATABASE=Tesla M1060
++
++pci:v000010DEd000005E7sv000010DEsd00000743*
++ ID_MODEL_FROM_DATABASE=Tesla M1060
++
+ pci:v000010DEd000005EA*
+  ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260]
+@@ -23732,6 +23837,9 @@ pci:v000010DEd00000608*
+ pci:v000010DEd00000609*
+  ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTS]
++pci:v000010DEd00000609sv0000106Bsd000000A7*
++ ID_MODEL_FROM_DATABASE=GeForce 8800 GS
++
+ pci:v000010DEd0000060A*
+  ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 280M]
+@@ -23864,6 +23972,9 @@ pci:v000010DEd0000062D*
+ pci:v000010DEd0000062E*
+  ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT]
++pci:v000010DEd0000062Esv0000106Bsd00000605*
++ ID_MODEL_FROM_DATABASE=GeForce GT 130
++
+ pci:v000010DEd0000062F*
+  ID_MODEL_FROM_DATABASE=G94 [GeForce 9800 S]
+@@ -23921,6 +24032,9 @@ pci:v000010DEd00000648*
+ pci:v000010DEd00000649*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT]
++pci:v000010DEd00000649sv00001043sd0000202D*
++ ID_MODEL_FROM_DATABASE=GeForce GT 220M
++
+ pci:v000010DEd0000064A*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce 9700M GT]
+@@ -23942,12 +24056,21 @@ pci:v000010DEd00000651*
+ pci:v000010DEd00000652*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 130M]
++pci:v000010DEd00000652sv0000152Dsd00000850*
++ ID_MODEL_FROM_DATABASE=GeForce GT 240M LE
++
+ pci:v000010DEd00000653*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 120M]
+ pci:v000010DEd00000654*
+  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M]
++pci:v000010DEd00000654sv00001043sd000014A2*
++ ID_MODEL_FROM_DATABASE=GeForce GT 320M
++
++pci:v000010DEd00000654sv00001043sd000014D2*
++ ID_MODEL_FROM_DATABASE=GeForce GT 320M
++
+ pci:v000010DEd00000655*
+  ID_MODEL_FROM_DATABASE=G96 [GeForce GT 120]
+@@ -24098,6 +24221,9 @@ pci:v000010DEd000006E7*
+ pci:v000010DEd000006E8*
+  ID_MODEL_FROM_DATABASE=G98M [GeForce 9200M GS]
++pci:v000010DEd000006E8sv0000103Csd0000360B*
++ ID_MODEL_FROM_DATABASE=GeForce 9200M GE
++
+ pci:v000010DEd000006E9*
+  ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS]
+@@ -24596,6 +24722,9 @@ pci:v000010DEd000007FEsv00001019sd0000297A*
+ pci:v000010DEd000007FEsv00001AFAsd00007150*
+  ID_MODEL_FROM_DATABASE=JW-IN7150-HD
++pci:v000010DEd00000840*
++ ID_MODEL_FROM_DATABASE=C77 [GeForce 8200M]
++
+ pci:v000010DEd00000844*
+  ID_MODEL_FROM_DATABASE=C77 [GeForce 9100M G]
+@@ -24665,6 +24794,9 @@ pci:v000010DEd00000865*
+ pci:v000010DEd00000866*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G]
++pci:v000010DEd00000866sv0000106Bsd000000B1*
++ ID_MODEL_FROM_DATABASE=GeForce 9400M
++
+ pci:v000010DEd00000867*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400]
+@@ -24746,6 +24878,9 @@ pci:v000010DEd0000087E*
+ pci:v000010DEd0000087F*
+  ID_MODEL_FROM_DATABASE=ION LE VGA
++pci:v000010DEd000008A0*
++ ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
++
+ pci:v000010DEd000008A2*
+  ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
+@@ -24755,6 +24890,9 @@ pci:v000010DEd000008A3*
+ pci:v000010DEd000008A4*
+  ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
++pci:v000010DEd000008A5*
++ ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
++
+ pci:v000010DEd00000A20*
+  ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 220]
+@@ -24875,6 +25013,9 @@ pci:v000010DEd00000A73*
+ pci:v000010DEd00000A74*
+  ID_MODEL_FROM_DATABASE=GT218M [GeForce G210M]
++pci:v000010DEd00000A74sv00001B0Asd0000903A*
++ ID_MODEL_FROM_DATABASE=GeForce G210
++
+ pci:v000010DEd00000A75*
+  ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M]
+@@ -24986,6 +25127,9 @@ pci:v000010DEd00000A7Asv00001462sd0000AC82*
+ pci:v000010DEd00000A7Asv00001462sd0000AE33*
+  ID_MODEL_FROM_DATABASE=GeForce 405
++pci:v000010DEd00000A7Asv00001642sd00003980*
++ ID_MODEL_FROM_DATABASE=GeForce 405
++
+ pci:v000010DEd00000A7Asv000017AAsd00003950*
+  ID_MODEL_FROM_DATABASE=GeForce 405M
+@@ -24995,6 +25139,9 @@ pci:v000010DEd00000A7Asv000017AAsd0000397D*
+ pci:v000010DEd00000A7Asv00001B0Asd00002091*
+  ID_MODEL_FROM_DATABASE=GeForce 315M
++pci:v000010DEd00000A7Asv00001B0Asd000090B4*
++ ID_MODEL_FROM_DATABASE=GeForce 405
++
+ pci:v000010DEd00000A7Asv00001BFDsd00000003*
+  ID_MODEL_FROM_DATABASE=GeForce 405
+@@ -25266,7 +25413,7 @@ pci:v000010DEd00000AD8*
+  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (RAID mode)
+ pci:v000010DEd00000BE2*
+- ID_MODEL_FROM_DATABASE=High Definition Audio Controller
++ ID_MODEL_FROM_DATABASE=GT216 HDMI Audio Controller
+ pci:v000010DEd00000BE2sv00001043sd00008311*
+  ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2
+@@ -25460,12 +25607,42 @@ pci:v000010DEd00000DE4*
+ pci:v000010DEd00000DE5*
+  ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 530]
++pci:v000010DEd00000DE7*
++ ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 610]
++
+ pci:v000010DEd00000DE8*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 620M]
+ pci:v000010DEd00000DE9*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M]
++pci:v000010DEd00000DE9sv00001025sd00000692*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv00001025sd00000725*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv00001025sd00000728*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv00001025sd0000072B*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv00001025sd0000072E*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv00001025sd00000753*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv00001025sd00000754*
++ ID_MODEL_FROM_DATABASE=GeForce GT 620M
++
++pci:v000010DEd00000DE9sv000017AAsd00003977*
++ ID_MODEL_FROM_DATABASE=GeForce GT 640M LE
++
++pci:v000010DEd00000DE9sv00001B0Asd00002210*
++ ID_MODEL_FROM_DATABASE=GeForce GT 635M
++
+ pci:v000010DEd00000DEA*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M]
+@@ -25514,6 +25691,12 @@ pci:v000010DEd00000DF3*
+ pci:v000010DEd00000DF4*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M]
++pci:v000010DEd00000DF4sv0000152Dsd00000952*
++ ID_MODEL_FROM_DATABASE=GeForce GT 630M
++
++pci:v000010DEd00000DF4sv0000152Dsd00000953*
++ ID_MODEL_FROM_DATABASE=GeForce GT 630M
++
+ pci:v000010DEd00000DF5*
+  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 525M]
+@@ -25610,6 +25793,9 @@ pci:v000010DEd00000FC6sv00001043sd00008428*
+ pci:v000010DEd00000FCD*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M]
++pci:v000010DEd00000FCE*
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M LE]
++
+ pci:v000010DEd00000FD1*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M]
+@@ -25667,6 +25853,9 @@ pci:v000010DEd00000FE0*
+ pci:v000010DEd00000FE1*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 730M]
++pci:v000010DEd00000FE2*
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M]
++
+ pci:v000010DEd00000FE3*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M]
+@@ -25688,6 +25877,12 @@ pci:v000010DEd00000FE7*
+ pci:v000010DEd00000FE7sv000010DEsd0000101E*
+  ID_MODEL_FROM_DATABASE=GRID K100
++pci:v000010DEd00000FE9*
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 750M Mac Edition]
++
++pci:v000010DEd00000FEA*
++ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M Mac Edition]
++
+ pci:v000010DEd00000FEF*
+  ID_MODEL_FROM_DATABASE=GK107GL [GRID K340]
+@@ -25739,6 +25934,15 @@ pci:v000010DEd00001003*
+ pci:v000010DEd00001004*
+  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780]
++pci:v000010DEd00001004sv00003842sd00000784*
++ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 SC w/ ACX Cooler]
++
++pci:v000010DEd00001004sv00003842sd00001784*
++ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler]
++
++pci:v000010DEd00001004sv00003842sd00001788*
++ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler]
++
+ pci:v000010DEd00001005*
+  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan]
+@@ -25763,6 +25967,9 @@ pci:v000010DEd00001005sv00003842sd00002794*
+ pci:v000010DEd00001005sv00003842sd00002795*
+  ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature
++pci:v000010DEd0000100A*
++ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Ti]
++
+ pci:v000010DEd0000101F*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20]
+@@ -25775,15 +25982,24 @@ pci:v000010DEd00001021*
+ pci:v000010DEd00001022*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c]
++pci:v000010DEd00001023*
++ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40m]
++
+ pci:v000010DEd00001024*
+- ID_MODEL_FROM_DATABASE=GK110GL [Tesla K40c]
++ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40c]
+ pci:v000010DEd00001026*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s]
++pci:v000010DEd00001027*
++ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40st]
++
+ pci:v000010DEd00001028*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20m]
++pci:v000010DEd00001029*
++ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40s]
++
+ pci:v000010DEd0000103A*
+  ID_MODEL_FROM_DATABASE=GK110GL [Quadro K6000]
+@@ -25832,6 +26048,12 @@ pci:v000010DEd00001057*
+ pci:v000010DEd00001058*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
++pci:v000010DEd00001058sv0000103Csd00002AED*
++ ID_MODEL_FROM_DATABASE=GeForce 610
++
++pci:v000010DEd00001058sv0000103Csd00002AF1*
++ ID_MODEL_FROM_DATABASE=GeForce 610
++
+ pci:v000010DEd00001058sv00001043sd000010AC*
+  ID_MODEL_FROM_DATABASE=GeForce GT 610M
+@@ -25841,6 +26063,9 @@ pci:v000010DEd00001058sv00001043sd000010BC*
+ pci:v000010DEd00001058sv00001043sd00001652*
+  ID_MODEL_FROM_DATABASE=GeForce GT 610M
++pci:v000010DEd00001059*
++ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
++
+ pci:v000010DEd0000105A*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
+@@ -25904,6 +26129,12 @@ pci:v000010DEd00001091sv000010DEsd0000088E*
+ pci:v000010DEd00001091sv000010DEsd00000891*
+  ID_MODEL_FROM_DATABASE=Tesla X2090
++pci:v000010DEd00001091sv000010DEsd00000974*
++ ID_MODEL_FROM_DATABASE=Tesla X2090
++
++pci:v000010DEd00001091sv000010DEsd0000098D*
++ ID_MODEL_FROM_DATABASE=Tesla X2090
++
+ pci:v000010DEd00001094*
+  ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2075]
+@@ -25941,7 +26172,7 @@ pci:v000010DEd000010D8*
+  ID_MODEL_FROM_DATABASE=GT218 [NVS 300]
+ pci:v000010DEd00001140*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M / GT 620M/625M/630M/720M]
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M]
+ pci:v000010DEd00001140sv00001025sd00000600*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
+@@ -26081,6 +26312,9 @@ pci:v000010DEd00001140sv00001028sd00000554*
+ pci:v000010DEd00001140sv00001028sd00000557*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
++pci:v000010DEd00001140sv00001028sd00000562*
++ ID_MODEL_FROM_DATABASE=GeForce GT 625M
++
+ pci:v000010DEd00001140sv00001028sd00000565*
+  ID_MODEL_FROM_DATABASE=GeForce GT 630M
+@@ -26111,6 +26345,12 @@ pci:v000010DEd00001140sv00001028sd000005B3*
+ pci:v000010DEd00001140sv00001028sd000005DA*
+  ID_MODEL_FROM_DATABASE=GeForce GT 630M
++pci:v000010DEd00001140sv00001028sd000005DE*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
++pci:v000010DEd00001140sv00001028sd000005E0*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001140sv00001028sd000005E8*
+  ID_MODEL_FROM_DATABASE=GeForce GT 630M
+@@ -26156,6 +26396,9 @@ pci:v000010DEd00001140sv00001043sd0000126D*
+ pci:v000010DEd00001140sv00001043sd0000131D*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv00001043sd000013FD*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001140sv00001043sd000014C7*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
+@@ -26189,6 +26432,9 @@ pci:v000010DEd00001140sv00001043sd0000224A*
+ pci:v000010DEd00001140sv00001043sd00008595*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv00001072sd0000152D*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001140sv000010CFsd000017F5*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
+@@ -26291,6 +26537,9 @@ pci:v000010DEd00001140sv0000144Dsd0000C709*
+ pci:v000010DEd00001140sv0000144Dsd0000C711*
+  ID_MODEL_FROM_DATABASE=GeForce 710M
++pci:v000010DEd00001140sv0000144Dsd0000C736*
++ ID_MODEL_FROM_DATABASE=GeForce 710M
++
+ pci:v000010DEd00001140sv00001462sd000010B8*
+  ID_MODEL_FROM_DATABASE=GeForce GT 710M
+@@ -26303,6 +26552,9 @@ pci:v000010DEd00001140sv00001462sd0000AA33*
+ pci:v000010DEd00001140sv00001462sd0000AAA2*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv00001462sd0000AAA3*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
+ pci:v000010DEd00001140sv00001462sd0000AE71*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
+@@ -26315,15 +26567,30 @@ pci:v000010DEd00001140sv0000152Dsd00000982*
+ pci:v000010DEd00001140sv0000152Dsd00000983*
+  ID_MODEL_FROM_DATABASE=GeForce GT 630M
++pci:v000010DEd00001140sv0000152Dsd00001012*
++ ID_MODEL_FROM_DATABASE=GeForce 710M
++
+ pci:v000010DEd00001140sv0000152Dsd00001030*
+  ID_MODEL_FROM_DATABASE=GeForce GT 630M
+ pci:v000010DEd00001140sv0000152Dsd00001055*
+  ID_MODEL_FROM_DATABASE=GeForce 710M
++pci:v000010DEd00001140sv0000152Dsd00001067*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
++pci:v000010DEd00001140sv0000152Dsd00001072*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001140sv000017AAsd00002200*
+  ID_MODEL_FROM_DATABASE=NVS 5200M
++pci:v000010DEd00001140sv000017AAsd00002213*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
++pci:v000010DEd00001140sv000017AAsd00002220*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001140sv000017AAsd00003656*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
+@@ -26369,6 +26636,9 @@ pci:v000010DEd00001140sv000017AAsd00003977*
+ pci:v000010DEd00001140sv000017AAsd00003983*
+  ID_MODEL_FROM_DATABASE=GeForce 610M
++pci:v000010DEd00001140sv000017AAsd00005001*
++ ID_MODEL_FROM_DATABASE=GeForce 610M
++
+ pci:v000010DEd00001140sv000017AAsd00005003*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
+@@ -26414,18 +26684,33 @@ pci:v000010DEd00001140sv000017AAsd0000502E*
+ pci:v000010DEd00001140sv000017AAsd0000502F*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv000017AAsd0000503E*
++ ID_MODEL_FROM_DATABASE=GeForce 710M
++
++pci:v000010DEd00001140sv000017AAsd0000503F*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
+ pci:v000010DEd00001140sv00001854sd00000177*
+  ID_MODEL_FROM_DATABASE=GeForce 710M
+ pci:v000010DEd00001140sv00001854sd00000180*
+  ID_MODEL_FROM_DATABASE=GeForce 710M
++pci:v000010DEd00001140sv00001854sd00000190*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
++pci:v000010DEd00001140sv00001854sd00000192*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001140sv00001B0Asd000020DD*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
+ pci:v000010DEd00001140sv00001B0Asd000020DF*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
++pci:v000010DEd00001140sv00001B0Asd00002202*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720M
++
+ pci:v000010DEd00001180*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680]
+@@ -26484,10 +26769,10 @@ pci:v000010DEd00001193*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
+ pci:v000010DEd0000119D*
+- ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M]
++ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M Mac Edition]
+ pci:v000010DEd0000119E*
+- ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M]
++ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M Mac Edition]
+ pci:v000010DEd0000119F*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M]
+@@ -27210,32 +27495,23 @@ pci:v000010EC*
+  ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
+ pci:v000010ECd00000139*
+- ID_MODEL_FROM_DATABASE=Zonet Zen3200
+-
+-pci:v000010ECd00000880*
+- ID_MODEL_FROM_DATABASE=Realtek 880 High Definition Audio
+-
+-pci:v000010ECd00000883*
+- ID_MODEL_FROM_DATABASE=Realtek 883 High Definition Audio
+-
+-pci:v000010ECd00000885*
+- ID_MODEL_FROM_DATABASE=Realtek 885 High Definition Audio
+-
+-pci:v000010ECd00000888*
+- ID_MODEL_FROM_DATABASE=Realtek 888 High Definition Audio
+-
+-pci:v000010ECd00000892*
+- ID_MODEL_FROM_DATABASE=Realtek 892 High Definition Audio
++ ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+ Ethernet Controller
+ pci:v000010ECd00005209*
+  ID_MODEL_FROM_DATABASE=RTS5209 PCI Express Card Reader
++pci:v000010ECd00005227*
++ ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader
++
+ pci:v000010ECd00005229*
+  ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader
+ pci:v000010ECd00005229sv00001025sd00000813*
+  ID_MODEL_FROM_DATABASE=Aspire R7-571
++pci:v000010ECd00005229sv0000103Csd0000194E*
++ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++
+ pci:v000010ECd00005288*
+  ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader
+@@ -27449,6 +27725,9 @@ pci:v000010ECd00008168*
+ pci:v000010ECd00008168sv00001019sd00008168*
+  ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller
++pci:v000010ECd00008168sv00001028sd00000283*
++ ID_MODEL_FROM_DATABASE=Vostro 220
++
+ pci:v000010ECd00008168sv00001028sd000004B2*
+  ID_MODEL_FROM_DATABASE=Vostro 3350
+@@ -27458,6 +27737,9 @@ pci:v000010ECd00008168sv00001028sd000004DA*
+ pci:v000010ECd00008168sv0000103Csd00001611*
+  ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
++pci:v000010ECd00008168sv0000103Csd00001950*
++ ID_MODEL_FROM_DATABASE=ProBook 450/455
++
+ pci:v000010ECd00008168sv00001043sd000011F5*
+  ID_MODEL_FROM_DATABASE=A6J-Q008
+@@ -27617,6 +27899,9 @@ pci:v000010ECd00008199sv00001462sd00006894*
+ pci:v000010ECd00008723*
+  ID_MODEL_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter
++pci:v000010ECd0000B723*
++ ID_MODEL_FROM_DATABASE=RTL8723BE PCIe Wireless Network Adapter
++
+ pci:v000010ED*
+  ID_VENDOR_FROM_DATABASE=Ascii Corporation
+@@ -31562,6 +31847,15 @@ pci:v00001137d00000042*
+ pci:v00001137d00000042sv00001137sd00000047*
+  ID_MODEL_FROM_DATABASE=VIC P81E PCIe Management Controller
++pci:v00001137d00000042sv00001137sd00000085*
++ ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Management Controller
++
++pci:v00001137d00000042sv00001137sd000000CD*
++ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Management Controller
++
++pci:v00001137d00000042sv00001137sd000000CE*
++ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Management Controller
++
+ pci:v00001137d00000043*
+  ID_MODEL_FROM_DATABASE=VIC Ethernet NIC
+@@ -31580,6 +31874,12 @@ pci:v00001137d00000043sv00001137sd00000084*
+ pci:v00001137d00000043sv00001137sd00000085*
+  ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC
++pci:v00001137d00000043sv00001137sd000000CD*
++ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC
++
++pci:v00001137d00000043sv00001137sd000000CE*
++ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC
++
+ pci:v00001137d00000044*
+  ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic
+@@ -31598,6 +31898,12 @@ pci:v00001137d00000044sv00001137sd00000084*
+ pci:v00001137d00000044sv00001137sd00000085*
+  ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC Dynamic
++pci:v00001137d00000044sv00001137sd000000CD*
++ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC Dynamic
++
++pci:v00001137d00000044sv00001137sd000000CE*
++ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC Dynamic
++
+ pci:v00001137d00000045*
+  ID_MODEL_FROM_DATABASE=VIC FCoE HBA
+@@ -31610,18 +31916,24 @@ pci:v00001137d00000045sv00001137sd00000048*
+ pci:v00001137d00000045sv00001137sd0000004F*
+  ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine FCoE HBA
++pci:v00001137d00000045sv00001137sd00000084*
++ ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA
++
++pci:v00001137d00000045sv00001137sd00000085*
++ ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCoE HBA
++
++pci:v00001137d00000045sv00001137sd000000CD*
++ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe FCoE HBA
++
++pci:v00001137d00000045sv00001137sd000000CE*
++ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe FCoE HBA
++
+ pci:v00001137d0000004E*
+  ID_MODEL_FROM_DATABASE=VIC 82 PCIe Upstream Port
+ pci:v00001137d00000071*
+  ID_MODEL_FROM_DATABASE=VIC SR-IOV VF
+-pci:v00001137d00000084*
+- ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA
+-
+-pci:v00001137d00000085*
+- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCOE HBA
+-
+ pci:v00001137d000000CF*
+  ID_MODEL_FROM_DATABASE=VIC Userspace NIC
+@@ -35087,6 +35399,15 @@ pci:v000011F8d00007384*
+ pci:v000011F8d00008000*
+  ID_MODEL_FROM_DATABASE=PM8000  [SPC - SAS Protocol Controller]
++pci:v000011F8d00008032*
++ ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN
++
++pci:v000011F8d00008032sv0000117Csd0000003B*
++ ID_MODEL_FROM_DATABASE=Celerity FC-82EN Fibre Channel Adapter
++
++pci:v000011F8d00008032sv0000117Csd0000003C*
++ ID_MODEL_FROM_DATABASE=Celerity FC-84EN Fibre Channel Adapter
++
+ pci:v000011F9*
+  ID_VENDOR_FROM_DATABASE=I-Cube Inc
+@@ -42029,6 +42350,24 @@ pci:v0000144C*
+ pci:v0000144D*
+  ID_VENDOR_FROM_DATABASE=Samsung Electronics Co Ltd
++pci:v0000144Dd00001600*
++ ID_MODEL_FROM_DATABASE=Apple PCIe SSD
++
++pci:v0000144Dd0000A800*
++ ID_MODEL_FROM_DATABASE=XP941 PCIe SSD
++
++pci:v0000144Dd0000A820*
++ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X
++
++pci:v0000144Dd0000A820sv00001028sd00001F95*
++ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 400GB
++
++pci:v0000144Dd0000A820sv00001028sd00001F96*
++ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 800GB
++
++pci:v0000144Dd0000A820sv00001028sd00001F97*
++ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 1600GB
++
+ pci:v0000144E*
+  ID_VENDOR_FROM_DATABASE=OLITEC
+@@ -42527,6 +42866,9 @@ pci:v000014C2*
+ pci:v000014C3*
+  ID_VENDOR_FROM_DATABASE=MEDIATEK Corp.
++pci:v000014C3d00007630*
++ ID_MODEL_FROM_DATABASE=MT7630e 802.11bgn Wireless Network Adapter
++
+ pci:v000014C4*
+  ID_VENDOR_FROM_DATABASE=IWASAKI Information Systems Co Ltd
+@@ -46334,6 +46676,9 @@ pci:v000015ADd000007B0*
+ pci:v000015ADd000007C0*
+  ID_MODEL_FROM_DATABASE=PVSCSI SCSI Controller
++pci:v000015ADd000007E0*
++ ID_MODEL_FROM_DATABASE=SATA AHCI controller
++
+ pci:v000015ADd00000801*
+  ID_MODEL_FROM_DATABASE=Virtual Machine Interface
+@@ -46623,11 +46968,17 @@ pci:v000015BCd00000103*
+  ID_MODEL_FROM_DATABASE=QX4 PCI Express quad 4-gigabit Fibre Channel controller
+ pci:v000015BCd00000105*
+- ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter
++ ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES
+ pci:v000015BCd00000105sv0000117Csd00000022*
+  ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter
++pci:v000015BCd00000105sv0000117Csd00000025*
++ ID_MODEL_FROM_DATABASE=Celerity FC-44ES Fibre Channel Adapter
++
++pci:v000015BCd00000105sv0000117Csd00000026*
++ ID_MODEL_FROM_DATABASE=Celerity FC-42ES Fibre Channel Adapter
++
+ pci:v000015BCd00001100*
+  ID_MODEL_FROM_DATABASE=E8001-66442 PCI Express CIC
+@@ -48215,6 +48566,9 @@ pci:v0000170C*
+ pci:v00001719*
+  ID_VENDOR_FROM_DATABASE=EZChip Technologies
++pci:v00001719d00001000*
++ ID_MODEL_FROM_DATABASE=NPA Access Network Processor Family
++
+ pci:v00001725*
+  ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor
+@@ -49040,9 +49394,15 @@ pci:v00001814d00003092*
+ pci:v00001814d00003290*
+  ID_MODEL_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe
++pci:v00001814d00003290sv0000103Csd000018EC*
++ ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
++
+ pci:v00001814d00003298*
+  ID_MODEL_FROM_DATABASE=RT3290 Bluetooth
++pci:v00001814d00003298sv0000103Csd000018EC*
++ ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
++
+ pci:v00001814d00003592*
+  ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe
+@@ -51299,6 +51659,9 @@ pci:v00001B4Bd00009172*
+ pci:v00001B4Bd0000917A*
+  ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
++pci:v00001B4Bd00009183*
++ ID_MODEL_FROM_DATABASE=88SS9183 PCIe SSD Controller
++
+ pci:v00001B4Bd00009192*
+  ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
+@@ -51455,9 +51818,27 @@ pci:v00001C1Cd00000001*
+ pci:v00001C2C*
+  ID_VENDOR_FROM_DATABASE=Fiberblaze
++pci:v00001C2Cd0000000A*
++ ID_MODEL_FROM_DATABASE=Capture
++
++pci:v00001C2Cd0000000F*
++ ID_MODEL_FROM_DATABASE=SmartNIC
++
++pci:v00001C2Cd000000A0*
++ ID_MODEL_FROM_DATABASE=FBC4G Capture 4x1Gb
++
++pci:v00001C2Cd000000A1*
++ ID_MODEL_FROM_DATABASE=FBC4XG Capture 4x10Gb
++
++pci:v00001C2Cd000000A2*
++ ID_MODEL_FROM_DATABASE=FBC8XG Capture 8x10Gb
++
+ pci:v00001C32*
+  ID_VENDOR_FROM_DATABASE=Highland Technology, Inc.
++pci:v00001C33*
++ ID_VENDOR_FROM_DATABASE=Daktronics, Inc
++
+ pci:v00001C3B*
+  ID_VENDOR_FROM_DATABASE=Accensus, LLC
+@@ -51503,6 +51884,9 @@ pci:v00001CE4d00000001*
+ pci:v00001CE4d00000002*
+  ID_MODEL_FROM_DATABASE=ExaNIC X2
++pci:v00001CF7*
++ ID_VENDOR_FROM_DATABASE=Subspace Dynamics
++
+ pci:v00001D44*
+  ID_VENDOR_FROM_DATABASE=DPT
+@@ -54284,6 +54668,81 @@ pci:v00008086d000008B4sv00008086sd00008270*
+ pci:v00008086d000008CF*
+  ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller
++pci:v00008086d0000095A*
++ ID_MODEL_FROM_DATABASE=Wireless 7265
++
++pci:v00008086d0000095Asv00008086sd00001010*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00005000*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++
++pci:v00008086d0000095Asv00008086sd00005002*
++ ID_MODEL_FROM_DATABASE=Wireless-N 7265
++
++pci:v00008086d0000095Asv00008086sd00005010*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00005020*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++
++pci:v00008086d0000095Asv00008086sd0000502A*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++
++pci:v00008086d0000095Asv00008086sd00005090*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00005110*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00005400*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00005410*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00005420*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++
++pci:v00008086d0000095Asv00008086sd00005490*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00009010*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00009210*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd00009410*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095B*
++ ID_MODEL_FROM_DATABASE=Wireless 7265
++
++pci:v00008086d0000095Bsv00008086sd0000500A*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Bsv00008086sd00005012*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Bsv00008086sd00005200*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
++
++pci:v00008086d0000095Bsv00008086sd00005202*
++ ID_MODEL_FROM_DATABASE=Wireless-N 7265
++
++pci:v00008086d0000095Bsv00008086sd00005210*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Bsv00008086sd00005290*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Bsv00008086sd00005302*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Bsv00008086sd00005310*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d00000960*
+  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge
+@@ -54299,6 +54758,9 @@ pci:v00008086d00000A04*
+ pci:v00008086d00000A06*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
++pci:v00008086d00000A0C*
++ ID_MODEL_FROM_DATABASE=Haswell-ULT HD Audio Controller
++
+ pci:v00008086d00000A16*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+@@ -57332,6 +57794,12 @@ pci:v00008086d00001521sv00001028sd00001F62*
+ pci:v00008086d00001521sv0000103Csd000017D1*
+  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366FLR Adapter
++pci:v00008086d00001521sv0000103Csd00002003*
++ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 367i Adapter
++
++pci:v00008086d00001521sv0000103Csd00002226*
++ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 1-port 364i Adapter
++
+ pci:v00008086d00001521sv0000103Csd0000337F*
+  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter
+@@ -57407,6 +57875,9 @@ pci:v00008086d00001523sv0000103Csd00001784*
+ pci:v00008086d00001523sv0000103Csd000018D1*
+  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter
++pci:v00008086d00001523sv0000103Csd00001989*
++ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 363i Adapter
++
+ pci:v00008086d00001523sv0000103Csd0000339F*
+  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366M Adapter
+@@ -57584,6 +58055,9 @@ pci:v00008086d00001560*
+ pci:v00008086d0000157B*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
++pci:v00008086d0000157C*
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection
++
+ pci:v00008086d000015A0*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM
+@@ -58448,6 +58922,9 @@ pci:v00008086d00001E2Dsv00001849sd00001E2D*
+ pci:v00008086d00001E31*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller
++pci:v00008086d00001E31sv0000103Csd000017AB*
++ ID_MODEL_FROM_DATABASE=ProBook 6570b
++
+ pci:v00008086d00001E31sv00001043sd00001477*
+  ID_MODEL_FROM_DATABASE=N56VZ
+@@ -58748,7 +59225,7 @@ pci:v00008086d00001F3F*
+ pci:v00008086d00001F40*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I354 1.0 GbE Backplane
+-pci:v00008086d00001F40sv00001028sd000010F1*
++pci:v00008086d00001F40sv00001028sd000005F1*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I354 1.0 GbE Backplane
+ pci:v00008086d00001F41*
+@@ -65144,6 +65621,9 @@ pci:v00008086d00002E17*
+ pci:v00008086d00002E20*
+  ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller
++pci:v00008086d00002E20sv00001028sd00000283*
++ ID_MODEL_FROM_DATABASE=Dell Vostro 220
++
+ pci:v00008086d00002E20sv00001043sd000082D3*
+  ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
+@@ -67689,7 +68169,7 @@ pci:v00008086d00004227*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection
+ pci:v00008086d00004227sv00008086sd00001011*
+- ID_MODEL_FROM_DATABASE=ThinkPad R60e/X60s
++ ID_MODEL_FROM_DATABASE=ThinkPad T60/R60e/X60s
+ pci:v00008086d00004227sv00008086sd00001014*
+  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection
+@@ -69155,6 +69635,111 @@ pci:v00008086d00009C65*
+ pci:v00008086d00009C66*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SPI Controller #1
++pci:v00008086d00009C83*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [AHCI Mode]
++
++pci:v00008086d00009C85*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode]
++
++pci:v00008086d00009C87*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode]
++
++pci:v00008086d00009C8F*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode]
++
++pci:v00008086d00009C90*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #1
++
++pci:v00008086d00009C92*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #2
++
++pci:v00008086d00009C94*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #3
++
++pci:v00008086d00009C96*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #4
++
++pci:v00008086d00009C98*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #5
++
++pci:v00008086d00009C9A*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #6
++
++pci:v00008086d00009CA0*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP High Definition Audio Controller
++
++pci:v00008086d00009CA2*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SMBus Controller
++
++pci:v00008086d00009CA4*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Thermal Management Controller
++
++pci:v00008086d00009CA6*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP USB EHCI Controller
++
++pci:v00008086d00009CB1*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP USB xHCI Controller
++
++pci:v00008086d00009CB5*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Secure Digital IO Controller
++
++pci:v00008086d00009CB6*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Smart Sound Technology Controller
++
++pci:v00008086d00009CBA*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP MEI Controller #1
++
++pci:v00008086d00009CBB*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP MEI Controller #2
++
++pci:v00008086d00009CBC*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP IDE-r Controller
++
++pci:v00008086d00009CBD*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP KT Controller
++
++pci:v00008086d00009CC1*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CC2*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CC3*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CC5*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CC6*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CC7*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CC9*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
++
++pci:v00008086d00009CE0*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO DMA Controller
++
++pci:v00008086d00009CE1*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO I2C Controller #0
++
++pci:v00008086d00009CE2*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO I2C Controller #1
++
++pci:v00008086d00009CE3*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO UART Controller #0
++
++pci:v00008086d00009CE4*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO UART Controller #1
++
++pci:v00008086d00009CE5*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #0
++
++pci:v00008086d00009CE6*
++ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #1
++
+ pci:v00008086d0000A000*
+  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
+@@ -70691,6 +71276,24 @@ pci:v0000BDBDd0000A11E*
+ pci:v0000BDBDd0000A121*
+  ID_MODEL_FROM_DATABASE=DeckLink HD Extreme 3D/3D+
++pci:v0000BDBDd0000A124*
++ ID_MODEL_FROM_DATABASE=Intensity Extreme
++
++pci:v0000BDBDd0000A126*
++ ID_MODEL_FROM_DATABASE=Intensity Shuttle
++
++pci:v0000BDBDd0000A127*
++ ID_MODEL_FROM_DATABASE=UltraStudio Express
++
++pci:v0000BDBDd0000A129*
++ ID_MODEL_FROM_DATABASE=UltraStudio Mini Monitor
++
++pci:v0000BDBDd0000A12A*
++ ID_MODEL_FROM_DATABASE=UltraStudio Mini Recorder
++
++pci:v0000BDBDd0000A12D*
++ ID_MODEL_FROM_DATABASE=UltraStudio 4K
++
+ pci:v0000BDBDd0000A12E*
+  ID_MODEL_FROM_DATABASE=DeckLink 4K Extreme
+@@ -70700,6 +71303,9 @@ pci:v0000BDBDd0000A12F*
+ pci:v0000BDBDd0000A130*
+  ID_MODEL_FROM_DATABASE=DeckLink Mini Recorder
++pci:v0000BDBDd0000A132*
++ ID_MODEL_FROM_DATABASE=UltraStudio 4K
++
+ pci:v0000C001*
+  ID_VENDOR_FROM_DATABASE=TSI Telsys
+@@ -70860,7 +71466,7 @@ pci:v0000DCBA*
+  ID_VENDOR_FROM_DATABASE=Dynamic Engineering
+ pci:v0000DCBAd00000046*
+- ID_MODEL_FROM_DATABASE=PCIeAlteraCycloneIV
++ ID_MODEL_FROM_DATABASE=PCIe Altera Cyclone IV
+ pci:v0000DCBAd00000047*
+  ID_MODEL_FROM_DATABASE=VPX-RCB
+@@ -70868,6 +71474,15 @@ pci:v0000DCBAd00000047*
+ pci:v0000DCBAd00000048*
+  ID_MODEL_FROM_DATABASE=PMC-Biserial-III-BAE9
++pci:v0000DCBAd0000004E*
++ ID_MODEL_FROM_DATABASE=PC104p-Biserial-III-NVY5
++
++pci:v0000DCBAd0000004F*
++ ID_MODEL_FROM_DATABASE=PC104p-Biserial-III-NVY6
++
++pci:v0000DCBAd00000052*
++ ID_MODEL_FROM_DATABASE=PCIeBiSerialDb37 BA22 LVDS IO
++
+ pci:v0000DD01*
+  ID_VENDOR_FROM_DATABASE=Digital Devices GmbH
+diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
+index da8385e..6663820 100644
+--- a/hwdb/20-usb-vendor-model.hwdb
++++ b/hwdb/20-usb-vendor-model.hwdb
+@@ -53,6 +53,12 @@ usb:v017C*
+ usb:v017Cp145F*
+  ID_MODEL_FROM_DATABASE=Trust Deskset
++usb:v0200*
++ ID_VENDOR_FROM_DATABASE=TP-Link
++
++usb:v0200p0201*
++ ID_MODEL_FROM_DATABASE=MA180 UMTS Modem
++
+ usb:v0204*
+  ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd
+@@ -515,6 +521,12 @@ usb:v03F0p0417*
+ usb:v03F0p0423*
+  ID_MODEL_FROM_DATABASE=HS-COMBO Cardreader
++usb:v03F0p042A*
++ ID_MODEL_FROM_DATABASE=LaserJet M1132 MFP
++
++usb:v03F0p0441*
++ ID_MODEL_FROM_DATABASE=HP Prime Calculator
++
+ usb:v03F0p0504*
+  ID_MODEL_FROM_DATABASE=DeskJet 885c
+@@ -957,7 +969,7 @@ usb:v03F0p2317*
+  ID_MODEL_FROM_DATABASE=LaserJet 4350
+ usb:v03F0p231D*
+- ID_MODEL_FROM_DATABASE=4 GB Flash Drive
++ ID_MODEL_FROM_DATABASE=Broadcom 2070 Bluetooth Combo
+ usb:v03F0p2402*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series
+@@ -1214,6 +1226,9 @@ usb:v03F0p3B17*
+ usb:v03F0p3C02*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 7350
++usb:v03F0p3C05*
++ ID_MODEL_FROM_DATABASE=Scanjet Professional 1000 Mobile Scanner
++
+ usb:v03F0p3C11*
+  ID_MODEL_FROM_DATABASE=PSC 1358
+@@ -2018,6 +2033,9 @@ usb:v0403p8040*
+ usb:v0403p8070*
+  ID_MODEL_FROM_DATABASE=7 Port Hub
++usb:v0403p8140*
++ ID_MODEL_FROM_DATABASE=Vehicle Explorer Interface
++
+ usb:v0403p8210*
+  ID_MODEL_FROM_DATABASE=MGTimer - MGCC (Vic) Timing System
+@@ -2036,6 +2054,12 @@ usb:v0403p8A28*
+ usb:v0403p8A98*
+  ID_MODEL_FROM_DATABASE=TIAO Multi-Protocol Adapter
++usb:v0403p9133*
++ ID_MODEL_FROM_DATABASE=CallerID
++
++usb:v0403p9135*
++ ID_MODEL_FROM_DATABASE=Rotary Pub alarm
++
+ usb:v0403p9E90*
+  ID_MODEL_FROM_DATABASE=Marvell OpenRD Base/Client
+@@ -2978,6 +3002,9 @@ usb:v040Ap6005*
+ usb:v040B*
+  ID_VENDOR_FROM_DATABASE=Weltrend Semiconductor
++usb:v040Bp0A68*
++ ID_MODEL_FROM_DATABASE=Func MS-3 gaming mouse [WT6573F MCU]
++
+ usb:v040Bp6510*
+  ID_MODEL_FROM_DATABASE=Weltrend Bar Code Reader
+@@ -3662,6 +3689,9 @@ usb:v041Ep4057*
+ usb:v041Ep4058*
+  ID_MODEL_FROM_DATABASE=Live! Cam Optia AF
++usb:v041Ep405F*
++ ID_MODEL_FROM_DATABASE=WebCam Vista (VF0330)
++
+ usb:v041Ep4061*
+  ID_MODEL_FROM_DATABASE=Live! Cam Notebook Pro [VF0400]
+@@ -5255,6 +5285,9 @@ usb:v0457p0162*
+ usb:v0457p0163*
+  ID_MODEL_FROM_DATABASE=802.11 Wireless LAN Adapter
++usb:v0457p0817*
++ ID_MODEL_FROM_DATABASE=SiS-184-ASUS-4352.17 touch panel
++
+ usb:v0457p5401*
+  ID_MODEL_FROM_DATABASE=Wireless Adapter RO80211GS-USB
+@@ -5531,6 +5564,9 @@ usb:v0458p7079*
+ usb:v0458p707F*
+  ID_MODEL_FROM_DATABASE=TVGo DVB-T03 [RTL2832]
++usb:v0458p7088*
++ ID_MODEL_FROM_DATABASE=WideCam 1050
++
+ usb:v0459*
+  ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc.
+@@ -6401,6 +6437,9 @@ usb:v045Ep0772*
+ usb:v045Ep0779*
+  ID_MODEL_FROM_DATABASE=LifeCam HD-3000
++usb:v045Ep0797*
++ ID_MODEL_FROM_DATABASE=Optical Mouse 200
++
+ usb:v045Ep930A*
+  ID_MODEL_FROM_DATABASE=ISOUSB.SYS Intel 82930 Isochronous IO Test Board
+@@ -6624,7 +6663,7 @@ usb:v046A*
+  ID_VENDOR_FROM_DATABASE=Cherry GmbH
+ usb:v046Ap0001*
+- ID_MODEL_FROM_DATABASE=My3000 Keyboard
++ ID_MODEL_FROM_DATABASE=Keyboard
+ usb:v046Ap0003*
+  ID_MODEL_FROM_DATABASE=My3000 Hub
+@@ -8504,6 +8543,9 @@ usb:v0480pA006*
+ usb:v0480pA007*
+  ID_MODEL_FROM_DATABASE=External Disk USB 3.0
++usb:v0480pD010*
++ ID_MODEL_FROM_DATABASE=External Disk 3TB
++
+ usb:v0481*
+  ID_VENDOR_FROM_DATABASE=Zenith Data Systems
+@@ -8597,6 +8639,9 @@ usb:v0483p5001*
+ usb:v0483p5710*
+  ID_MODEL_FROM_DATABASE=Joystick in FS Mode
++usb:v0483p5720*
++ ID_MODEL_FROM_DATABASE=STM microSD Flash Device
++
+ usb:v0483p5721*
+  ID_MODEL_FROM_DATABASE=Hantek DDS-3X25 Arbitrary Waveform Generator
+@@ -8693,6 +8738,12 @@ usb:v048Dp9009*
+ usb:v048Dp9135*
+  ID_MODEL_FROM_DATABASE=Zolid Mini DVB-T Stick
++usb:v048Dp9503*
++ ID_MODEL_FROM_DATABASE=ITE it9503 feature-limited DVB-T transmission chip [ccHDtv]
++
++usb:v048Dp9507*
++ ID_MODEL_FROM_DATABASE=ITE it9507 full featured DVB-T transmission chip [ccHDtv]
++
+ usb:v048F*
+  ID_VENDOR_FROM_DATABASE=Eicon Tech.
+@@ -10937,9 +10988,21 @@ usb:v04A9p3260*
+ usb:v04A9p3264*
+  ID_MODEL_FROM_DATABASE=PowerShot A1400
++usb:v04A9p3265*
++ ID_MODEL_FROM_DATABASE=Powershot ELPH 130 IS / IXUS 140
++
+ usb:v04A9p3268*
+  ID_MODEL_FROM_DATABASE=PowerShot ELPH 330 HS / IXUS 255 HS
++usb:v04A9p3271*
++ ID_MODEL_FROM_DATABASE=PowerShot A2500
++
++usb:v04A9p3276*
++ ID_MODEL_FROM_DATABASE=PowerShot SX170 IS
++
++usb:v04A9p327D*
++ ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132
++
+ usb:v04AA*
+  ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd
+@@ -11162,6 +11225,9 @@ usb:v04B0p0425*
+ usb:v04B0p0428*
+  ID_MODEL_FROM_DATABASE=D7000
++usb:v04B0p0429*
++ ID_MODEL_FROM_DATABASE=D5100
++
+ usb:v04B0p042A*
+  ID_MODEL_FROM_DATABASE=D800 (ptp)
+@@ -12806,6 +12872,9 @@ usb:v04D9p1503*
+ usb:v04D9p1603*
+  ID_MODEL_FROM_DATABASE=Keyboard
++usb:v04D9p1702*
++ ID_MODEL_FROM_DATABASE=Keyboard LKS02
++
+ usb:v04D9p2013*
+  ID_MODEL_FROM_DATABASE=Keyboard [Das Keyboard]
+@@ -12821,6 +12890,9 @@ usb:v04D9p2519*
+ usb:v04D9p2832*
+  ID_MODEL_FROM_DATABASE=1channel Telephone line recorder
++usb:v04D9p2834*
++ ID_MODEL_FROM_DATABASE=HT82A834R Audio MCU
++
+ usb:v04D9pA055*
+  ID_MODEL_FROM_DATABASE=Keyboard
+@@ -14252,6 +14324,9 @@ usb:v04F2pB354*
+ usb:v04F3*
+  ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp.
++usb:v04F3p000A*
++ ID_MODEL_FROM_DATABASE=Touchscreen
++
+ usb:v04F3p0103*
+  ID_MODEL_FROM_DATABASE=ActiveJet K-2024 Multimedia Keyboard
+@@ -15302,6 +15377,12 @@ usb:v050Dp1102*
+ usb:v050Dp1103*
+  ID_MODEL_FROM_DATABASE=F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573]
++usb:v050Dp1106*
++ ID_MODEL_FROM_DATABASE=F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
++
++usb:v050Dp1109*
++ ID_MODEL_FROM_DATABASE=F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
++
+ usb:v050Dp11F2*
+  ID_MODEL_FROM_DATABASE=ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS]
+@@ -16514,6 +16595,9 @@ usb:v054Cp0485*
+ usb:v054Cp04CB*
+  ID_MODEL_FROM_DATABASE=WALKMAN NWZ-E354
++usb:v054Cp06BB*
++ ID_MODEL_FROM_DATABASE=WALKMAN NWZ-F805
++
+ usb:v054Cp1000*
+  ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver
+@@ -47582,6 +47666,15 @@ usb:v2101*
+ usb:v2101p0201*
+  ID_MODEL_FROM_DATABASE=SIIG 4-to-2 Printer Switch
++usb:v2149*
++ ID_VENDOR_FROM_DATABASE=Advanced Silicon S.A.
++
++usb:v2149p211B*
++ ID_MODEL_FROM_DATABASE=Touchscreen Controller
++
++usb:v2149p2703*
++ ID_MODEL_FROM_DATABASE=TS58xxA/TC56xxA [CoolTouch]
++
+ usb:v2162*
+  ID_VENDOR_FROM_DATABASE=Creative (?)
+@@ -47636,6 +47729,21 @@ usb:v2227*
+ usb:v2227p3105*
+  ID_MODEL_FROM_DATABASE=SKYDATA SKD-U100
++usb:v2232*
++ ID_VENDOR_FROM_DATABASE=Silicon Motion
++
++usb:v2232p1005*
++ ID_MODEL_FROM_DATABASE=WebCam SCB-0385N
++
++usb:v2232p1028*
++ ID_MODEL_FROM_DATABASE=WebCam SC-03FFL11939N
++
++usb:v2232p1029*
++ ID_MODEL_FROM_DATABASE=WebCam SC-13HDL11939N
++
++usb:v2232p1037*
++ ID_MODEL_FROM_DATABASE=WebCam SC-03FFM12339N
++
+ usb:v2233*
+  ID_VENDOR_FROM_DATABASE=RadioShack Corporation
diff --git a/debian/patches/hwdb-update-219.patch b/debian/patches/hwdb-update-219.patch
new file mode 100644 (file)
index 0000000..8422cb1
--- /dev/null
@@ -0,0 +1,770 @@
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Sun, 5 Jan 2014 00:44:34 -0800
+Subject: hwdb: update
+
+(cherry picked from commit 479e339e5534af4c800894a553010af91f5ec8f7)
+
+Conflicts:
+       hwdb/20-sdio-vendor-model.hwdb
+---
+ hwdb/20-OUI.hwdb              |  97 +++++++++++++++++++++++++-
+ hwdb/20-pci-vendor-model.hwdb | 154 ++++++++++++++++++++++++++++++++++++++----
+ hwdb/20-usb-vendor-model.hwdb |   6 ++
+ 3 files changed, 241 insertions(+), 16 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index 92b96ae..a51a00a 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -13627,6 +13627,12 @@ OUI:40D8551E2*
+ OUI:40D8551E3*
+  ID_OUI_FROM_DATABASE=Mega Electronics Ltd
++OUI:40D8551E4*
++ ID_OUI_FROM_DATABASE=STEK Ltd
++
++OUI:40D855EE6*
++ ID_OUI_FROM_DATABASE=Narinet, Inc.
++
+ OUI:000000*
+  ID_OUI_FROM_DATABASE=XEROX CORPORATION
+@@ -35222,7 +35228,7 @@ OUI:001C4C*
+  ID_OUI_FROM_DATABASE=Petrotest Instruments
+ OUI:001C4D*
+- ID_OUI_FROM_DATABASE=Zeemote Technology Inc. (part of Aplix).
++ ID_OUI_FROM_DATABASE=Aplix IP Holdings Corporation
+ OUI:001C4E*
+  ID_OUI_FROM_DATABASE=TASA International Limited
+@@ -52606,6 +52612,9 @@ OUI:08D42B*
+ OUI:08D5C0*
+  ID_OUI_FROM_DATABASE=Seers Technology Co., Ltd
++OUI:08D833*
++ ID_OUI_FROM_DATABASE=Shenzhen RF Technology Co,.Ltd
++
+ OUI:08E5DA*
+  ID_OUI_FROM_DATABASE=NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD.
+@@ -53308,6 +53317,9 @@ OUI:1423D7*
+ OUI:142BD2*
+  ID_OUI_FROM_DATABASE=Armtel Ltd.
++OUI:142D27*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:142D8B*
+  ID_OUI_FROM_DATABASE=Incipio Technologies, Inc
+@@ -53761,6 +53773,9 @@ OUI:18C451*
+ OUI:18C8E7*
+  ID_OUI_FROM_DATABASE=Shenzhen Hualistone Technology Co.,Ltd
++OUI:18CC23*
++ ID_OUI_FROM_DATABASE=Philio Technology Corporation
++
+ OUI:18D071*
+  ID_OUI_FROM_DATABASE=DASAN SMC, Inc.
+@@ -54688,6 +54703,9 @@ OUI:2838CF*
+ OUI:2839E7*
+  ID_OUI_FROM_DATABASE=Preceno Technology Pte.Ltd.
++OUI:283B96*
++ ID_OUI_FROM_DATABASE=Cool Control LTD
++
+ OUI:283CE4*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+@@ -54907,6 +54925,9 @@ OUI:28E14C*
+ OUI:28E297*
+  ID_OUI_FROM_DATABASE=Shanghai InfoTM Microelectronics Co.,Ltd.
++OUI:28E347*
++ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
++
+ OUI:28E608*
+  ID_OUI_FROM_DATABASE=Tokheim
+@@ -55717,6 +55738,9 @@ OUI:34E0CF*
+ OUI:34E0D7*
+  ID_OUI_FROM_DATABASE=DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD
++OUI:34E2FD*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:34EF44*
+  ID_OUI_FROM_DATABASE=2Wire
+@@ -56023,6 +56047,9 @@ OUI:3C1040*
+ OUI:3C106F*
+  ID_OUI_FROM_DATABASE=ALBAHITH TECHNOLOGIES
++OUI:3C15C2*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:3C15EA*
+  ID_OUI_FROM_DATABASE=TESCOM CO., LTD.
+@@ -56227,6 +56254,9 @@ OUI:3CC99E*
+ OUI:3CCA87*
+  ID_OUI_FROM_DATABASE=Iders Incorporated
++OUI:3CCD93*
++ ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
++
+ OUI:3CCE73*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -56408,7 +56438,7 @@ OUI:40667A*
+  ID_OUI_FROM_DATABASE=mediola - connected living AG
+ OUI:406826*
+- ID_OUI_FROM_DATABASE=Thales Optronics Limited
++ ID_OUI_FROM_DATABASE=Thales UK Limited
+ OUI:406AAB*
+  ID_OUI_FROM_DATABASE=RIM
+@@ -57436,6 +57466,9 @@ OUI:5048EB*
+ OUI:504A5E*
+  ID_OUI_FROM_DATABASE=Masimo Corporation
++OUI:504A6E*
++ ID_OUI_FROM_DATABASE=NETGEAR INC.,
++
+ OUI:504F94*
+  ID_OUI_FROM_DATABASE=Loxone Electronics GmbH
+@@ -58480,6 +58513,9 @@ OUI:6045BD*
+ OUI:604616*
+  ID_OUI_FROM_DATABASE=XIAMEN VANN INTELLIGENT CO., LTD
++OUI:6047D4*
++ ID_OUI_FROM_DATABASE=FORICS Electronic Technology Co., Ltd.
++
+ OUI:604A1C*
+  ID_OUI_FROM_DATABASE=SUYIN Corporation
+@@ -58630,6 +58666,9 @@ OUI:60D30A*
+ OUI:60D819*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++OUI:60D9C7*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:60DA23*
+  ID_OUI_FROM_DATABASE=Estech Co.,Ltd
+@@ -58849,6 +58888,9 @@ OUI:6473E2*
+ OUI:647657*
+  ID_OUI_FROM_DATABASE=Innovative Security Designs
++OUI:6476BA*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:647791*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -58882,6 +58924,9 @@ OUI:6487D7*
+ OUI:6488FF*
+  ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
++OUI:648D9E*
++ ID_OUI_FROM_DATABASE=IVT Electronic Co.,Ltd
++
+ OUI:64995D*
+  ID_OUI_FROM_DATABASE=LGE
+@@ -59161,6 +59206,9 @@ OUI:687924*
+ OUI:6879ED*
+  ID_OUI_FROM_DATABASE=SHARP Corporation
++OUI:687CC8*
++ ID_OUI_FROM_DATABASE=Measurement Systems S. de R.L.
++
+ OUI:687CD5*
+  ID_OUI_FROM_DATABASE=Y Soft Corporation, a.s.
+@@ -59425,6 +59473,9 @@ OUI:6C6F18*
+ OUI:6C7039*
+  ID_OUI_FROM_DATABASE=Novar GmbH
++OUI:6C709F*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:6C71D9*
+  ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc
+@@ -59779,6 +59830,9 @@ OUI:708B78*
+ OUI:708D09*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:709383*
++ ID_OUI_FROM_DATABASE=Intelligent Optical Network High Tech CO.,LTD.
++
+ OUI:7093F8*
+  ID_OUI_FROM_DATABASE=Space Monkey, Inc.
+@@ -60166,6 +60220,9 @@ OUI:74F612*
+ OUI:74F726*
+  ID_OUI_FROM_DATABASE=Neuron Robotics
++OUI:74F85D*
++ ID_OUI_FROM_DATABASE=Berkeley Nucleonics Corp
++
+ OUI:74FDA0*
+  ID_OUI_FROM_DATABASE=Compupal (Group) Corporation
+@@ -60862,6 +60919,9 @@ OUI:7CFADF*
+ OUI:7CFE28*
+  ID_OUI_FROM_DATABASE=Salutron Inc.
++OUI:7CFF62*
++ ID_OUI_FROM_DATABASE=Huizhou Super Electron Technology Co.,Ltd.
++
+ OUI:80000B*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -61105,6 +61165,9 @@ OUI:80D019*
+ OUI:80D18B*
+  ID_OUI_FROM_DATABASE=Hangzhou I'converge Technology Co.,Ltd
++OUI:80D433*
++ ID_OUI_FROM_DATABASE=LzLabs GmbH
++
+ OUI:80D733*
+  ID_OUI_FROM_DATABASE=QSR Automations, Inc.
+@@ -61336,6 +61399,9 @@ OUI:84ACA4*
+ OUI:84AF1F*
+  ID_OUI_FROM_DATABASE=Beat System Service Co,. Ltd.
++OUI:84B59C*
++ ID_OUI_FROM_DATABASE=Juniper networks
++
+ OUI:84C2E4*
+  ID_OUI_FROM_DATABASE=Jiangsu Qinheng Co., Ltd.
+@@ -61402,6 +61468,9 @@ OUI:880355*
+ OUI:880905*
+  ID_OUI_FROM_DATABASE=MTMCommunications
++OUI:880FB6*
++ ID_OUI_FROM_DATABASE=Jabil Circuits India Pvt Ltd,-EHTP unit
++
+ OUI:881036*
+  ID_OUI_FROM_DATABASE=Panodic(ShenZhen) Electronics Limted
+@@ -62605,6 +62674,9 @@ OUI:983000*
+ OUI:983071*
+  ID_OUI_FROM_DATABASE=DAIKYUNG VASCOM
++OUI:98349D*
++ ID_OUI_FROM_DATABASE=Krauss Maffei Technologies GmbH
++
+ OUI:983571*
+  ID_OUI_FROM_DATABASE=Sub10 Systems Ltd
+@@ -63061,6 +63133,9 @@ OUI:9CCAD9*
+ OUI:9CCD82*
+  ID_OUI_FROM_DATABASE=CHENG UEI PRECISION INDUSTRY CO.,LTD
++OUI:9CD21E*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:9CD24B*
+  ID_OUI_FROM_DATABASE=zte corporation
+@@ -63358,6 +63433,9 @@ OUI:A0CEC8*
+ OUI:A0CF5B*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:A0D12A*
++ ID_OUI_FROM_DATABASE=AXPRO Technology Inc.
++
+ OUI:A0D3C1*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+@@ -64366,6 +64444,9 @@ OUI:B05B1F*
+ OUI:B05CE5*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:B061C7*
++ ID_OUI_FROM_DATABASE=Ericsson-LG Enterprise
++
+ OUI:B06563*
+  ID_OUI_FROM_DATABASE=Shanghai Railway Communication Factory
+@@ -64684,6 +64765,9 @@ OUI:B46293*
+ OUI:B462AD*
+  ID_OUI_FROM_DATABASE=raytest GmbH
++OUI:B46698*
++ ID_OUI_FROM_DATABASE=Zealabs srl
++
+ OUI:B467E9*
+  ID_OUI_FROM_DATABASE=Qingdao GoerTek Technology Co., Ltd.
+@@ -65590,6 +65674,9 @@ OUI:C098E5*
+ OUI:C09C92*
+  ID_OUI_FROM_DATABASE=COBY
++OUI:C09D26*
++ ID_OUI_FROM_DATABASE=Topicon HK Lmd.
++
+ OUI:C09F42*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -65833,6 +65920,9 @@ OUI:C45DD8*
+ OUI:C46044*
+  ID_OUI_FROM_DATABASE=Everex Electronics Limited
++OUI:C4626B*
++ ID_OUI_FROM_DATABASE=ZPT Vigantice
++
+ OUI:C462EA*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -68605,6 +68695,9 @@ OUI:EC14F6*
+ OUI:EC172F*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
++OUI:EC1766*
++ ID_OUI_FROM_DATABASE=Research Centre Module
++
+ OUI:EC1A59*
+  ID_OUI_FROM_DATABASE=Belkin International Inc.
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 6142dc8..7f833e3 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -4166,6 +4166,9 @@ pci:v00001002d00006600*
+ pci:v00001002d00006601*
+  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M]
++pci:v00001002d00006601sv0000103Csd00002100*
++ ID_MODEL_FROM_DATABASE=FirePro M4100
++
+ pci:v00001002d00006602*
+  ID_MODEL_FROM_DATABASE=Mars
+@@ -4185,10 +4188,22 @@ pci:v00001002d00006607*
+  ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M]
+ pci:v00001002d00006610*
+- ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670/R7 250]
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250]
+ pci:v00001002d00006611*
+- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570]
++ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM]
++
++pci:v00001002d00006611sv00001028sd0000210B*
++ ID_MODEL_FROM_DATABASE=Radeon R5 240 OEM
++
++pci:v00001002d00006611sv0000174Bsd00004248*
++ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
++
++pci:v00001002d00006611sv0000174Bsd0000A240*
++ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
++
++pci:v00001002d00006611sv00001B0Asd000090D3*
++ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
+ pci:v00001002d00006613*
+  ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240]
+@@ -4224,7 +4239,7 @@ pci:v00001002d00006658*
+  ID_MODEL_FROM_DATABASE=Bonaire XTX [Radeon R7 260X]
+ pci:v00001002d0000665C*
+- ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770]
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM]
+ pci:v00001002d0000665Csv00001043sd00000452*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7790 DirectCU II OC
+@@ -4235,6 +4250,12 @@ pci:v00001002d0000665Csv00001462sd00002930*
+ pci:v00001002d0000665Csv00001462sd00002932*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8770
++pci:v00001002d0000665Csv00001462sd00002934*
++ ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM
++
++pci:v00001002d0000665Csv0000148Csd00009260*
++ ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM
++
+ pci:v00001002d0000665Csv00001682sd00003310*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7790 Black Edition 2 GB
+@@ -4817,9 +4838,21 @@ pci:v00001002d00006742sv0000148Csd00006570*
+ pci:v00001002d00006742sv00001682sd00006570*
+  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++pci:v00001002d00006742sv0000174Bsd00005570*
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 5570]
++
+ pci:v00001002d00006742sv0000174Bsd00006570*
+  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
++pci:v00001002d00006742sv0000174Bsd00007570*
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7570]
++
++pci:v00001002d00006742sv0000174Bsd00008510*
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8510]
++
++pci:v00001002d00006742sv0000174Bsd00008570*
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8570]
++
+ pci:v00001002d00006742sv00001787sd00006570*
+  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
+@@ -5541,13 +5574,13 @@ pci:v00001002d00006770sv000017AAsd00003658*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7470A
+ pci:v00001002d00006771*
+- ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490]
++ ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490 / R5 235X OEM]
+ pci:v00001002d00006772*
+  ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7450A]
+ pci:v00001002d00006778*
+- ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470]
++ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM]
+ pci:v00001002d00006778sv00001019sd00000024*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7470
+@@ -5580,7 +5613,7 @@ pci:v00001002d00006778sv0000174Bsd0000E145*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7470
+ pci:v00001002d00006779*
+- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450]
++ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
+ pci:v00001002d00006779sv00001019sd00000016*
+  ID_MODEL_FROM_DATABASE=Radeon HD 6450
+@@ -5979,7 +6012,7 @@ pci:v00001002d00006831*
+  ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series]
+ pci:v00001002d00006835*
+- ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 260]
++ ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R9 255 OEM]
+ pci:v00001002d00006837*
+  ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730]
+@@ -8967,7 +9000,7 @@ pci:v00001002d0000999C*
+  ID_MODEL_FROM_DATABASE=Richland
+ pci:v00001002d0000999D*
+- ID_MODEL_FROM_DATABASE=Richland
++ ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8550D]
+ pci:v00001002d000099A0*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7520G]
+@@ -17663,6 +17696,9 @@ pci:v0000109Ed0000036Esv00001461sd00000761*
+ pci:v0000109Ed0000036Esv00001461sd00000771*
+  ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771
++pci:v0000109Ed0000036Esv00001464sd0000AA00*
++ ID_MODEL_FROM_DATABASE=iTuner Spectra8
++
+ pci:v0000109Ed0000036Esv000014F1sd00000001*
+  ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC
+@@ -27503,6 +27539,9 @@ pci:v000010ECd00005209*
+ pci:v000010ECd00005227*
+  ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader
++pci:v000010ECd00005227sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v000010ECd00005229*
+  ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader
+@@ -48170,9 +48209,18 @@ pci:v0000168Cd00000033*
+ pci:v0000168Cd00000034*
+  ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter
++pci:v0000168Cd00000034sv00001A56sd00002003*
++ ID_MODEL_FROM_DATABASE=Killer Wireless-N 1202 Half-size Mini PCIe Card
++
+ pci:v0000168Cd00000036*
+  ID_MODEL_FROM_DATABASE=QCA9565 / AR9565 Wireless Network Adapter
++pci:v0000168Cd00000037*
++ ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter
++
++pci:v0000168Cd00000037sv00001A3Bsd00002100*
++ ID_MODEL_FROM_DATABASE=AW-NB100H 802.11n Wireless Mini PCIe Card
++
+ pci:v0000168Cd0000003C*
+  ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter
+@@ -48191,6 +48239,9 @@ pci:v0000168Cd00009013*
+ pci:v0000168Cd0000FF19*
+  ID_MODEL_FROM_DATABASE=AR5006X Wireless Network Adapter
++pci:v0000168Cd0000FF1B*
++ ID_MODEL_FROM_DATABASE=AR2425 Wireless Network Adapter [AR5007EG 802.11bg]
++
+ pci:v0000168Cd0000FF1C*
+  ID_MODEL_FROM_DATABASE=AR5008 Wireless Network Adapter
+@@ -49406,6 +49457,9 @@ pci:v00001814d00003298sv0000103Csd000018EC*
+ pci:v00001814d00003592*
+  ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe
++pci:v00001814d0000359F*
++ ID_MODEL_FROM_DATABASE=RT3592 PCIe Wireless Network Adapter
++
+ pci:v00001814d00005360*
+  ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R
+@@ -49421,6 +49475,9 @@ pci:v00001814d00005390*
+ pci:v00001814d00005390sv0000103Csd00001636*
+  ID_MODEL_FROM_DATABASE=U98Z077.00 Half-size Mini PCIe Card
++pci:v00001814d00005392*
++ ID_MODEL_FROM_DATABASE=RT5392 PCIe Wireless Network Adapter
++
+ pci:v00001814d0000539F*
+  ID_MODEL_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip]
+@@ -50585,6 +50642,12 @@ pci:v00001957d00000087*
+ pci:v00001957d000000B4*
+  ID_MODEL_FROM_DATABASE=MPC8315E
++pci:v00001957d000000B6*
++ ID_MODEL_FROM_DATABASE=MPC8314E
++
++pci:v00001957d000000B6sv00001A56sd00001101*
++ ID_MODEL_FROM_DATABASE=Killer Xeno Pro Gigabit Ethernet Controller
++
+ pci:v00001957d000000C2*
+  ID_MODEL_FROM_DATABASE=MPC8379E
+@@ -50669,6 +50732,12 @@ pci:v00001957d00007011*
+ pci:v00001957d00007018*
+  ID_MODEL_FROM_DATABASE=MPC8610
++pci:v00001957d0000C006*
++ ID_MODEL_FROM_DATABASE=MPC8308
++
++pci:v00001957d0000C006sv00001A56sd00001201*
++ ID_MODEL_FROM_DATABASE=Killer E2100 Gigabit Ethernet Controller
++
+ pci:v00001958*
+  ID_VENDOR_FROM_DATABASE=Faster Technology, LLC.
+@@ -54164,6 +54233,9 @@ pci:v00008086d00000412*
+ pci:v00008086d00000416*
+  ID_MODEL_FROM_DATABASE=4th Gen Core Processor Integrated Graphics Controller
++pci:v00008086d00000416sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d0000041A*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3 Processor Integrated Graphics Controller
+@@ -54680,9 +54752,15 @@ pci:v00008086d0000095Asv00008086sd00005000*
+ pci:v00008086d0000095Asv00008086sd00005002*
+  ID_MODEL_FROM_DATABASE=Wireless-N 7265
++pci:v00008086d0000095Asv00008086sd0000500A*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00005010*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00005012*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00005020*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
+@@ -54695,6 +54773,9 @@ pci:v00008086d0000095Asv00008086sd00005090*
+ pci:v00008086d0000095Asv00008086sd00005110*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00005190*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00005400*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+@@ -54707,24 +54788,30 @@ pci:v00008086d0000095Asv00008086sd00005420*
+ pci:v00008086d0000095Asv00008086sd00005490*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00005590*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00009010*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+-pci:v00008086d0000095Asv00008086sd00009210*
++pci:v00008086d0000095Asv00008086sd00009110*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+-pci:v00008086d0000095Asv00008086sd00009410*
++pci:v00008086d0000095Asv00008086sd00009210*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+-pci:v00008086d0000095B*
+- ID_MODEL_FROM_DATABASE=Wireless 7265
++pci:v00008086d0000095Asv00008086sd00009310*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+-pci:v00008086d0000095Bsv00008086sd0000500A*
++pci:v00008086d0000095Asv00008086sd00009410*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+-pci:v00008086d0000095Bsv00008086sd00005012*
++pci:v00008086d0000095Asv00008086sd00009510*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095B*
++ ID_MODEL_FROM_DATABASE=Wireless 7265
++
+ pci:v00008086d0000095Bsv00008086sd00005200*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
+@@ -54860,6 +54947,9 @@ pci:v00008086d00000C01*
+ pci:v00008086d00000C04*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
++pci:v00008086d00000C04sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00000C05*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller
+@@ -54872,6 +54962,9 @@ pci:v00008086d00000C09*
+ pci:v00008086d00000C0C*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
++pci:v00008086d00000C0Csv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00000C46*
+  ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1
+@@ -57986,6 +58079,9 @@ pci:v00008086d00001539*
+ pci:v00008086d0000153A*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM
++pci:v00008086d0000153Asv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d0000153B*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-V
+@@ -69035,6 +69131,9 @@ pci:v00008086d00008C02*
+ pci:v00008086d00008C03*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
++pci:v00008086d00008C03sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C04*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
+@@ -69062,12 +69161,18 @@ pci:v00008086d00008C0F*
+ pci:v00008086d00008C10*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
++pci:v00008086d00008C10sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C11*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
+ pci:v00008086d00008C12*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2
++pci:v00008086d00008C12sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C13*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2
+@@ -69110,12 +69215,18 @@ pci:v00008086d00008C1F*
+ pci:v00008086d00008C20*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
++pci:v00008086d00008C20sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C21*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
+ pci:v00008086d00008C22*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller
++pci:v00008086d00008C22sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C23*
+  ID_MODEL_FROM_DATABASE=8 Series Chipset Family CHAP Counters
+@@ -69125,12 +69236,21 @@ pci:v00008086d00008C24*
+ pci:v00008086d00008C26*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1
++pci:v00008086d00008C26sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C2D*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2
++pci:v00008086d00008C2Dsv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C31*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI
++pci:v00008086d00008C31sv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C33*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family LAN Controller
+@@ -69140,6 +69260,9 @@ pci:v00008086d00008C34*
+ pci:v00008086d00008C3A*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1
++pci:v00008086d00008C3Asv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C3B*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #2
+@@ -69197,6 +69320,9 @@ pci:v00008086d00008C4E*
+ pci:v00008086d00008C4F*
+  ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller
++pci:v00008086d00008C4Fsv000017AAsd0000220E*
++ ID_MODEL_FROM_DATABASE=ThinkPad T440p
++
+ pci:v00008086d00008C50*
+  ID_MODEL_FROM_DATABASE=B85 Express LPC Controller
+diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
+index 6663820..60dbcd2 100644
+--- a/hwdb/20-usb-vendor-model.hwdb
++++ b/hwdb/20-usb-vendor-model.hwdb
+@@ -46055,6 +46055,12 @@ usb:v1B5A*
+ usb:v1B65*
+  ID_VENDOR_FROM_DATABASE=The Hong Kong Standards and Testing Centre Ltd.
++usb:v1B71*
++ ID_VENDOR_FROM_DATABASE=Fushicai
++
++usb:v1B71p3002*
++ ID_MODEL_FROM_DATABASE=USBTV007 Video Grabber [EasyCAP]
++
+ usb:v1B72*
+  ID_VENDOR_FROM_DATABASE=ATERGI TECHNOLOGY CO., LTD.
diff --git a/debian/patches/hwdb-update-361.patch b/debian/patches/hwdb-update-361.patch
new file mode 100644 (file)
index 0000000..91715d1
--- /dev/null
@@ -0,0 +1,6588 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Tue, 18 Mar 2014 16:17:51 +0100
+Subject: hwdb: update
+
+(cherry picked from commit 6080625dc833144aca0817d1b9fd23f2fbcdf5c2)
+(cherry picked from commit 40a515093204a77d4c19461c99d599b6f241d427)
+---
+ hwdb/20-OUI.hwdb              |  779 +++++++++++++++++--
+ hwdb/20-pci-vendor-model.hwdb | 1671 ++++++++++++++++++++++++++++++++++++-----
+ hwdb/20-usb-vendor-model.hwdb |  119 ++-
+ 3 files changed, 2330 insertions(+), 239 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index a51a00a..209b89e 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -13558,6 +13558,9 @@ OUI:40D8551CA*
+ OUI:40D8551CB*
+  ID_OUI_FROM_DATABASE=MG S.r.l.
++OUI:40D8551CC*
++ ID_OUI_FROM_DATABASE=NKT Photonics A/S
++
+ OUI:40D8551CD*
+  ID_OUI_FROM_DATABASE=YXLON International A/S
+@@ -13630,6 +13633,9 @@ OUI:40D8551E3*
+ OUI:40D8551E4*
+  ID_OUI_FROM_DATABASE=STEK Ltd
++OUI:40D85550D*
++ ID_OUI_FROM_DATABASE=Shenzhen MaiWei Cable TV Equipment CO.,LTD.
++
+ OUI:40D855EE6*
+  ID_OUI_FROM_DATABASE=Narinet, Inc.
+@@ -13703,7 +13709,7 @@ OUI:000016*
+  ID_OUI_FROM_DATABASE=DU PONT PIXEL SYSTEMS     .
+ OUI:000017*
+- ID_OUI_FROM_DATABASE=TEKELEC
++ ID_OUI_FROM_DATABASE=Oracle
+ OUI:000018*
+  ID_OUI_FROM_DATABASE=WEBSTER COMPUTER CORPORATION
+@@ -18029,7 +18035,7 @@ OUI:0005BB*
+  ID_OUI_FROM_DATABASE=Myspace AB
+ OUI:0005BC*
+- ID_OUI_FROM_DATABASE=Resorsys Ltd.
++ ID_OUI_FROM_DATABASE=Resource Data Management Ltd
+ OUI:0005BD*
+  ID_OUI_FROM_DATABASE=ROAX BV
+@@ -18977,7 +18983,7 @@ OUI:0006F7*
+  ID_OUI_FROM_DATABASE=ALPS Co,. Ltd.
+ OUI:0006F8*
+- ID_OUI_FROM_DATABASE=CPU Technology, Inc.
++ ID_OUI_FROM_DATABASE=The Boeing Company
+ OUI:0006F9*
+  ID_OUI_FROM_DATABASE=Mitsui Zosen Systems Research Inc.
+@@ -19337,7 +19343,7 @@ OUI:00076F*
+  ID_OUI_FROM_DATABASE=Synoptics Limited
+ OUI:000770*
+- ID_OUI_FROM_DATABASE=Locusnetworks Corporation
++ ID_OUI_FROM_DATABASE=Ubiquoss Inc
+ OUI:000771*
+  ID_OUI_FROM_DATABASE=Embedded System Corporation
+@@ -19616,7 +19622,7 @@ OUI:0007CC*
+  ID_OUI_FROM_DATABASE=Kaba Benzing GmbH
+ OUI:0007CD*
+- ID_OUI_FROM_DATABASE=NMTEL Co., Ltd.
++ ID_OUI_FROM_DATABASE=Kumoh Electronic Co, Ltd
+ OUI:0007CE*
+  ID_OUI_FROM_DATABASE=Cabletime Limited
+@@ -21584,7 +21590,7 @@ OUI:000A78*
+  ID_OUI_FROM_DATABASE=OLITEC
+ OUI:000A79*
+- ID_OUI_FROM_DATABASE=Allied Telesis K.K. corega division
++ ID_OUI_FROM_DATABASE=corega K.K
+ OUI:000A7A*
+  ID_OUI_FROM_DATABASE=Kyoritsu Electric Co., Ltd.
+@@ -22643,7 +22649,7 @@ OUI:000BDA*
+  ID_OUI_FROM_DATABASE=EyeCross Co.,Inc.
+ OUI:000BDB*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:000BDC*
+  ID_OUI_FROM_DATABASE=AKCP
+@@ -23774,7 +23780,7 @@ OUI:000D55*
+  ID_OUI_FROM_DATABASE=SANYCOM Technology Co.,Ltd
+ OUI:000D56*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:000D57*
+  ID_OUI_FROM_DATABASE=Fujitsu I-Network Systems Limited.
+@@ -25118,7 +25124,7 @@ OUI:000F1E*
+  ID_OUI_FROM_DATABASE=Chengdu KT Electric Co.of High & New Technology
+ OUI:000F1F*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:000F20*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
+@@ -26435,7 +26441,7 @@ OUI:0010D5*
+  ID_OUI_FROM_DATABASE=IMASDE CANARIAS, S.A.
+ OUI:0010D6*
+- ID_OUI_FROM_DATABASE=ITT - A/CD
++ ID_OUI_FROM_DATABASE=Exelis
+ OUI:0010D7*
+  ID_OUI_FROM_DATABASE=ARGOSY RESEARCH INC.
+@@ -26762,7 +26768,7 @@ OUI:001142*
+  ID_OUI_FROM_DATABASE=e-SMARTCOM  INC.
+ OUI:001143*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:001144*
+  ID_OUI_FROM_DATABASE=Assurance Technology Corp
+@@ -27518,7 +27524,7 @@ OUI:00123E*
+  ID_OUI_FROM_DATABASE=ERUNE technology Co., Ltd.
+ OUI:00123F*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:001240*
+  ID_OUI_FROM_DATABASE=AMOI ELECTRONICS CO.,LTD
+@@ -28439,7 +28445,7 @@ OUI:001371*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+ OUI:001372*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:001373*
+  ID_OUI_FROM_DATABASE=BLwave Electronics Co., Ltd
+@@ -28967,7 +28973,7 @@ OUI:001421*
+  ID_OUI_FROM_DATABASE=Total Wireless Technologies Pte. Ltd.
+ OUI:001422*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:001423*
+  ID_OUI_FROM_DATABASE=J-S Co. NEUROCOM
+@@ -30104,7 +30110,7 @@ OUI:00159C*
+  ID_OUI_FROM_DATABASE=B-KYUNG SYSTEM Co.,Ltd.
+ OUI:00159D*
+- ID_OUI_FROM_DATABASE=Minicom Advanced Systems ltd
++ ID_OUI_FROM_DATABASE=Tripp Lite
+ OUI:00159E*
+  ID_OUI_FROM_DATABASE=Mad Catz Interactive Inc
+@@ -30224,7 +30230,7 @@ OUI:0015C4*
+  ID_OUI_FROM_DATABASE=FLOVEL CO., LTD.
+ OUI:0015C5*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:0015C6*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -30914,7 +30920,7 @@ OUI:0016AA*
+  ID_OUI_FROM_DATABASE=Kei Communication Technology Inc.
+ OUI:0016AB*
+- ID_OUI_FROM_DATABASE=PBI-Dansensor A/S
++ ID_OUI_FROM_DATABASE=Dansensor A/S
+ OUI:0016AC*
+  ID_OUI_FROM_DATABASE=Toho Technology Corp.
+@@ -32342,7 +32348,7 @@ OUI:00188A*
+  ID_OUI_FROM_DATABASE=Infinova LLC
+ OUI:00188B*
+- ID_OUI_FROM_DATABASE=Dell ESG PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:00188C*
+  ID_OUI_FROM_DATABASE=Mobile Action Technology Inc.
+@@ -35348,7 +35354,7 @@ OUI:001C74*
+  ID_OUI_FROM_DATABASE=Syswan Technologies Inc.
+ OUI:001C75*
+- ID_OUI_FROM_DATABASE=RF Systems GmbH
++ ID_OUI_FROM_DATABASE=Segnet Ltd.
+ OUI:001C76*
+  ID_OUI_FROM_DATABASE=The Wandsworth Group Ltd
+@@ -35831,7 +35837,7 @@ OUI:001D15*
+  ID_OUI_FROM_DATABASE=Shenzhen Dolphin Electronic Co., Ltd
+ OUI:001D16*
+- ID_OUI_FROM_DATABASE=Efixo
++ ID_OUI_FROM_DATABASE=SFR
+ OUI:001D17*
+  ID_OUI_FROM_DATABASE=Digital Sky Corporation
+@@ -35957,7 +35963,7 @@ OUI:001D3F*
+  ID_OUI_FROM_DATABASE=Mitron Pty Ltd
+ OUI:001D40*
+- ID_OUI_FROM_DATABASE=Living Independently Group, Inc.
++ ID_OUI_FROM_DATABASE=Intel – GE Care Innovations LLC
+ OUI:001D41*
+  ID_OUI_FROM_DATABASE=Hardy Instruments
+@@ -35969,7 +35975,7 @@ OUI:001D43*
+  ID_OUI_FROM_DATABASE=Shenzhen G-link Digital Technology Co., Ltd.
+ OUI:001D44*
+- ID_OUI_FROM_DATABASE=Krohne
++ ID_OUI_FROM_DATABASE=KROHNE
+ OUI:001D45*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -40316,7 +40322,7 @@ OUI:0022EE*
+  ID_OUI_FROM_DATABASE=Algo Communication Products Ltd
+ OUI:0022EF*
+- ID_OUI_FROM_DATABASE=Ibis Tek, LLC
++ ID_OUI_FROM_DATABASE=iWDL Technologies
+ OUI:0022F0*
+  ID_OUI_FROM_DATABASE=3 Greens Aviation Limited
+@@ -40361,7 +40367,7 @@ OUI:0022FE*
+  ID_OUI_FROM_DATABASE=Microprocessor Designs Inc
+ OUI:0022FF*
+- ID_OUI_FROM_DATABASE=NIVIS LLC
++ ID_OUI_FROM_DATABASE=iWDL Technologies
+ OUI:002300*
+  ID_OUI_FROM_DATABASE=Cayee Computer Ltd.
+@@ -41258,7 +41264,7 @@ OUI:00242E*
+  ID_OUI_FROM_DATABASE=Datastrip Inc.
+ OUI:00242F*
+- ID_OUI_FROM_DATABASE=VirtenSys Inc
++ ID_OUI_FROM_DATABASE=Micron
+ OUI:002430*
+  ID_OUI_FROM_DATABASE=Ruby Tech Corp.
+@@ -43028,7 +43034,7 @@ OUI:002686*
+  ID_OUI_FROM_DATABASE=Quantenna Communcations, Inc.
+ OUI:002687*
+- ID_OUI_FROM_DATABASE=ALLIED TELESIS, K.K corega division.
++ ID_OUI_FROM_DATABASE=Corega K.K
+ OUI:002688*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -46118,7 +46124,7 @@ OUI:00605F*
+  ID_OUI_FROM_DATABASE=NIPPON UNISOFT CORPORATION
+ OUI:006060*
+- ID_OUI_FROM_DATABASE=DAWNING TECHNOLOGIES, INC.
++ ID_OUI_FROM_DATABASE=Data Innovations North America
+ OUI:006061*
+  ID_OUI_FROM_DATABASE=WHISTLE COMMUNICATIONS CORP.
+@@ -46621,12 +46627,18 @@ OUI:0070B0*
+ OUI:0070B3*
+  ID_OUI_FROM_DATABASE=DATA RECALL LTD.
++OUI:0071CC*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:00738D*
+  ID_OUI_FROM_DATABASE=Tinno Mobile Technology Corp
+ OUI:0073E0*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:007532*
++ ID_OUI_FROM_DATABASE=INID BV
++
+ OUI:0075E1*
+  ID_OUI_FROM_DATABASE=Ampt, LLC
+@@ -48623,7 +48635,7 @@ OUI:00A086*
+  ID_OUI_FROM_DATABASE=AMBER WAVE SYSTEMS, INC.
+ OUI:00A087*
+- ID_OUI_FROM_DATABASE=Zarlink Semiconductor Ltd.
++ ID_OUI_FROM_DATABASE=Microsemi Corporation
+ OUI:00A088*
+  ID_OUI_FROM_DATABASE=ESSENTIAL COMMUNICATIONS
+@@ -49009,6 +49021,9 @@ OUI:00AA3C*
+ OUI:00AA70*
+  ID_OUI_FROM_DATABASE=LG Electronics
++OUI:00ACE0*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:00B009*
+  ID_OUI_FROM_DATABASE=Grass Valley Group
+@@ -51550,6 +51565,9 @@ OUI:00E0FE*
+ OUI:00E0FF*
+  ID_OUI_FROM_DATABASE=SECURITY DYNAMICS TECHNOLOGIES, Inc.
++OUI:00E16D*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:00E175*
+  ID_OUI_FROM_DATABASE=AK-Systems Ltd
+@@ -51703,6 +51721,9 @@ OUI:0444A1*
+ OUI:044665*
+  ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
++OUI:04489A*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:044A50*
+  ID_OUI_FROM_DATABASE=Ramaxel Technology (Shenzhen) limited company
+@@ -51727,6 +51748,9 @@ OUI:045453*
+ OUI:0455CA*
+  ID_OUI_FROM_DATABASE=BriView (Xiamen) Corp.
++OUI:04572F*
++ ID_OUI_FROM_DATABASE=Sertel Electronics UK Ltd
++
+ OUI:04586F*
+  ID_OUI_FROM_DATABASE=Sichuan Whayer information industry Co.,LTD
+@@ -51892,6 +51916,9 @@ OUI:04E548*
+ OUI:04E662*
+  ID_OUI_FROM_DATABASE=Acroname Inc.
++OUI:04E676*
++ ID_OUI_FROM_DATABASE=AMPAK Technology Inc.
++
+ OUI:04E9E5*
+  ID_OUI_FROM_DATABASE=PJRC.COM, LLC
+@@ -52486,6 +52513,9 @@ OUI:085AE0*
+ OUI:085B0E*
+  ID_OUI_FROM_DATABASE=Fortinet, Inc.
++OUI:085DDD*
++ ID_OUI_FROM_DATABASE=Mercury Corporation
++
+ OUI:08606E*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+@@ -52504,6 +52534,9 @@ OUI:086DF2*
+ OUI:087045*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:0874F6*
++ ID_OUI_FROM_DATABASE=Winterhalter Gastronom GmbH
++
+ OUI:087572*
+  ID_OUI_FROM_DATABASE=Obelux Oy
+@@ -52573,6 +52606,9 @@ OUI:08ACA5*
+ OUI:08AF78*
+  ID_OUI_FROM_DATABASE=Totus Solutions, Inc.
++OUI:08B2A3*
++ ID_OUI_FROM_DATABASE=Cynny Italia S.r.L.
++
+ OUI:08B4CF*
+  ID_OUI_FROM_DATABASE=Abicom International
+@@ -52615,6 +52651,9 @@ OUI:08D5C0*
+ OUI:08D833*
+  ID_OUI_FROM_DATABASE=Shenzhen RF Technology Co,.Ltd
++OUI:08DF1F*
++ ID_OUI_FROM_DATABASE=Bose Corporation
++
+ OUI:08E5DA*
+  ID_OUI_FROM_DATABASE=NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD.
+@@ -52687,6 +52726,9 @@ OUI:0C191F*
+ OUI:0C1DC2*
+  ID_OUI_FROM_DATABASE=SeAH Networks
++OUI:0C2026*
++ ID_OUI_FROM_DATABASE=noax Technologies AG
++
+ OUI:0C2724*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -52756,6 +52798,9 @@ OUI:0C5CD8*
+ OUI:0C6076*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++OUI:0C63FC*
++ ID_OUI_FROM_DATABASE=Nanjing Signway Technology Co., Ltd
++
+ OUI:0C6803*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -52984,6 +53029,9 @@ OUI:1000FD*
+ OUI:1001CA*
+  ID_OUI_FROM_DATABASE=Ashley Butterworth
++OUI:1005CA*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:10090C*
+  ID_OUI_FROM_DATABASE=Janome Sewing Machine Co., Ltd.
+@@ -53008,6 +53056,9 @@ OUI:100E2B*
+ OUI:100E7E*
+  ID_OUI_FROM_DATABASE=Juniper networks
++OUI:100F18*
++ ID_OUI_FROM_DATABASE=Fu Gang Electronic(KunShan)CO.,LTD
++
+ OUI:1010B6*
+  ID_OUI_FROM_DATABASE=McCain Inc
+@@ -53158,6 +53209,9 @@ OUI:1083D2*
+ OUI:10880F*
+  ID_OUI_FROM_DATABASE=Daruma Telecomunicações e Informática S.A.
++OUI:1088CE*
++ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
++
+ OUI:108CCF*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -53317,6 +53371,9 @@ OUI:1423D7*
+ OUI:142BD2*
+  ID_OUI_FROM_DATABASE=Armtel Ltd.
++OUI:142BD6*
++ ID_OUI_FROM_DATABASE=Guangdong Appscomm Co.,Ltd
++
+ OUI:142D27*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -53329,6 +53386,9 @@ OUI:142DF5*
+ OUI:14307A*
+  ID_OUI_FROM_DATABASE=Avermetrics
++OUI:1430C6*
++ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
++
+ OUI:14358B*
+  ID_OUI_FROM_DATABASE=Mediabridge Products, LLC.
+@@ -53344,6 +53404,9 @@ OUI:14373B*
+ OUI:143AEA*
+  ID_OUI_FROM_DATABASE=Dynapower Company LLC
++OUI:143DF2*
++ ID_OUI_FROM_DATABASE=Beijing Shidai Hongyuan Network Communication Co.,Ltd
++
+ OUI:143E60*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent
+@@ -53368,6 +53431,9 @@ OUI:144C1A*
+ OUI:145412*
+  ID_OUI_FROM_DATABASE=Entis Co., Ltd.
++OUI:145645*
++ ID_OUI_FROM_DATABASE=Savitech Corp.
++
+ OUI:145A05*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -53440,6 +53506,9 @@ OUI:14B126*
+ OUI:14B1C8*
+  ID_OUI_FROM_DATABASE=InfiniWing, Inc.
++OUI:14B484*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:14B73D*
+  ID_OUI_FROM_DATABASE=ARCHEAN Technologies
+@@ -53489,7 +53558,7 @@ OUI:14EB33*
+  ID_OUI_FROM_DATABASE=BSMediasoft Co., Ltd.
+ OUI:14EDA5*
+- ID_OUI_FROM_DATABASE=Wächter GmbH Sicherheitssysteme
++ ID_OUI_FROM_DATABASE=Wächter GmbH Sicherheitssysteme
+ OUI:14EE9D*
+  ID_OUI_FROM_DATABASE=AirNav Systems LLC
+@@ -53572,6 +53641,9 @@ OUI:182032*
+ OUI:1820A6*
+  ID_OUI_FROM_DATABASE=Sage Co., Ltd.
++OUI:18227E*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:182666*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -53726,7 +53798,7 @@ OUI:18A905*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
+ OUI:18A99B*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:18AA45*
+  ID_OUI_FROM_DATABASE=Fon Technology
+@@ -53779,6 +53851,9 @@ OUI:18CC23*
+ OUI:18D071*
+  ID_OUI_FROM_DATABASE=DASAN SMC, Inc.
++OUI:18D5B6*
++ ID_OUI_FROM_DATABASE=SMG Holdings LLC
++
+ OUI:18D66A*
+  ID_OUI_FROM_DATABASE=Inmarsat
+@@ -53824,6 +53899,9 @@ OUI:18F87A*
+ OUI:18FA6F*
+  ID_OUI_FROM_DATABASE=ISC applied systems corp
++OUI:18FB7B*
++ ID_OUI_FROM_DATABASE=Dell Inc
++
+ OUI:18FC9F*
+  ID_OUI_FROM_DATABASE=Changhe Electronics Co., Ltd.
+@@ -53863,9 +53941,15 @@ OUI:1C184A*
+ OUI:1C19DE*
+  ID_OUI_FROM_DATABASE=eyevis GmbH
++OUI:1C1AC0*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:1C1B68*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:1C1CFD*
++ ID_OUI_FROM_DATABASE=Dalian Hi-Think Computer Technology, Corp
++
+ OUI:1C1D67*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
+@@ -54157,6 +54241,9 @@ OUI:201D03*
+ OUI:2021A5*
+  ID_OUI_FROM_DATABASE=LG Electronics Inc
++OUI:202564*
++ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++
+ OUI:202598*
+  ID_OUI_FROM_DATABASE=Teleview
+@@ -54202,6 +54289,9 @@ OUI:204E6B*
+ OUI:204E7F*
+  ID_OUI_FROM_DATABASE=NETGEAR
++OUI:2053CA*
++ ID_OUI_FROM_DATABASE=Risk Technology Ltd
++
+ OUI:205476*
+  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
+@@ -54211,6 +54301,9 @@ OUI:205721*
+ OUI:2059A0*
+  ID_OUI_FROM_DATABASE=Paragon Technologies Inc.
++OUI:205A00*
++ ID_OUI_FROM_DATABASE=Coval
++
+ OUI:205B5E*
+  ID_OUI_FROM_DATABASE=Shenzhen Wonhe Technology Co., Ltd
+@@ -54265,12 +54358,18 @@ OUI:20918A*
+ OUI:2091D9*
+  ID_OUI_FROM_DATABASE=I'M SPA
++OUI:209AE9*
++ ID_OUI_FROM_DATABASE=Volacomm Co., Ltd
++
+ OUI:209BA5*
+  ID_OUI_FROM_DATABASE=JIAXING GLEAD Electronics Co.,Ltd
+ OUI:20A2E7*
+  ID_OUI_FROM_DATABASE=Lee-Dickens Ltd
++OUI:20A787*
++ ID_OUI_FROM_DATABASE=Bointec Taiwan Corporation Limited
++
+ OUI:20AA25*
+  ID_OUI_FROM_DATABASE=IP-NET LLC
+@@ -54394,6 +54493,9 @@ OUI:24050F*
+ OUI:240917*
+  ID_OUI_FROM_DATABASE=Devlin Electronics Limited
++OUI:240A11*
++ ID_OUI_FROM_DATABASE=TCT Mobile Limited
++
+ OUI:240A64*
+  ID_OUI_FROM_DATABASE=AzureWaveTechnologies,Inc
+@@ -54691,9 +54793,15 @@ OUI:282CB2*
+ OUI:283152*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:2832C5*
++ ID_OUI_FROM_DATABASE=Humax.co.,ltd
++
+ OUI:283410*
+  ID_OUI_FROM_DATABASE=Enigma Diagnostics Limited
++OUI:2834A2*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:283737*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -54778,6 +54886,9 @@ OUI:2872F0*
+ OUI:287994*
+  ID_OUI_FROM_DATABASE=Realplay Digital Technology(Shenzhen) Co.,Ltd
++OUI:288023*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:28852D*
+  ID_OUI_FROM_DATABASE=Touch Networks
+@@ -55024,6 +55135,9 @@ OUI:2C3731*
+ OUI:2C3996*
+  ID_OUI_FROM_DATABASE=SAGEMCOM
++OUI:2C39C1*
++ ID_OUI_FROM_DATABASE=Ciena Corporation
++
+ OUI:2C3A28*
+  ID_OUI_FROM_DATABASE=Fagor Electrónica
+@@ -55069,6 +55183,9 @@ OUI:2C5A05*
+ OUI:2C5AA3*
+  ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD
++OUI:2C5BE1*
++ ID_OUI_FROM_DATABASE=Centripetal Networks, Inc
++
+ OUI:2C5D93*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
+@@ -55117,6 +55234,9 @@ OUI:2C8065*
+ OUI:2C8158*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd
++OUI:2C8A72*
++ ID_OUI_FROM_DATABASE=HTC Corporation
++
+ OUI:2C8BF2*
+  ID_OUI_FROM_DATABASE=Hitachi Metals America Ltd
+@@ -55135,6 +55255,9 @@ OUI:2C957F*
+ OUI:2C9717*
+  ID_OUI_FROM_DATABASE=I.C.Y. B.V.
++OUI:2C9AA4*
++ ID_OUI_FROM_DATABASE=NGI SpA
++
+ OUI:2C9E5F*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -55327,6 +55450,9 @@ OUI:3055ED*
+ OUI:3057AC*
+  ID_OUI_FROM_DATABASE=IRLAB LTD.
++OUI:3059B7*
++ ID_OUI_FROM_DATABASE=Microsoft
++
+ OUI:305D38*
+  ID_OUI_FROM_DATABASE=Beissbarth
+@@ -55387,6 +55513,9 @@ OUI:308CFB*
+ OUI:3090AB*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:30918F*
++ ID_OUI_FROM_DATABASE=Technicolor
++
+ OUI:3092F6*
+  ID_OUI_FROM_DATABASE=SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD
+@@ -55417,12 +55546,18 @@ OUI:30B5C2*
+ OUI:30C750*
+  ID_OUI_FROM_DATABASE=MIC Technology Group
++OUI:30C7AE*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:30C82A*
+  ID_OUI_FROM_DATABASE=Wi-Next s.r.l.
+ OUI:30CDA7*
+  ID_OUI_FROM_DATABASE=Samsung Electronics ITS, Printer division
++OUI:30D17E*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:30D357*
+  ID_OUI_FROM_DATABASE=Logosol, Inc.
+@@ -55462,6 +55597,9 @@ OUI:30F70D*
+ OUI:30F7C5*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:30F7D7*
++ ID_OUI_FROM_DATABASE=Thread Technology Co., Ltd
++
+ OUI:30F9ED*
+  ID_OUI_FROM_DATABASE=Sony Corporation
+@@ -55474,6 +55612,9 @@ OUI:3407FB*
+ OUI:340804*
+  ID_OUI_FROM_DATABASE=D-Link Corporation
++OUI:340AFF*
++ ID_OUI_FROM_DATABASE=Qingdao Hisense Communications Co.,Ltd
++
+ OUI:3413A8*
+  ID_OUI_FROM_DATABASE=Mediplan Limited
+@@ -55484,7 +55625,7 @@ OUI:34159E*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:3417EB*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:341A4C*
+  ID_OUI_FROM_DATABASE=SHENZHEN WEIBU ELECTRONICS CO.,LTD.
+@@ -55534,6 +55675,9 @@ OUI:344F5C*
+ OUI:344F69*
+  ID_OUI_FROM_DATABASE=EKINOPS SAS
++OUI:3451AA*
++ ID_OUI_FROM_DATABASE=JID GLOBAL
++
+ OUI:3451C9*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -55543,6 +55687,9 @@ OUI:345B11*
+ OUI:345C40*
+  ID_OUI_FROM_DATABASE=Cargt Holdings LLC
++OUI:345D10*
++ ID_OUI_FROM_DATABASE=Wytek
++
+ OUI:346178*
+  ID_OUI_FROM_DATABASE=The Boeing Company
+@@ -55573,6 +55720,9 @@ OUI:347E39*
+ OUI:348137*
+  ID_OUI_FROM_DATABASE=UNICARD SA
++OUI:3481C4*
++ ID_OUI_FROM_DATABASE=AVM GmbH
++
+ OUI:3482DE*
+  ID_OUI_FROM_DATABASE=Kayo Technology, Inc.
+@@ -55741,6 +55891,9 @@ OUI:34E0D7*
+ OUI:34E2FD*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:34E42A*
++ ID_OUI_FROM_DATABASE=Automatic Bar Controls Inc.
++
+ OUI:34EF44*
+  ID_OUI_FROM_DATABASE=2Wire
+@@ -55933,6 +56086,9 @@ OUI:38B74D*
+ OUI:38BB23*
+  ID_OUI_FROM_DATABASE=OzVision America LLC
++OUI:38BB3C*
++ ID_OUI_FROM_DATABASE=Avaya, Inc
++
+ OUI:38BC1A*
+  ID_OUI_FROM_DATABASE=Meizu technology co.,ltd
+@@ -56224,6 +56380,9 @@ OUI:3CA72B*
+ OUI:3CA9F4*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:3CAB8E*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:3CB15B*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
+@@ -56311,6 +56470,9 @@ OUI:3CF72A*
+ OUI:3CF748*
+  ID_OUI_FROM_DATABASE=Shenzhen Linsn Technology Development Co.,Ltd
++OUI:3CF808*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:3CFB96*
+  ID_OUI_FROM_DATABASE=Emcraft Systems LLC
+@@ -56341,6 +56503,9 @@ OUI:4013D9*
+ OUI:401597*
+  ID_OUI_FROM_DATABASE=Protect America, Inc.
++OUI:40167E*
++ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++
+ OUI:40169F*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
+@@ -56392,6 +56557,9 @@ OUI:404022*
+ OUI:40406B*
+  ID_OUI_FROM_DATABASE=Icomera
++OUI:4045DA*
++ ID_OUI_FROM_DATABASE=Spreadtrum Communications (Shanghai) Co., Ltd.
++
+ OUI:404A03*
+  ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
+@@ -56527,6 +56695,9 @@ OUI:40B2C8*
+ OUI:40B395*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:40B3CD*
++ ID_OUI_FROM_DATABASE=Chiyoda Electronics Co.,Ltd.
++
+ OUI:40B3FC*
+  ID_OUI_FROM_DATABASE=Logital Co. Limited
+@@ -56596,6 +56767,9 @@ OUI:40F02F*
+ OUI:40F14C*
+  ID_OUI_FROM_DATABASE=ISE Europe SPRL
++OUI:40F201*
++ ID_OUI_FROM_DATABASE=SAGEMCOM
++
+ OUI:40F2E9*
+  ID_OUI_FROM_DATABASE=IBM
+@@ -56632,6 +56806,9 @@ OUI:44184F*
+ OUI:4419B6*
+  ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
++OUI:441E91*
++ ID_OUI_FROM_DATABASE=ARVIDA Intelligent Electronics Technology  Co.,Ltd.
++
+ OUI:441EA1*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
+@@ -56776,6 +56953,9 @@ OUI:448312*
+ OUI:448500*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:4486C1*
++ ID_OUI_FROM_DATABASE=Siemens Low Voltage & Products
++
+ OUI:4487FC*
+  ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD.
+@@ -56860,6 +57040,9 @@ OUI:44D2CA*
+ OUI:44D3CA*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:44D4E0*
++ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++
+ OUI:44D63D*
+  ID_OUI_FROM_DATABASE=Talari Networks
+@@ -56920,6 +57103,9 @@ OUI:48174C*
+ OUI:481842*
+  ID_OUI_FROM_DATABASE=Shanghai Winaas Co. Equipment Co. Ltd.
++OUI:481A84*
++ ID_OUI_FROM_DATABASE=Pointer Telocation Ltd
++
+ OUI:481BD2*
+  ID_OUI_FROM_DATABASE=Intron Scientific co., ltd.
+@@ -56950,9 +57136,15 @@ OUI:4846F1*
+ OUI:4846FB*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:4851B7*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:485261*
+  ID_OUI_FROM_DATABASE=SOREEL
++OUI:485929*
++ ID_OUI_FROM_DATABASE=LG Electronics
++
+ OUI:485A3F*
+  ID_OUI_FROM_DATABASE=WISOL
+@@ -56971,6 +57163,9 @@ OUI:4860BC*
+ OUI:4861A3*
+  ID_OUI_FROM_DATABASE=Concern "Axion" JSC
++OUI:486276*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:486B91*
+  ID_OUI_FROM_DATABASE=Fleetwood Group Inc.
+@@ -56986,6 +57181,9 @@ OUI:487119*
+ OUI:48746E*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:488244*
++ ID_OUI_FROM_DATABASE=Life Fitness / Div. of Brunswick
++
+ OUI:488E42*
+  ID_OUI_FROM_DATABASE=DIGALOG GmbH
+@@ -57046,15 +57244,24 @@ OUI:48CB6E*
+ OUI:48D0CF*
+  ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
++OUI:48D18E*
++ ID_OUI_FROM_DATABASE=Metis Communication Co.,Ltd
++
+ OUI:48D224*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+ OUI:48D54C*
+  ID_OUI_FROM_DATABASE=Jeda Networks
++OUI:48D705*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:48D7FF*
+  ID_OUI_FROM_DATABASE=BLANKOM Antennentechnik GmbH
++OUI:48D855*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY
++
+ OUI:48D8FE*
+  ID_OUI_FROM_DATABASE=ClarIDy Solutions, Inc.
+@@ -57136,6 +57343,9 @@ OUI:4C0F6E*
+ OUI:4C0FC7*
+  ID_OUI_FROM_DATABASE=Earda Electronics Co.,Ltd
++OUI:4C11BF*
++ ID_OUI_FROM_DATABASE=ZHEJIANG DAHUA TECHNOLOGY CO.,LTD.
++
+ OUI:4C1480*
+  ID_OUI_FROM_DATABASE=NOREGON SYSTEMS, INC
+@@ -57178,6 +57388,9 @@ OUI:4C322D*
+ OUI:4C32D9*
+  ID_OUI_FROM_DATABASE=M Rutty Holdings Pty. Ltd.
++OUI:4C3909*
++ ID_OUI_FROM_DATABASE=HPL Electric & Power Private Limited
++
+ OUI:4C3910*
+  ID_OUI_FROM_DATABASE=Newtek Electronics co., Ltd.
+@@ -57478,9 +57691,15 @@ OUI:505663*
+ OUI:5056A8*
+  ID_OUI_FROM_DATABASE=Jolla Ltd
++OUI:5056BF*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
++
+ OUI:5057A8*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:505800*
++ ID_OUI_FROM_DATABASE=WyTec International, Inc.
++
+ OUI:505AC6*
+  ID_OUI_FROM_DATABASE=GUANGDONG SUPER TELECOM CO.,LTD.
+@@ -57601,6 +57820,9 @@ OUI:50C271*
+ OUI:50C58D*
+  ID_OUI_FROM_DATABASE=Juniper Networks
++OUI:50C7BF*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:50C971*
+  ID_OUI_FROM_DATABASE=GN Netcom A/S
+@@ -57706,6 +57928,9 @@ OUI:54271E*
+ OUI:542A9C*
+  ID_OUI_FROM_DATABASE=LSY Defense, LLC.
++OUI:542AA2*
++ ID_OUI_FROM_DATABASE=Alpha Networks Inc.
++
+ OUI:542CEA*
+  ID_OUI_FROM_DATABASE=PROTECTRON
+@@ -57739,9 +57964,15 @@ OUI:544408*
+ OUI:54466B*
+  ID_OUI_FROM_DATABASE=Shenzhen CZTIC Electronic Technology Co., Ltd
++OUI:544A00*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:544A05*
+  ID_OUI_FROM_DATABASE=wenglor sensoric gmbh
++OUI:544A16*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:5453ED*
+  ID_OUI_FROM_DATABASE=Sony Corporation
+@@ -57844,6 +58075,9 @@ OUI:54B620*
+ OUI:54BEF7*
+  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++OUI:54C80F*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:54CDA7*
+  ID_OUI_FROM_DATABASE=Fujian Shenzhou Electronic Co.,Ltd
+@@ -57886,6 +58120,12 @@ OUI:54E6FC*
+ OUI:54EAA8*
+  ID_OUI_FROM_DATABASE=Apple, Inc.
++OUI:54EE75*
++ ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd.
++
++OUI:54EF92*
++ ID_OUI_FROM_DATABASE=Shenzhen Elink Technology Co., LTD
++
+ OUI:54F5B6*
+  ID_OUI_FROM_DATABASE=ORIENTAL PACIFIC INTERNATIONAL LIMITED
+@@ -57928,12 +58168,18 @@ OUI:581CBD*
+ OUI:581D91*
+  ID_OUI_FROM_DATABASE=Advanced Mobile Telecom co.,ltd.
++OUI:581F67*
++ ID_OUI_FROM_DATABASE=Open-m technology limited
++
+ OUI:581FAA*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:581FEF*
+  ID_OUI_FROM_DATABASE=Tuttnaer LTD
++OUI:58238C*
++ ID_OUI_FROM_DATABASE=Technicolor CH USA
++
+ OUI:582EFE*
+  ID_OUI_FROM_DATABASE=Lighting Science Group
+@@ -58123,6 +58369,9 @@ OUI:58DB8D*
+ OUI:58E02C*
+  ID_OUI_FROM_DATABASE=Micro Technic A/S
++OUI:58E326*
++ ID_OUI_FROM_DATABASE=Compass Technologies Inc.
++
+ OUI:58E476*
+  ID_OUI_FROM_DATABASE=CENTRON COMMUNICATIONS TECHNOLOGIES FUJIAN CO.,LTD
+@@ -58213,6 +58462,9 @@ OUI:5C260A*
+ OUI:5C2AEF*
+  ID_OUI_FROM_DATABASE=Open Access Pty Ltd
++OUI:5C313E*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:5C3327*
+  ID_OUI_FROM_DATABASE=Spazio Italia srl
+@@ -58411,6 +58663,9 @@ OUI:5CF370*
+ OUI:5CF3FC*
+  ID_OUI_FROM_DATABASE=IBM Corp
++OUI:5CF4AB*
++ ID_OUI_FROM_DATABASE=ZyXEL Communications Corp
++
+ OUI:5CF50D*
+  ID_OUI_FROM_DATABASE=Institute of microelectronic applications
+@@ -58561,6 +58816,9 @@ OUI:60748D*
+ OUI:607688*
+  ID_OUI_FROM_DATABASE=Velodyne
++OUI:60812B*
++ ID_OUI_FROM_DATABASE=Custom Control Concepts
++
+ OUI:6083B2*
+  ID_OUI_FROM_DATABASE=GkWare e.K.
+@@ -58585,9 +58843,15 @@ OUI:608C2B*
+ OUI:608D17*
+  ID_OUI_FROM_DATABASE=Sentrus Government Systems Division, Inc
++OUI:608F5C*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:609084*
+  ID_OUI_FROM_DATABASE=DSSD Inc
++OUI:609217*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:609AA4*
+  ID_OUI_FROM_DATABASE=GVI SECURITY INC.
+@@ -58615,6 +58879,9 @@ OUI:60B3C4*
+ OUI:60B606*
+  ID_OUI_FROM_DATABASE=Phorus
++OUI:60B617*
++ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
++
+ OUI:60B933*
+  ID_OUI_FROM_DATABASE=Deutron Electronics Corp.
+@@ -58633,6 +58900,9 @@ OUI:60BD91*
+ OUI:60BEB5*
+  ID_OUI_FROM_DATABASE=Motorola Mobility LLC
++OUI:60C1CB*
++ ID_OUI_FROM_DATABASE=Fujian Great Power PLC Equipment Co.,Ltd
++
+ OUI:60C397*
+  ID_OUI_FROM_DATABASE=2Wire Inc
+@@ -58681,6 +58951,9 @@ OUI:60DE44*
+ OUI:60E00E*
+  ID_OUI_FROM_DATABASE=SHINSEI ELECTRONICS CO LTD
++OUI:60E327*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:60E956*
+  ID_OUI_FROM_DATABASE=Ayla Networks, Inc
+@@ -58753,6 +59026,9 @@ OUI:640F28*
+ OUI:641084*
+  ID_OUI_FROM_DATABASE=HEXIUM Technical Development Co., Ltd.
++OUI:641225*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:64168D*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -58966,6 +59242,9 @@ OUI:64A3CB*
+ OUI:64A769*
+  ID_OUI_FROM_DATABASE=HTC Corporation
++OUI:64A7DD*
++ ID_OUI_FROM_DATABASE=Avaya, Inc
++
+ OUI:64A837*
+  ID_OUI_FROM_DATABASE=Juni Korea Co., Ltd
+@@ -59062,6 +59341,9 @@ OUI:64E8E6*
+ OUI:64E950*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:64EAC5*
++ ID_OUI_FROM_DATABASE=SiboTech Automation Co., Ltd.
++
+ OUI:64EB8C*
+  ID_OUI_FROM_DATABASE=Seiko Epson Corporation
+@@ -59131,6 +59413,9 @@ OUI:681FD8*
+ OUI:68234B*
+  ID_OUI_FROM_DATABASE=Nihon Dengyo Kousaku
++OUI:6828BA*
++ ID_OUI_FROM_DATABASE=Dejai
++
+ OUI:682DDC*
+  ID_OUI_FROM_DATABASE=Wuhan Changjiang Electro-Communication Equipment CO.,LTD
+@@ -59188,6 +59473,9 @@ OUI:6869F2*
+ OUI:686E23*
+  ID_OUI_FROM_DATABASE=Wi3 Inc.
++OUI:686E48*
++ ID_OUI_FROM_DATABASE=Prophet Electronic Technology Corp.,Ltd
++
+ OUI:687251*
+  ID_OUI_FROM_DATABASE=Ubiquiti Networks
+@@ -59332,6 +59620,9 @@ OUI:68DB96*
+ OUI:68DCE8*
+  ID_OUI_FROM_DATABASE=PacketStorm Communications
++OUI:68DFDD*
++ ID_OUI_FROM_DATABASE=Xiaomi inc.
++
+ OUI:68E41F*
+  ID_OUI_FROM_DATABASE=Unglaube Identech GmbH
+@@ -59377,12 +59668,18 @@ OUI:6C0E0D*
+ OUI:6C0F6A*
+  ID_OUI_FROM_DATABASE=JDC Tech Co., Ltd.
++OUI:6C14F7*
++ ID_OUI_FROM_DATABASE=Erhardt+Leimer GmbH
++
+ OUI:6C15F9*
+  ID_OUI_FROM_DATABASE=Nautronix Limited
+ OUI:6C1811*
+  ID_OUI_FROM_DATABASE=Decatur Electronics
++OUI:6C198F*
++ ID_OUI_FROM_DATABASE=D-Link International
++
+ OUI:6C2056*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -59395,6 +59692,9 @@ OUI:6C23B9*
+ OUI:6C2995*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:6C2C06*
++ ID_OUI_FROM_DATABASE=OOO NPP Systemotechnika-NN
++
+ OUI:6C2E33*
+  ID_OUI_FROM_DATABASE=Accelink Technologies Co.,Ltd.
+@@ -59539,6 +59839,9 @@ OUI:6CA906*
+ OUI:6CA96F*
+  ID_OUI_FROM_DATABASE=TransPacket AS
++OUI:6CAAB3*
++ ID_OUI_FROM_DATABASE=Ruckus Wireless
++
+ OUI:6CAB4D*
+  ID_OUI_FROM_DATABASE=Digital Payment Technologies
+@@ -59608,6 +59911,9 @@ OUI:6CE983*
+ OUI:6CECA1*
+  ID_OUI_FROM_DATABASE=SHENZHEN CLOU ELECTRONICS CO. LTD.
++OUI:6CECEB*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:6CF049*
+  ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
+@@ -59623,6 +59929,9 @@ OUI:6CF97C*
+ OUI:6CFA58*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:6CFAA7*
++ ID_OUI_FROM_DATABASE=AMPAK Technology Inc.
++
+ OUI:6CFDB9*
+  ID_OUI_FROM_DATABASE=Proware Technologies Co Ltd.
+@@ -59686,6 +59995,9 @@ OUI:702F97*
+ OUI:703018*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:70305D*
++ ID_OUI_FROM_DATABASE=Ubiquoss Inc
++
+ OUI:70305E*
+  ID_OUI_FROM_DATABASE=Nanjing Zhongke Menglian Information Technology Co.,LTD
+@@ -59767,6 +60079,9 @@ OUI:7060DE*
+ OUI:706173*
+  ID_OUI_FROM_DATABASE=Calantec GmbH
++OUI:7062B8*
++ ID_OUI_FROM_DATABASE=D-Link International
++
+ OUI:706417*
+  ID_OUI_FROM_DATABASE=ORBIS TECNOLOGIA ELECTRICA S.A.
+@@ -59881,6 +60196,9 @@ OUI:70B14E*
+ OUI:70B265*
+  ID_OUI_FROM_DATABASE=Hiltron s.r.l.
++OUI:70B3D5*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see OUI36 public listing for more information.
++
+ OUI:70B599*
+  ID_OUI_FROM_DATABASE=Embedded Technologies s.r.o.
+@@ -59950,6 +60268,9 @@ OUI:70F395*
+ OUI:70F927*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:70F96D*
++ ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
++
+ OUI:70FF76*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -59965,12 +60286,18 @@ OUI:741489*
+ OUI:7415E2*
+  ID_OUI_FROM_DATABASE=Tri-Sen Systems Corporation
++OUI:7419F8*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:741E93*
+  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
+ OUI:74258A*
+  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
++OUI:7426AC*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:74273C*
+  ID_OUI_FROM_DATABASE=ChangYang Technology (Nanjing) Co., LTD
+@@ -60077,7 +60404,7 @@ OUI:747E2D*
+  ID_OUI_FROM_DATABASE=Beijing Thomson CITIC Digital Technology Co. LTD.
+ OUI:74867A*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:74882A*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+@@ -60172,6 +60499,9 @@ OUI:74D675*
+ OUI:74D850*
+  ID_OUI_FROM_DATABASE=Evrisko Systems
++OUI:74DA38*
++ ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd.
++
+ OUI:74DE2B*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+@@ -60292,6 +60622,9 @@ OUI:7831C1*
+ OUI:78324F*
+  ID_OUI_FROM_DATABASE=Millennium Group, Inc.
++OUI:783A84*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:783CE3*
+  ID_OUI_FROM_DATABASE=Kai-EE
+@@ -60319,6 +60652,9 @@ OUI:7846C4*
+ OUI:78471D*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:784859*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:78491D*
+  ID_OUI_FROM_DATABASE=The Will-Burt Company
+@@ -60391,6 +60727,9 @@ OUI:788C54*
+ OUI:788DF7*
+  ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
++OUI:78923E*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:78929C*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -60523,6 +60862,9 @@ OUI:78D38D*
+ OUI:78D5B5*
+  ID_OUI_FROM_DATABASE=NAVIELEKTRO KY
++OUI:78D66F*
++ ID_OUI_FROM_DATABASE=Aristocrat Technologies Australia Pty. Ltd.
++
+ OUI:78D6F0*
+  ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
+@@ -60736,6 +61078,9 @@ OUI:7C6C8F*
+ OUI:7C6D62*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:7C6DF8*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:7C6F06*
+  ID_OUI_FROM_DATABASE=Caterpillar Trimble Control Technologies
+@@ -60856,6 +61201,9 @@ OUI:7CCFCF*
+ OUI:7CD1C3*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:7CD30A*
++ ID_OUI_FROM_DATABASE=INVENTEC Corporation
++
+ OUI:7CD762*
+  ID_OUI_FROM_DATABASE=Freestyle Technology Pty Ltd
+@@ -60919,6 +61267,9 @@ OUI:7CFADF*
+ OUI:7CFE28*
+  ID_OUI_FROM_DATABASE=Salutron Inc.
++OUI:7CFE4E*
++ ID_OUI_FROM_DATABASE=Shenzhen Safe vision Technology Co.,LTD
++
+ OUI:7CFF62*
+  ID_OUI_FROM_DATABASE=Huizhou Super Electron Technology Co.,Ltd.
+@@ -60940,9 +61291,15 @@ OUI:8007A2*
+ OUI:800A06*
+  ID_OUI_FROM_DATABASE=COMTEC co.,ltd
++OUI:800E24*
++ ID_OUI_FROM_DATABASE=ForgetBox
++
+ OUI:801440*
+  ID_OUI_FROM_DATABASE=Sunlit System Technology Corp
++OUI:8014A8*
++ ID_OUI_FROM_DATABASE=Guangzhou V-SOLUTION Electronic Technology Co., Ltd.
++
+ OUI:8016B7*
+  ID_OUI_FROM_DATABASE=Brunel University
+@@ -60952,6 +61309,9 @@ OUI:80177D*
+ OUI:8018A7*
+  ID_OUI_FROM_DATABASE=Samsung Eletronics Co., Ltd
++OUI:801934*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:801DAA*
+  ID_OUI_FROM_DATABASE=Avaya Inc
+@@ -60994,6 +61354,9 @@ OUI:803F5D*
+ OUI:803FD6*
+  ID_OUI_FROM_DATABASE=bytes at work AG
++OUI:80414E*
++ ID_OUI_FROM_DATABASE=BBK Electronics Corp., Ltd.,
++
+ OUI:80427C*
+  ID_OUI_FROM_DATABASE=Adolf Tedsen GmbH & Co. KG
+@@ -61279,6 +61642,9 @@ OUI:843611*
+ OUI:843835*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:843838*
++ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD.
++
+ OUI:843A4B*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -61360,6 +61726,9 @@ OUI:848506*
+ OUI:848D84*
+  ID_OUI_FROM_DATABASE=Rajant Corporation
++OUI:848DC7*
++ ID_OUI_FROM_DATABASE=Cisco SPVTG
++
+ OUI:848E0C*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -61372,6 +61741,12 @@ OUI:848F69*
+ OUI:849000*
+  ID_OUI_FROM_DATABASE=Arnold & Richter Cine Technik
++OUI:84948C*
++ ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
++
++OUI:8496D8*
++ ID_OUI_FROM_DATABASE=Pace plc
++
+ OUI:8497B8*
+  ID_OUI_FROM_DATABASE=Memjet Inc.
+@@ -61399,6 +61774,9 @@ OUI:84ACA4*
+ OUI:84AF1F*
+  ID_OUI_FROM_DATABASE=Beat System Service Co,. Ltd.
++OUI:84B153*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:84B59C*
+  ID_OUI_FROM_DATABASE=Juniper networks
+@@ -61468,6 +61846,9 @@ OUI:880355*
+ OUI:880905*
+  ID_OUI_FROM_DATABASE=MTMCommunications
++OUI:880F10*
++ ID_OUI_FROM_DATABASE=Huami Information Technology Co.,Ltd.
++
+ OUI:880FB6*
+  ID_OUI_FROM_DATABASE=Jabil Circuits India Pvt Ltd,-EHTP unit
+@@ -61558,7 +61939,10 @@ OUI:88576D*
+ OUI:885A92*
+  ID_OUI_FROM_DATABASE=Cisco
+-OUI:885C4F*
++OUI:885BDD*
++ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
++
++OUI:885C47*
+  ID_OUI_FROM_DATABASE=Alcatel Lucent
+ OUI:88615A*
+@@ -61654,6 +62038,9 @@ OUI:88AE1D*
+ OUI:88B168*
+  ID_OUI_FROM_DATABASE=Delta Control GmbH
++OUI:88B1E1*
++ ID_OUI_FROM_DATABASE=AirTight Networks, Inc.
++
+ OUI:88B627*
+  ID_OUI_FROM_DATABASE=Gembird Europe BV
+@@ -62107,6 +62494,9 @@ OUI:9046B7*
+ OUI:904716*
+  ID_OUI_FROM_DATABASE=RORZE CORPORATION
++OUI:90489A*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:9049FA*
+  ID_OUI_FROM_DATABASE=Intel Corporation
+@@ -62179,6 +62569,9 @@ OUI:907A28*
+ OUI:907AF1*
+  ID_OUI_FROM_DATABASE=SNUPI Technologies
++OUI:907EBA*
++ ID_OUI_FROM_DATABASE=UTEK TECHNOLOGY (SHENZHEN) CO.,LTD
++
+ OUI:907F61*
+  ID_OUI_FROM_DATABASE=Chicony Electronics Co., Ltd.
+@@ -62197,12 +62590,12 @@ OUI:9088A2*
+ OUI:908C44*
+  ID_OUI_FROM_DATABASE=H.K ZONGMU TECHNOLOGY CO., LTD.
++OUI:908C63*
++ ID_OUI_FROM_DATABASE=GZ Weedong Networks Technology Co. , Ltd
++
+ OUI:908D1D*
+  ID_OUI_FROM_DATABASE=GH Technologies
+-OUI:908F93*
+- ID_OUI_FROM_DATABASE=MakerBot Industries
+-
+ OUI:908FCF*
+  ID_OUI_FROM_DATABASE=UNO System Co., Ltd
+@@ -62245,6 +62638,9 @@ OUI:90A7C1*
+ OUI:90AC3F*
+  ID_OUI_FROM_DATABASE=BrightSign LLC
++OUI:90AE1B*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:90B11C*
+  ID_OUI_FROM_DATABASE=Dell Inc.
+@@ -62303,7 +62699,7 @@ OUI:90DFB7*
+  ID_OUI_FROM_DATABASE=s.m.s smart microwave sensors GmbH
+ OUI:90E0F0*
+- ID_OUI_FROM_DATABASE=Harman International
++ ID_OUI_FROM_DATABASE=IEEE 1722a Working Group
+ OUI:90E2BA*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -62683,6 +63079,9 @@ OUI:983571*
+ OUI:9835B8*
+  ID_OUI_FROM_DATABASE=Assembled Products Corporation
++OUI:983713*
++ ID_OUI_FROM_DATABASE=PT.Navicom Indonesia
++
+ OUI:983B16*
+  ID_OUI_FROM_DATABASE=AMPAK Technology Inc
+@@ -62746,6 +63145,9 @@ OUI:986022*
+ OUI:9866EA*
+  ID_OUI_FROM_DATABASE=Industrial Control Communications, Inc.
++OUI:986B3D*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:986CF5*
+  ID_OUI_FROM_DATABASE=zte corporation
+@@ -62812,6 +63214,9 @@ OUI:98BC57*
+ OUI:98BC99*
+  ID_OUI_FROM_DATABASE=Edeltech Co.,Ltd.
++OUI:98BE94*
++ ID_OUI_FROM_DATABASE=IBM
++
+ OUI:98C0EB*
+  ID_OUI_FROM_DATABASE=Global Regency Ltd
+@@ -62929,6 +63334,9 @@ OUI:9C2840*
+ OUI:9C28BF*
+  ID_OUI_FROM_DATABASE=Continental Automotive Czech Republic s.r.o.
++OUI:9C28EF*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:9C2A70*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -63184,6 +63592,9 @@ OUI:9CFBF1*
+ OUI:9CFFBE*
+  ID_OUI_FROM_DATABASE=OTSL Inc.
++OUI:A002DC*
++ ID_OUI_FROM_DATABASE=Amazon Technologies Inc.
++
+ OUI:A00363*
+  ID_OUI_FROM_DATABASE=Robert Bosch Healthcare GmbH
+@@ -63205,6 +63616,9 @@ OUI:A00CA1*
+ OUI:A01290*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:A012DB*
++ ID_OUI_FROM_DATABASE=TABUCHI ELECTRIC CO.,LTD
++
+ OUI:A0133B*
+  ID_OUI_FROM_DATABASE=Copyright © HiTi Digital, Inc.
+@@ -63235,6 +63649,9 @@ OUI:A021B7*
+ OUI:A0231B*
+  ID_OUI_FROM_DATABASE=TeleComp R&D Corp.
++OUI:A02BB8*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:A02EF3*
+  ID_OUI_FROM_DATABASE=United Integrated Services Co., Led.
+@@ -63439,6 +63856,9 @@ OUI:A0D12A*
+ OUI:A0D3C1*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:A0DA92*
++ ID_OUI_FROM_DATABASE=Nanjing Glarun Atten Technology Co. Ltd.
++
+ OUI:A0DC04*
+  ID_OUI_FROM_DATABASE=Becker-Antriebe GmbH
+@@ -63502,6 +63922,9 @@ OUI:A0F450*
+ OUI:A0F459*
+  ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
++OUI:A0FC6E*
++ ID_OUI_FROM_DATABASE=Telegrafia a.s.
++
+ OUI:A0FE91*
+  ID_OUI_FROM_DATABASE=AVAT Automation GmbH
+@@ -63565,6 +63988,12 @@ OUI:A438FC*
+ OUI:A43A69*
+  ID_OUI_FROM_DATABASE=Vers Inc
++OUI:A43BFA*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
++OUI:A43D78*
++ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD
++
+ OUI:A4466B*
+  ID_OUI_FROM_DATABASE=EOC Technology
+@@ -63604,6 +64033,9 @@ OUI:A45C27*
+ OUI:A45D36*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:A46032*
++ ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD
++
+ OUI:A46706*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -63632,7 +64064,13 @@ OUI:A47C14*
+  ID_OUI_FROM_DATABASE=ChargeStorm AB
+ OUI:A47C1F*
+- ID_OUI_FROM_DATABASE=Global Microwave Systems Inc.
++ ID_OUI_FROM_DATABASE=Cobham plc
++
++OUI:A47E39*
++ ID_OUI_FROM_DATABASE=zte corporation
++
++OUI:A481EE*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
+ OUI:A4856B*
+  ID_OUI_FROM_DATABASE=Q Electronics Ltd
+@@ -63664,6 +64102,9 @@ OUI:A49B13*
+ OUI:A49EDB*
+  ID_OUI_FROM_DATABASE=AutoCrib, Inc.
++OUI:A49F85*
++ ID_OUI_FROM_DATABASE=Lyve Minds, Inc
++
+ OUI:A49F89*
+  ID_OUI_FROM_DATABASE=Shanghai Rui Rui Communication Technology Co.Ltd.
+@@ -63964,6 +64405,9 @@ OUI:A8995C*
+ OUI:A89B10*
+  ID_OUI_FROM_DATABASE=inMotion Ltd.
++OUI:A8A668*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:A8AD3D*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
+@@ -64021,6 +64465,9 @@ OUI:A8F274*
+ OUI:A8F470*
+  ID_OUI_FROM_DATABASE=Fujian Newland Communication Science Technologies Co.,Ltd.
++OUI:A8F7E0*
++ ID_OUI_FROM_DATABASE=PLANET Technology Corporation
++
+ OUI:A8F94B*
+  ID_OUI_FROM_DATABASE=Eltex Enterprise Ltd.
+@@ -64258,12 +64705,21 @@ OUI:ACA22C*
+ OUI:ACA430*
+  ID_OUI_FROM_DATABASE=Peerless AV
++OUI:ACA919*
++ ID_OUI_FROM_DATABASE=TrekStor GmbH
++
++OUI:ACA9A0*
++ ID_OUI_FROM_DATABASE=Audioengine, Ltd.
++
+ OUI:ACAB8D*
+  ID_OUI_FROM_DATABASE=Lyngso Marine A/S
+ OUI:ACB313*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:ACB859*
++ ID_OUI_FROM_DATABASE=Uniband Electronic Corp,
++
+ OUI:ACBD0B*
+  ID_OUI_FROM_DATABASE=IMAC CO.,LTD
+@@ -64375,6 +64831,9 @@ OUI:ACF97E*
+ OUI:ACFDEC*
+  ID_OUI_FROM_DATABASE=Apple, Inc
++OUI:B000B4*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:B00594*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+@@ -64465,6 +64924,9 @@ OUI:B06CBF*
+ OUI:B0750C*
+  ID_OUI_FROM_DATABASE=QA Cafe
++OUI:B0754D*
++ ID_OUI_FROM_DATABASE=Alcatel-Lucent
++
+ OUI:B075D5*
+  ID_OUI_FROM_DATABASE=ZTE Corporation
+@@ -64528,9 +64990,15 @@ OUI:B09FBA*
+ OUI:B0A10A*
+  ID_OUI_FROM_DATABASE=Pivotal Systems Corporation
++OUI:B0A37E*
++ ID_OUI_FROM_DATABASE=Qingdao Haier Electronics Co.,Ltd
++
+ OUI:B0A72A*
+  ID_OUI_FROM_DATABASE=Ensemble Designs, Inc.
++OUI:B0A737*
++ ID_OUI_FROM_DATABASE=Roku, Inc.
++
+ OUI:B0A86E*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -64597,6 +65065,9 @@ OUI:B0D09C*
+ OUI:B0D2F5*
+  ID_OUI_FROM_DATABASE=Vello Systems, Inc.
++OUI:B0D59D*
++ ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd
++
+ OUI:B0D7C5*
+  ID_OUI_FROM_DATABASE=STP KFT
+@@ -64813,6 +65284,9 @@ OUI:B499BA*
+ OUI:B49DB4*
+  ID_OUI_FROM_DATABASE=Axion Technologies Inc.
++OUI:B49EAC*
++ ID_OUI_FROM_DATABASE=Imagik Int'l Corp
++
+ OUI:B49EE6*
+  ID_OUI_FROM_DATABASE=SHENZHEN TECHNOLOGY CO LTD
+@@ -64900,6 +65374,9 @@ OUI:B4ED19*
+ OUI:B4ED54*
+  ID_OUI_FROM_DATABASE=Wohler Technologies
++OUI:B4EEB4*
++ ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
++
+ OUI:B4EED4*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -64963,6 +65440,9 @@ OUI:B8288B*
+ OUI:B829F7*
+  ID_OUI_FROM_DATABASE=Blaster Tech
++OUI:B82A72*
++ ID_OUI_FROM_DATABASE=Dell Inc
++
+ OUI:B82ADC*
+  ID_OUI_FROM_DATABASE=EFR Europäische Funk-Rundsteuerung GmbH
+@@ -65047,6 +65527,9 @@ OUI:B87424*
+ OUI:B87447*
+  ID_OUI_FROM_DATABASE=Convergence Technologies
++OUI:B875C0*
++ ID_OUI_FROM_DATABASE=PayPal, Inc.
++
+ OUI:B8763F*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -65062,6 +65545,9 @@ OUI:B8797E*
+ OUI:B87AC9*
+  ID_OUI_FROM_DATABASE=Siemens Ltd.
++OUI:B87CF2*
++ ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
++
+ OUI:B8871E*
+  ID_OUI_FROM_DATABASE=Good Mind Industries Co., Ltd.
+@@ -65152,6 +65638,9 @@ OUI:B8BB6D*
+ OUI:B8BEBF*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:B8BF83*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:B8C1A2*
+  ID_OUI_FROM_DATABASE=Dragon Path Technologies Co., Limited
+@@ -65171,7 +65660,7 @@ OUI:B8C855*
+  ID_OUI_FROM_DATABASE=Shanghai GBCOM Communication Technology Co.,Ltd.
+ OUI:B8CA3A*
+- ID_OUI_FROM_DATABASE=Dell PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:B8CD93*
+  ID_OUI_FROM_DATABASE=Penetek, Inc
+@@ -65215,6 +65704,9 @@ OUI:B8E856*
+ OUI:B8E937*
+  ID_OUI_FROM_DATABASE=Sonos, Inc.
++OUI:B8EE65*
++ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
++
+ OUI:B8EE79*
+  ID_OUI_FROM_DATABASE=YWire Technologies, Inc.
+@@ -65284,6 +65776,9 @@ OUI:BC20A4*
+ OUI:BC20BA*
+  ID_OUI_FROM_DATABASE=Inspur (Shandong) Electronic Information Co., Ltd
++OUI:BC25F0*
++ ID_OUI_FROM_DATABASE=3D Display Technologies Co., Ltd.
++
+ OUI:BC261D*
+  ID_OUI_FROM_DATABASE=HONG KONG TECON TECHNOLOGY
+@@ -65311,6 +65806,9 @@ OUI:BC305B*
+ OUI:BC307D*
+  ID_OUI_FROM_DATABASE=Wistron Neweb Corp.
++OUI:BC3400*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:BC35E5*
+  ID_OUI_FROM_DATABASE=Hydro Systems Company
+@@ -65419,6 +65917,9 @@ OUI:BC8B55*
+ OUI:BC8CCD*
+  ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co.,LTD.
++OUI:BC8D0E*
++ ID_OUI_FROM_DATABASE=Alcatel-Lucent
++
+ OUI:BC926B*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -65572,6 +66073,9 @@ OUI:C038F9*
+ OUI:C03B8F*
+  ID_OUI_FROM_DATABASE=Minicom Digital Signage
++OUI:C03D46*
++ ID_OUI_FROM_DATABASE=Shanghai Mochui Network Technology Co., Ltd
++
+ OUI:C03E0F*
+  ID_OUI_FROM_DATABASE=BSkyB Ltd
+@@ -65602,6 +66106,9 @@ OUI:C04A00*
+ OUI:C04DF7*
+  ID_OUI_FROM_DATABASE=SERELEC
++OUI:C056E3*
++ ID_OUI_FROM_DATABASE=Hangzhou Hikvision Digital Technology Co.,Ltd.
++
+ OUI:C057BC*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
+@@ -65614,6 +66121,9 @@ OUI:C05E6F*
+ OUI:C05E79*
+  ID_OUI_FROM_DATABASE=SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD
++OUI:C06118*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:C0626B*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -65794,6 +66304,9 @@ OUI:C40415*
+ OUI:C40528*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++OUI:C4084A*
++ ID_OUI_FROM_DATABASE=Alcatel-Lucent
++
+ OUI:C40938*
+  ID_OUI_FROM_DATABASE=Fujian Star-net Communication Co., Ltd
+@@ -65848,6 +66361,9 @@ OUI:C4291D*
+ OUI:C42C03*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:C4346B*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:C436DA*
+  ID_OUI_FROM_DATABASE=Rusteletech Ltd.
+@@ -65938,6 +66454,9 @@ OUI:C467B5*
+ OUI:C46AB7*
+  ID_OUI_FROM_DATABASE=Xiaomi Technology,Inc.
++OUI:C46BB4*
++ ID_OUI_FROM_DATABASE=myIDkey
++
+ OUI:C46DF1*
+  ID_OUI_FROM_DATABASE=DataGravity
+@@ -65983,6 +66502,9 @@ OUI:C48508*
+ OUI:C488E5*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:C4913A*
++ ID_OUI_FROM_DATABASE=Shenzhen Sanland Electronic Co., ltd.
++
+ OUI:C49300*
+  ID_OUI_FROM_DATABASE=8Devices
+@@ -66025,6 +66547,9 @@ OUI:C4C755*
+ OUI:C4C919*
+  ID_OUI_FROM_DATABASE=Energy Imports Ltd
++OUI:C4C9EC*
++ ID_OUI_FROM_DATABASE=D&D GROUP sp. z o.o.
++
+ OUI:C4CAD9*
+  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
+@@ -66113,7 +66638,7 @@ OUI:C81E8E*
+  ID_OUI_FROM_DATABASE=ADV Security (S) Pte Ltd
+ OUI:C81F66*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:C8208E*
+  ID_OUI_FROM_DATABASE=Storagedata
+@@ -66127,6 +66652,9 @@ OUI:C82A14*
+ OUI:C82E94*
+  ID_OUI_FROM_DATABASE=Halfa Enterprise Co., Ltd.
++OUI:C83168*
++ ID_OUI_FROM_DATABASE=eZEX corporation
++
+ OUI:C83232*
+  ID_OUI_FROM_DATABASE=Hunting Innova
+@@ -66238,6 +66766,9 @@ OUI:C89C1D*
+ OUI:C89CDC*
+  ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD.
++OUI:C89F1D*
++ ID_OUI_FROM_DATABASE=SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD
++
+ OUI:C89F42*
+  ID_OUI_FROM_DATABASE=VDII Innovation AB
+@@ -66274,6 +66805,9 @@ OUI:C8B373*
+ OUI:C8B5B7*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:C8BA94*
++ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD.
++
+ OUI:C8BBD3*
+  ID_OUI_FROM_DATABASE=Embrane
+@@ -66316,6 +66850,9 @@ OUI:C8D3A3*
+ OUI:C8D429*
+  ID_OUI_FROM_DATABASE=Muehlbauer AG
++OUI:C8D590*
++ ID_OUI_FROM_DATABASE=FLIGHT DATA SYSTEMS
++
+ OUI:C8D5FE*
+  ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd
+@@ -66337,6 +66874,9 @@ OUI:C8E0EB*
+ OUI:C8E1A7*
+  ID_OUI_FROM_DATABASE=Vertu Corporation Limited
++OUI:C8E42F*
++ ID_OUI_FROM_DATABASE=Technical Research Design and Development
++
+ OUI:C8EE08*
+  ID_OUI_FROM_DATABASE=TANGTOP TECHNOLOGY CO.,LTD
+@@ -66358,6 +66898,9 @@ OUI:C8F386*
+ OUI:C8F406*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:C8F650*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:C8F68D*
+  ID_OUI_FROM_DATABASE=S.E.TECHNOLOGIES LIMITED
+@@ -66379,6 +66922,9 @@ OUI:C8FB26*
+ OUI:C8FE30*
+  ID_OUI_FROM_DATABASE=Bejing DAYO Mobile Communication Technology Ltd.
++OUI:C8FF77*
++ ID_OUI_FROM_DATABASE=Dyson Limited
++
+ OUI:CC0080*
+  ID_OUI_FROM_DATABASE=BETTINI SRL
+@@ -66394,6 +66940,9 @@ OUI:CC051B*
+ OUI:CC07AB*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:CC07E4*
++ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
++
+ OUI:CC08E0*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -66574,6 +67123,9 @@ OUI:CC9E00*
+ OUI:CC9F35*
+  ID_OUI_FROM_DATABASE=Transbit Sp. z o.o.
++OUI:CCA0E5*
++ ID_OUI_FROM_DATABASE=DZG Metering GmbH
++
+ OUI:CCA374*
+  ID_OUI_FROM_DATABASE=Guangdong Guanglian Electronic Technology Co.Ltd
+@@ -66595,6 +67147,9 @@ OUI:CCB3F8*
+ OUI:CCB55A*
+  ID_OUI_FROM_DATABASE=Fraunhofer ITWM
++OUI:CCB691*
++ ID_OUI_FROM_DATABASE=NECMagnusCommunications
++
+ OUI:CCB888*
+  ID_OUI_FROM_DATABASE=AnB Securite s.a.
+@@ -66610,6 +67165,9 @@ OUI:CCBE71*
+ OUI:CCC104*
+  ID_OUI_FROM_DATABASE=Applied Technical Systems
++OUI:CCC3EA*
++ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
++
+ OUI:CCC50A*
+  ID_OUI_FROM_DATABASE=SHENZHEN DAJIAHAO TECHNOLOGY CO.,LTD
+@@ -66643,6 +67201,9 @@ OUI:CCD811*
+ OUI:CCD9E9*
+  ID_OUI_FROM_DATABASE=SCR Engineers Ltd.
++OUI:CCE1D5*
++ ID_OUI_FROM_DATABASE=Buffalo Inc.
++
+ OUI:CCE798*
+  ID_OUI_FROM_DATABASE=My Social Stuff
+@@ -66778,6 +67339,12 @@ OUI:D059C3*
+ OUI:D05A0F*
+  ID_OUI_FROM_DATABASE=I-BT DIGITAL CO.,LTD
++OUI:D05AF1*
++ ID_OUI_FROM_DATABASE=Shenzhen Pulier Tech CO.,Ltd
++
++OUI:D05FB8*
++ ID_OUI_FROM_DATABASE=Texas Instruments
++
+ OUI:D05FCE*
+  ID_OUI_FROM_DATABASE=Hitachi Data Systems
+@@ -66799,6 +67366,9 @@ OUI:D0699E*
+ OUI:D069D0*
+  ID_OUI_FROM_DATABASE=Verto Medical Solutions, LLC
++OUI:D072DC*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:D0737F*
+  ID_OUI_FROM_DATABASE=Mini-Circuits
+@@ -66811,6 +67381,9 @@ OUI:D073D5*
+ OUI:D075BE*
+  ID_OUI_FROM_DATABASE=Reno A&E
++OUI:D07650*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:D07AB5*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+@@ -66895,6 +67468,9 @@ OUI:D0C42F*
+ OUI:D0C789*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:D0C7C0*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:D0CDE1*
+  ID_OUI_FROM_DATABASE=Scientech Electronics
+@@ -67018,6 +67594,9 @@ OUI:D41F0C*
+ OUI:D4206D*
+  ID_OUI_FROM_DATABASE=HTC Corporation
++OUI:D42122*
++ ID_OUI_FROM_DATABASE=Sercomm Corporation
++
+ OUI:D4223F*
+  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
+@@ -67099,6 +67678,9 @@ OUI:D464F7*
+ OUI:D466A8*
+  ID_OUI_FROM_DATABASE=Riedo Networks GmbH
++OUI:D46761*
++ ID_OUI_FROM_DATABASE=SAHAB TECHNOLOGY
++
+ OUI:D467E7*
+  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
+@@ -67168,6 +67750,9 @@ OUI:D49524*
+ OUI:D496DF*
+  ID_OUI_FROM_DATABASE=SUNGJIN C&T CO.,LTD
++OUI:D4970B*
++ ID_OUI_FROM_DATABASE=XIAOMI CORPORATION
++
+ OUI:D49A20*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -67207,6 +67792,9 @@ OUI:D4AE52*
+ OUI:D4B110*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:D4B43E*
++ ID_OUI_FROM_DATABASE=Messcomp Datentechnik GmbH
++
+ OUI:D4BED9*
+  ID_OUI_FROM_DATABASE=Dell Inc
+@@ -67237,6 +67825,9 @@ OUI:D4CBAF*
+ OUI:D4CEB8*
+  ID_OUI_FROM_DATABASE=Enatel LTD
++OUI:D4CFF9*
++ ID_OUI_FROM_DATABASE=Shenzhen Sen5 Technology Co., Ltd.
++
+ OUI:D4D184*
+  ID_OUI_FROM_DATABASE=ADB Broadband Italia
+@@ -67258,6 +67849,9 @@ OUI:D4D919*
+ OUI:D4DF57*
+  ID_OUI_FROM_DATABASE=Alpinion Medical Systems
++OUI:D4E08E*
++ ID_OUI_FROM_DATABASE=ValueHD Corporation
++
+ OUI:D4E32C*
+  ID_OUI_FROM_DATABASE=S. Siedle & Sohne
+@@ -67375,6 +67969,9 @@ OUI:D84606*
+ OUI:D8490B*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:D8492F*
++ ID_OUI_FROM_DATABASE=CANON INC.
++
+ OUI:D84B2A*
+  ID_OUI_FROM_DATABASE=Cognitas Technologies, Inc.
+@@ -67397,7 +67994,7 @@ OUI:D85D84*
+  ID_OUI_FROM_DATABASE=CAx soft GmbH
+ OUI:D86194*
+- ID_OUI_FROM_DATABASE=Objetivos y Sevicios de Valor Añadido
++ ID_OUI_FROM_DATABASE=Objetivos y Sevicios de Valor Añadido
+ OUI:D862DB*
+  ID_OUI_FROM_DATABASE=Eno Inc.
+@@ -67438,6 +68035,9 @@ OUI:D87988*
+ OUI:D87CDD*
+  ID_OUI_FROM_DATABASE=SANIX INCORPORATED
++OUI:D87EB1*
++ ID_OUI_FROM_DATABASE=x.o.ware, inc.
++
+ OUI:D881CE*
+  ID_OUI_FROM_DATABASE=AHN INC.
+@@ -67462,6 +68062,9 @@ OUI:D8973B*
+ OUI:D89760*
+  ID_OUI_FROM_DATABASE=C2 Development, Inc.
++OUI:D8977C*
++ ID_OUI_FROM_DATABASE=Grey Innovation
++
+ OUI:D89D67*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+@@ -67525,6 +68128,9 @@ OUI:D8C7C8*
+ OUI:D8C99D*
+  ID_OUI_FROM_DATABASE=EA DISPLAY LIMITED
++OUI:D8CF9C*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:D8D1CB*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -67555,6 +68161,9 @@ OUI:D8DD5F*
+ OUI:D8DDFD*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:D8DECE*
++ ID_OUI_FROM_DATABASE=ISUNG CO.,LTD
++
+ OUI:D8DF0D*
+  ID_OUI_FROM_DATABASE=beroNet GmbH
+@@ -67660,6 +68269,9 @@ OUI:DC3350*
+ OUI:DC37D2*
+  ID_OUI_FROM_DATABASE=Hunan HKT Electronic Technology Co., Ltd
++OUI:DC38E1*
++ ID_OUI_FROM_DATABASE=Juniper networks
++
+ OUI:DC3A5E*
+  ID_OUI_FROM_DATABASE=Roku, Inc
+@@ -67693,6 +68305,9 @@ OUI:DC5E36*
+ OUI:DC647C*
+  ID_OUI_FROM_DATABASE=C.R.S. iiMotion GmbH
++OUI:DC663A*
++ ID_OUI_FROM_DATABASE=Apacer Technology Inc.
++
+ OUI:DC6F00*
+  ID_OUI_FROM_DATABASE=Livescribe, Inc.
+@@ -67816,6 +68431,9 @@ OUI:DCE71C*
+ OUI:DCF05D*
+  ID_OUI_FROM_DATABASE=Letta Teknoloji
++OUI:DCF110*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:DCF755*
+  ID_OUI_FROM_DATABASE=SITRONIK
+@@ -67939,6 +68557,9 @@ OUI:E063E5*
+ OUI:E064BB*
+  ID_OUI_FROM_DATABASE=DigiView S.r.l.
++OUI:E06678*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:E067B3*
+  ID_OUI_FROM_DATABASE=C-Data Technology Co., Ltd
+@@ -68071,6 +68692,9 @@ OUI:E0CA94*
+ OUI:E0CB4E*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++OUI:E0CBEE*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:E0CEC3*
+  ID_OUI_FROM_DATABASE=ASKEY COMPUTER CORP
+@@ -68152,6 +68776,9 @@ OUI:E40439*
+ OUI:E4115B*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:E41218*
++ ID_OUI_FROM_DATABASE=ShenZhen Rapoo Technology Co., Ltd.
++
+ OUI:E4121D*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -68341,6 +68968,9 @@ OUI:E4C806*
+ OUI:E4CE8F*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:E4D332*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:E4D3F1*
+  ID_OUI_FROM_DATABASE=Cisco
+@@ -68371,6 +69001,9 @@ OUI:E4F365*
+ OUI:E4F3E3*
+  ID_OUI_FROM_DATABASE=Shanghai iComhome Co.,Ltd.
++OUI:E4F4C6*
++ ID_OUI_FROM_DATABASE=NETGEAR
++
+ OUI:E4F7A1*
+  ID_OUI_FROM_DATABASE=Datafox GmbH
+@@ -68671,6 +69304,9 @@ OUI:E8EADA*
+ OUI:E8EDF3*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:E8EF89*
++ ID_OUI_FROM_DATABASE=OPMEX Tech.
++
+ OUI:E8F1B0*
+  ID_OUI_FROM_DATABASE=SAGEMCOM SAS
+@@ -68719,6 +69355,9 @@ OUI:EC2AF0*
+ OUI:EC2C49*
+  ID_OUI_FROM_DATABASE=University of Tokyo
++OUI:EC2E4E*
++ ID_OUI_FROM_DATABASE=HITACHI-LG DATA STORAGE INC
++
+ OUI:EC3091*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -68881,6 +69520,9 @@ OUI:ECE09B*
+ OUI:ECE1A9*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:ECE512*
++ ID_OUI_FROM_DATABASE=tado GmbH
++
+ OUI:ECE555*
+  ID_OUI_FROM_DATABASE=Hirschmann Automation
+@@ -68909,7 +69551,7 @@ OUI:ECF35B*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+ OUI:ECF4BB*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:ECF72B*
+  ID_OUI_FROM_DATABASE=HD DIGITAL TECH CO., LTD.
+@@ -68948,7 +69590,7 @@ OUI:F01C13*
+  ID_OUI_FROM_DATABASE=LG Electronics
+ OUI:F01FAF*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:F0219D*
+  ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd.
+@@ -69085,6 +69727,9 @@ OUI:F08A28*
+ OUI:F08BFE*
+  ID_OUI_FROM_DATABASE=COSTEL.,CO.LTD
++OUI:F08CFB*
++ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
++
+ OUI:F08EDB*
+  ID_OUI_FROM_DATABASE=VeloCloud Networks
+@@ -69241,6 +69886,9 @@ OUI:F4044C*
+ OUI:F4068D*
+  ID_OUI_FROM_DATABASE=devolo AG
++OUI:F406A5*
++ ID_OUI_FROM_DATABASE=Hangzhou Bianfeng Networking Technology Co., Ltd.
++
+ OUI:F40B93*
+  ID_OUI_FROM_DATABASE=Research In Motion
+@@ -69427,6 +70075,9 @@ OUI:F4B7E2*
+ OUI:F4BD7C*
+  ID_OUI_FROM_DATABASE=Chengdu jinshi communication Co., LTD
++OUI:F4C447*
++ ID_OUI_FROM_DATABASE=Coagent International Enterprise Limited
++
+ OUI:F4C6D7*
+  ID_OUI_FROM_DATABASE=blackned GmbH
+@@ -69478,6 +70129,9 @@ OUI:F4F15A*
+ OUI:F4F5A5*
+  ID_OUI_FROM_DATABASE=Nokia corporation
++OUI:F4F5E8*
++ ID_OUI_FROM_DATABASE=Google
++
+ OUI:F4F951*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -69502,6 +70156,9 @@ OUI:F80BD0*
+ OUI:F80CF3*
+  ID_OUI_FROM_DATABASE=LG Electronics
++OUI:F80D43*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
++
+ OUI:F80DEA*
+  ID_OUI_FROM_DATABASE=ZyCast Technology Inc.
+@@ -69586,6 +70243,9 @@ OUI:F8472D*
+ OUI:F84897*
+  ID_OUI_FROM_DATABASE=Hitachi, Ltd.
++OUI:F84A73*
++ ID_OUI_FROM_DATABASE=EUMTECH CO., LTD
++
+ OUI:F84A7F*
+  ID_OUI_FROM_DATABASE=Innometriks Inc
+@@ -69622,6 +70282,12 @@ OUI:F85F2A*
+ OUI:F862AA*
+  ID_OUI_FROM_DATABASE=xn systems
++OUI:F86601*
++ ID_OUI_FROM_DATABASE=Suzhou Chi-tek information technology Co., Ltd
++
++OUI:F866D1*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
++
+ OUI:F866F2*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -69710,13 +70376,13 @@ OUI:F8AC6D*
+  ID_OUI_FROM_DATABASE=Deltenna Ltd
+ OUI:F8B156*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:F8B599*
+  ID_OUI_FROM_DATABASE=Guangzhou CHNAVS Digital Technology Co.,Ltd
+ OUI:F8BC12*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:F8C001*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -69764,7 +70430,7 @@ OUI:F8DB7F*
+  ID_OUI_FROM_DATABASE=HTC Corporation
+ OUI:F8DB88*
+- ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
++ ID_OUI_FROM_DATABASE=Dell Inc
+ OUI:F8DC7A*
+  ID_OUI_FROM_DATABASE=Variscite LTD
+@@ -69892,6 +70558,9 @@ OUI:FC1FC0*
+ OUI:FC229C*
+  ID_OUI_FROM_DATABASE=Han Kyung I Net Co.,Ltd.
++OUI:FC2325*
++ ID_OUI_FROM_DATABASE=EosTek (Shenzhen) Co., Ltd.
++
+ OUI:FC253F*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -69928,6 +70597,9 @@ OUI:FC455F*
+ OUI:FC48EF*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:FC4AE9*
++ ID_OUI_FROM_DATABASE=Castlenet Technology Inc.
++
+ OUI:FC4B1C*
+  ID_OUI_FROM_DATABASE=INTERSENSOR S.R.L.
+@@ -70030,6 +70702,9 @@ OUI:FCBBA1*
+ OUI:FCC23D*
+  ID_OUI_FROM_DATABASE=Atmel Corporation
++OUI:FCC2DE*
++ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
++
+ OUI:FCC734*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -70048,6 +70723,9 @@ OUI:FCD4F2*
+ OUI:FCD4F6*
+  ID_OUI_FROM_DATABASE=Messana Air.Ray Conditioning s.r.l.
++OUI:FCD5D9*
++ ID_OUI_FROM_DATABASE=Shenzhen SDMC Technology Co., Ltd.
++
+ OUI:FCD6BD*
+  ID_OUI_FROM_DATABASE=Robert Bosch GmbH
+@@ -70060,6 +70738,9 @@ OUI:FCDB96*
+ OUI:FCDD55*
+  ID_OUI_FROM_DATABASE=Shenzhen WeWins wireless Co.,Ltd
++OUI:FCE186*
++ ID_OUI_FROM_DATABASE=A3M Co., LTD
++
+ OUI:FCE192*
+  ID_OUI_FROM_DATABASE=Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd
+@@ -70078,12 +70759,18 @@ OUI:FCE892*
+ OUI:FCEDB9*
+  ID_OUI_FROM_DATABASE=Arrayent
++OUI:FCF152*
++ ID_OUI_FROM_DATABASE=Sony Corporation
++
+ OUI:FCF1CD*
+  ID_OUI_FROM_DATABASE=OPTEX-FA CO.,LTD.
+ OUI:FCF528*
+  ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
++OUI:FCF647*
++ ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
++
+ OUI:FCF8AE*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 7f833e3..371a685 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -890,6 +890,9 @@ pci:v00001000d0000005Bsv00001000sd00009295*
+ pci:v00001000d0000005Bsv00001014sd0000040B*
+  ID_MODEL_FROM_DATABASE=ServeRAID M5110 SAS/SATA Controller
++pci:v00001000d0000005Bsv00001014sd0000040C*
++ ID_MODEL_FROM_DATABASE=ServeRAID M5120 SAS/SATA Controller
++
+ pci:v00001000d0000005Bsv00001014sd00000412*
+  ID_MODEL_FROM_DATABASE=ServeRAID M5110e SAS/SATA Controller
+@@ -917,6 +920,9 @@ pci:v00001000d0000005Bsv00001028sd00001F37*
+ pci:v00001000d0000005Bsv00001028sd00001F38*
+  ID_MODEL_FROM_DATABASE=PERC H710 Mini (for monolithics)
++pci:v00001000d0000005Bsv000015D9sd00000690*
++ ID_MODEL_FROM_DATABASE=LSI MegaRAID ROMB
++
+ pci:v00001000d0000005Bsv00008086sd00003510*
+  ID_MODEL_FROM_DATABASE=RMS25PB080 RAID Controller
+@@ -950,6 +956,12 @@ pci:v00001000d0000005Dsv00001028sd00001F49*
+ pci:v00001000d0000005Dsv00001028sd00001F4A*
+  ID_MODEL_FROM_DATABASE=PERC H730 Mini (for blades)
++pci:v00001000d0000005Dsv000017AAsd00001052*
++ ID_MODEL_FROM_DATABASE=ThinkServer RAID 720i
++
++pci:v00001000d0000005Dsv000017AAsd00001053*
++ ID_MODEL_FROM_DATABASE=ThinkServer RAID 720ix
++
+ pci:v00001000d0000005E*
+  ID_MODEL_FROM_DATABASE=SAS1066 PCI-X Fusion-MPT SAS
+@@ -1163,6 +1175,9 @@ pci:v00001000d00000073sv000015D9sd00000400*
+ pci:v00001000d00000073sv00001734sd00001177*
+  ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607)
++pci:v00001000d00000073sv000017AAsd00001051*
++ ID_MODEL_FROM_DATABASE=ThinkServer RAID 510i
++
+ pci:v00001000d00000073sv00008086sd0000350D*
+  ID_MODEL_FROM_DATABASE=RMS2AF040 RAID Controller
+@@ -1598,6 +1613,9 @@ pci:v00001000d00001960sv00008086sd00000520*
+ pci:v00001000d00001960sv00008086sd00000523*
+  ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCS16
++pci:v00001000d00003050*
++ ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2
++
+ pci:v00001000d00006001*
+  ID_MODEL_FROM_DATABASE=DX1 Multiformat Broadcast HD/SD Encoder/Decoder
+@@ -1665,7 +1683,7 @@ pci:v00001002d0000130E*
+  ID_MODEL_FROM_DATABASE=Kaveri
+ pci:v00001002d0000130F*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 200 Series]
+ pci:v00001002d00001310*
+  ID_MODEL_FROM_DATABASE=Kaveri
+@@ -1673,9 +1691,12 @@ pci:v00001002d00001310*
+ pci:v00001002d00001311*
+  ID_MODEL_FROM_DATABASE=Kaveri
+-pci:v00001002d00001313*
++pci:v00001002d00001312*
+  ID_MODEL_FROM_DATABASE=Kaveri
++pci:v00001002d00001313*
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 200 Series]
++
+ pci:v00001002d00001314*
+  ID_MODEL_FROM_DATABASE=Wrestler HDMI Audio
+@@ -1686,6 +1707,9 @@ pci:v00001002d00001315*
+  ID_MODEL_FROM_DATABASE=Kaveri
+ pci:v00001002d00001316*
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 200 Series]
++
++pci:v00001002d00001317*
+  ID_MODEL_FROM_DATABASE=Kaveri
+ pci:v00001002d0000131B*
+@@ -1694,6 +1718,9 @@ pci:v00001002d0000131B*
+ pci:v00001002d0000131C*
+  ID_MODEL_FROM_DATABASE=Kaveri
++pci:v00001002d0000131D*
++ ID_MODEL_FROM_DATABASE=Kaveri
++
+ pci:v00001002d00001714*
+  ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
+@@ -4176,20 +4203,41 @@ pci:v00001002d00006603*
+  ID_MODEL_FROM_DATABASE=Mars
+ pci:v00001002d00006604*
+- ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M265]
++ ID_MODEL_FROM_DATABASE=Opal XT [Radeon R7 M265]
+ pci:v00001002d00006605*
+- ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M260]
++ ID_MODEL_FROM_DATABASE=Opal PRO [Radeon R7 M260]
+ pci:v00001002d00006606*
+  ID_MODEL_FROM_DATABASE=Mars XTX [Radeon HD 8790M]
+ pci:v00001002d00006607*
+- ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M]
++ ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M / R5 M240]
+ pci:v00001002d00006610*
+  ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250]
++pci:v00001002d00006610sv00001019sd00000030*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8670
++
++pci:v00001002d00006610sv00001028sd00002120*
++ ID_MODEL_FROM_DATABASE=Radeon R7 250
++
++pci:v00001002d00006610sv00001028sd00002322*
++ ID_MODEL_FROM_DATABASE=Radeon R7 250
++
++pci:v00001002d00006610sv00001462sd00002910*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8670
++
++pci:v00001002d00006610sv00001462sd00002911*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8670
++
++pci:v00001002d00006610sv00001642sd00003C81*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8670
++
++pci:v00001002d00006610sv00001642sd00003C91*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8670
++
+ pci:v00001002d00006611*
+  ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM]
+@@ -4278,13 +4326,13 @@ pci:v00001002d00006663sv00001025sd00000846*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8570A
+ pci:v00001002d00006664*
+- ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series]
++ ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M250]
+ pci:v00001002d00006665*
+- ID_MODEL_FROM_DATABASE=Jet PRO [Radeon R5 M200 Series]
++ ID_MODEL_FROM_DATABASE=Jet PRO [Radeon R5 M230]
+ pci:v00001002d00006667*
+- ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M200 Series]
++ ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M240]
+ pci:v00001002d0000666F*
+  ID_MODEL_FROM_DATABASE=Sun LE [Radeon HD 8550M]
+@@ -5003,6 +5051,9 @@ pci:v00001002d00006759sv00001B0Asd000090B5*
+ pci:v00001002d00006759sv00001B0Asd000090B6*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7570
++pci:v00001002d0000675B*
++ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7600 Series]
++
+ pci:v00001002d0000675D*
+  ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 7570]
+@@ -5801,6 +5852,9 @@ pci:v00001002d00006798sv00001092sd00003000*
+ pci:v00001002d00006798sv00001458sd00002261*
+  ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition OC]
++pci:v00001002d00006798sv00001462sd00002774*
++ ID_MODEL_FROM_DATABASE=MSI R7970 TF 3GD5/OC BE
++
+ pci:v00001002d00006798sv00001682sd00003211*
+  ID_MODEL_FROM_DATABASE=Double D HD 7970 Black Edition
+@@ -5823,7 +5877,7 @@ pci:v00001002d00006799*
+  ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7900 Series]
+ pci:v00001002d0000679A*
+- ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950]
++ ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280]
+ pci:v00001002d0000679Asv00001002sd00000B01*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM
+@@ -5903,6 +5957,9 @@ pci:v00001002d00006801*
+ pci:v00001002d00006801sv00001002sd00000124*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8970M
++pci:v00001002d00006801sv00001462sd00001117*
++ ID_MODEL_FROM_DATABASE=Radeon R9 M290X
++
+ pci:v00001002d00006801sv00008086sd00002110*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8970M
+@@ -5966,6 +6023,12 @@ pci:v00001002d00006821*
+ pci:v00001002d00006821sv00001002sd0000031E*
+  ID_MODEL_FROM_DATABASE=FirePro SX4000
++pci:v00001002d00006821sv00001028sd000005CC*
++ ID_MODEL_FROM_DATABASE=FirePro M5100
++
++pci:v00001002d00006821sv00001028sd000015CC*
++ ID_MODEL_FROM_DATABASE=FirePro M5100
++
+ pci:v00001002d00006822*
+  ID_MODEL_FROM_DATABASE=Venus PRO [Radeon E8860]
+@@ -6039,7 +6102,7 @@ pci:v00001002d0000683B*
+  ID_MODEL_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series]
+ pci:v00001002d0000683D*
+- ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770 GHz Edition]
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X]
+ pci:v00001002d0000683Dsv00001002sd00000030*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
+@@ -6050,8 +6113,14 @@ pci:v00001002d0000683Dsv00001019sd00000030*
+ pci:v00001002d0000683Dsv0000103Csd00006890*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++pci:v00001002d0000683Dsv00001043sd00008760*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++
++pci:v00001002d0000683Dsv0000174Bsd00008304*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM
++
+ pci:v00001002d0000683F*
+- ID_MODEL_FROM_DATABASE=Cape Verde PRO [Radeon HD 7750]
++ ID_MODEL_FROM_DATABASE=Cape Verde PRO [Radeon HD 7750 / R7 250E]
+ pci:v00001002d00006840*
+  ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7500M/7600M Series]
+@@ -8891,6 +8960,9 @@ pci:v00001002d0000985E*
+ pci:v00001002d0000985F*
+  ID_MODEL_FROM_DATABASE=Mullins
++pci:v00001002d00009900*
++ ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7660G]
++
+ pci:v00001002d00009901*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7660D]
+@@ -9498,7 +9570,7 @@ pci:v00001011d0000000D*
+  ID_MODEL_FROM_DATABASE=PBXGB [TGA2]
+ pci:v00001011d0000000F*
+- ID_MODEL_FROM_DATABASE=PCI-to-PDQ Interface Chip [PFI]
++ ID_MODEL_FROM_DATABASE=DEFPA FDDI PCI-to-PDQ Interface Chip [PFI]
+ pci:v00001011d0000000Fsv00001011sd0000DEF1*
+  ID_MODEL_FROM_DATABASE=FDDI controller (DEFPA)
+@@ -9596,6 +9668,9 @@ pci:v00001011d00000019sv00001186sd00001102*
+ pci:v00001011d00000019sv00001186sd00001112*
+  ID_MODEL_FROM_DATABASE=DFE-570TX Quad Fast Ethernet
++pci:v00001011d00000019sv000011F0sd00004235*
++ ID_MODEL_FROM_DATABASE=21143 [FASTLine-II UTP 10/100]
++
+ pci:v00001011d00000019sv00001259sd00002800*
+  ID_MODEL_FROM_DATABASE=AT-2800Tx Fast Ethernet
+@@ -9761,6 +9836,9 @@ pci:v00001013d000000B0*
+ pci:v00001013d000000B8*
+  ID_MODEL_FROM_DATABASE=GD 5446
++pci:v00001013d000000B8sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00001013d000000BC*
+  ID_MODEL_FROM_DATABASE=GD 5480
+@@ -10487,6 +10565,9 @@ pci:v0000101Ed00001960sv00001028sd00000511*
+ pci:v0000101Ed00001960sv0000103Csd000060E7*
+  ID_MODEL_FROM_DATABASE=NetRAID-1M
++pci:v0000101Ed00001960sv0000103Csd000060E8*
++ ID_MODEL_FROM_DATABASE=NetRaid 2M [AMI MegaRaid 493]
++
+ pci:v0000101Ed00009010*
+  ID_MODEL_FROM_DATABASE=MegaRAID 428 Ultra RAID Controller
+@@ -10811,6 +10892,9 @@ pci:v00001022d00002003*
+ pci:v00001022d00002020*
+  ID_MODEL_FROM_DATABASE=53c974 [PCscsi]
++pci:v00001022d00002020sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00001022d00002040*
+  ID_MODEL_FROM_DATABASE=79c974
+@@ -12263,6 +12347,9 @@ pci:v0000102Bd00002007*
+ pci:v0000102Bd00002527*
+  ID_MODEL_FROM_DATABASE=Millennium G550
++pci:v0000102Bd00002527sv0000102Bsd00000F42*
++ ID_MODEL_FROM_DATABASE=Matrox G550 Low Profile PCI
++
+ pci:v0000102Bd00002527sv0000102Bsd00000F83*
+  ID_MODEL_FROM_DATABASE=Millennium G550
+@@ -12515,6 +12602,9 @@ pci:v0000102Bd00004949*
+ pci:v0000102Bd00004949sv0000102Bsd00000010*
+  ID_MODEL_FROM_DATABASE=Radient eCL (Single-full) frame grabber
++pci:v0000102Bd00004949sv0000102Bsd00000011*
++ ID_MODEL_FROM_DATABASE=Radient eCLV (Single-full) frame grabber
++
+ pci:v0000102Bd00004949sv0000102Bsd00000020*
+  ID_MODEL_FROM_DATABASE=Radient eCL (Dual-base) frame grabber
+@@ -12527,6 +12617,18 @@ pci:v0000102Bd00004949sv0000102Bsd00000040*
+ pci:v0000102Bd00004949sv0000102Bsd00000050*
+  ID_MODEL_FROM_DATABASE=Radient eCL (Golden) frame grabber
++pci:v0000102Bd00004949sv0000102Bsd00001010*
++ ID_MODEL_FROM_DATABASE=Radient eV-CXP (quad CXP-6) frame grabber
++
++pci:v0000102Bd00004949sv0000102Bsd00001015*
++ ID_MODEL_FROM_DATABASE=Radient eV-CXP (dual CXP-6) frame grabber
++
++pci:v0000102Bd00004949sv0000102Bsd00001020*
++ ID_MODEL_FROM_DATABASE=Radient eV-CXP (quad CXP-3) frame grabber
++
++pci:v0000102Bd00004949sv0000102Bsd00001050*
++ ID_MODEL_FROM_DATABASE=Radient eV-CXP (Golden) frame grabber
++
+ pci:v0000102Bd00004CDC*
+  ID_MODEL_FROM_DATABASE=Morphis JPEG2000 accelerator
+@@ -12911,6 +13013,9 @@ pci:v00001033d00000194sv00001028sd000004DA*
+ pci:v00001033d00000194sv00001043sd00008413*
+  ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++pci:v00001033d00000194sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00001033d00000194sv00001B96sd00000001*
+  ID_MODEL_FROM_DATABASE=USB 3.0 PCIe Card
+@@ -13853,9 +13958,6 @@ pci:v0000103Cd00004037*
+ pci:v0000103Cd0000403B*
+  ID_MODEL_FROM_DATABASE=PCIe Root Port
+-pci:v0000103Cd000060E8*
+- ID_MODEL_FROM_DATABASE=NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493)
+-
+ pci:v0000103E*
+  ID_VENDOR_FROM_DATABASE=Solliday Engineering
+@@ -14159,6 +14261,9 @@ pci:v0000104Ad00000010*
+ pci:v0000104Ad00000010sv0000104Asd00004018*
+  ID_MODEL_FROM_DATABASE=ST PowerVR Kyro (64MB AGP TVO)
++pci:v0000104Ad00000010sv00001681sd00000010*
++ ID_MODEL_FROM_DATABASE=PowerVR Kyro II [3D Prophet 4500]
++
+ pci:v0000104Ad00000010sv00001681sd00000028*
+  ID_MODEL_FROM_DATABASE=3D Prophet 4000XT
+@@ -14426,6 +14531,9 @@ pci:v0000104Cd00008022sv0000104Csd00008023*
+ pci:v0000104Cd00008023*
+  ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx]
++pci:v0000104Cd00008023sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v0000104Cd00008023sv0000103Csd0000088C*
+  ID_MODEL_FROM_DATABASE=NC8000 laptop
+@@ -15233,6 +15341,9 @@ pci:v00001054d0000302C*
+ pci:v00001054d0000302D*
+  ID_MODEL_FROM_DATABASE=M001 PCI Express Switch Downstream Port
++pci:v00001054d00003070*
++ ID_MODEL_FROM_DATABASE=Hitachi FIVE-FX Fibre Channel to PCIe HBA
++
+ pci:v00001054d00003505*
+  ID_MODEL_FROM_DATABASE=SH7751 PCI Controller (PCIC)
+@@ -16208,6 +16319,9 @@ pci:v0000106Bd0000003E*
+ pci:v0000106Bd0000003F*
+  ID_MODEL_FROM_DATABASE=KeyLargo/Intrepid USB
++pci:v0000106Bd0000003Fsv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v0000106Bd00000040*
+  ID_MODEL_FROM_DATABASE=K2 KeyLargo USB
+@@ -16517,6 +16631,9 @@ pci:v00001077d00002422sv0000103Csd000012DD*
+ pci:v00001077d00002432*
+  ID_MODEL_FROM_DATABASE=ISP2432-based 4Gb Fibre Channel to PCI Express HBA
++pci:v00001077d00002432sv0000103Csd00007040*
++ ID_MODEL_FROM_DATABASE=FC1142SR 4Gb 1-port PCIe Fibre Channel Host Bus Adapter [HPAE311A]
++
+ pci:v00001077d00002532*
+  ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA
+@@ -16815,7 +16932,7 @@ pci:v0000108Dd00000002*
+  ID_MODEL_FROM_DATABASE=16/4 Token Ring
+ pci:v0000108Dd00000004*
+- ID_MODEL_FROM_DATABASE=RapidFire 3139 Token-Ring 16/4 PCI Adapter
++ ID_MODEL_FROM_DATABASE=RapidFire OC-3139/3140 Token-Ring 16/4 PCI Adapter
+ pci:v0000108Dd00000004sv0000108Dsd00000004*
+  ID_MODEL_FROM_DATABASE=OC-3139/3140 RapidFire Token-Ring 16/4 Adapter
+@@ -17294,6 +17411,30 @@ pci:v00001093d00002CC0*
+ pci:v00001093d00002DB0*
+  ID_MODEL_FROM_DATABASE=PCI-6608
++pci:v00001093d0000702C*
++ ID_MODEL_FROM_DATABASE=PXI-7831R
++
++pci:v00001093d0000702D*
++ ID_MODEL_FROM_DATABASE=PCI-7831R
++
++pci:v00001093d0000702E*
++ ID_MODEL_FROM_DATABASE=PXI-7811R
++
++pci:v00001093d0000702F*
++ ID_MODEL_FROM_DATABASE=PCI-7811R
++
++pci:v00001093d00007055*
++ ID_MODEL_FROM_DATABASE=PXI-7830R
++
++pci:v00001093d00007056*
++ ID_MODEL_FROM_DATABASE=PCI-7830R
++
++pci:v00001093d00007074*
++ ID_MODEL_FROM_DATABASE=PXI-7833R
++
++pci:v00001093d00007083*
++ ID_MODEL_FROM_DATABASE=PCI-7833R
++
+ pci:v00001093d00007085*
+  ID_MODEL_FROM_DATABASE=PCI-6509
+@@ -17369,6 +17510,9 @@ pci:v00001093d0000714C*
+ pci:v00001093d0000714D*
+  ID_MODEL_FROM_DATABASE=PCI-5114
++pci:v00001093d00007152*
++ ID_MODEL_FROM_DATABASE=PCI-5640R
++
+ pci:v00001093d0000716C*
+  ID_MODEL_FROM_DATABASE=PCI-6225
+@@ -17378,6 +17522,12 @@ pci:v00001093d0000717D*
+ pci:v00001093d0000717F*
+  ID_MODEL_FROM_DATABASE=PCIe-6259
++pci:v00001093d00007193*
++ ID_MODEL_FROM_DATABASE=PXI-7813R
++
++pci:v00001093d00007194*
++ ID_MODEL_FROM_DATABASE=PCI-7813R
++
+ pci:v00001093d000071BC*
+  ID_MODEL_FROM_DATABASE=PCI-6221 (37pin)
+@@ -17420,6 +17570,51 @@ pci:v00001093d0000734A*
+ pci:v00001093d0000737D*
+  ID_MODEL_FROM_DATABASE=PXI-5124EX
++pci:v00001093d00007384*
++ ID_MODEL_FROM_DATABASE=PXI-7851R
++
++pci:v00001093d00007385*
++ ID_MODEL_FROM_DATABASE=PXI-7852R
++
++pci:v00001093d00007386*
++ ID_MODEL_FROM_DATABASE=PCIe-7851R
++
++pci:v00001093d00007387*
++ ID_MODEL_FROM_DATABASE=PCIe-7852R
++
++pci:v00001093d00007390*
++ ID_MODEL_FROM_DATABASE=PXI-7841R
++
++pci:v00001093d00007391*
++ ID_MODEL_FROM_DATABASE=PXI-7842R
++
++pci:v00001093d00007392*
++ ID_MODEL_FROM_DATABASE=PXI-7853R
++
++pci:v00001093d00007393*
++ ID_MODEL_FROM_DATABASE=PCIe-7841R
++
++pci:v00001093d00007394*
++ ID_MODEL_FROM_DATABASE=PCIe-7842R
++
++pci:v00001093d000073A5*
++ ID_MODEL_FROM_DATABASE=PXIe-5641R
++
++pci:v00001093d000073D5*
++ ID_MODEL_FROM_DATABASE=PXI-7951R
++
++pci:v00001093d000073D6*
++ ID_MODEL_FROM_DATABASE=PXI-7952R
++
++pci:v00001093d000073D7*
++ ID_MODEL_FROM_DATABASE=PXI-7953R
++
++pci:v00001093d000073E1*
++ ID_MODEL_FROM_DATABASE=PXI-7854R
++
++pci:v00001093d000073EC*
++ ID_MODEL_FROM_DATABASE=PXI-7954R
++
+ pci:v00001093d000073F0*
+  ID_MODEL_FROM_DATABASE=PXI-5153
+@@ -17438,6 +17633,18 @@ pci:v00001093d00007460*
+ pci:v00001093d00007461*
+  ID_MODEL_FROM_DATABASE=PCI-5154EX
++pci:v00001093d00007539*
++ ID_MODEL_FROM_DATABASE=NI 9157
++
++pci:v00001093d0000753A*
++ ID_MODEL_FROM_DATABASE=NI 9159
++
++pci:v00001093d00007626*
++ ID_MODEL_FROM_DATABASE=NI 9154
++
++pci:v00001093d00007627*
++ ID_MODEL_FROM_DATABASE=NI 9155
++
+ pci:v00001093d0000B001*
+  ID_MODEL_FROM_DATABASE=IMAQ-PCI-1408
+@@ -17469,7 +17676,28 @@ pci:v00001093d0000B091*
+  ID_MODEL_FROM_DATABASE=IMAQ-PXI-1411
+ pci:v00001093d0000C4C4*
+- ID_MODEL_FROM_DATABASE=PXIe-4353/5160
++ ID_MODEL_FROM_DATABASE=PXIe/PCIe Device
++
++pci:v00001093d0000C4C4sv00001093sd000074B2*
++ ID_MODEL_FROM_DATABASE=PXIe-4353
++
++pci:v00001093d0000C4C4sv00001093sd000074D0*
++ ID_MODEL_FROM_DATABASE=PXIe-7961R
++
++pci:v00001093d0000C4C4sv00001093sd000074E2*
++ ID_MODEL_FROM_DATABASE=PXIe-7962R
++
++pci:v00001093d0000C4C4sv00001093sd000074E3*
++ ID_MODEL_FROM_DATABASE=PXIe-7965R
++
++pci:v00001093d0000C4C4sv00001093sd00007553*
++ ID_MODEL_FROM_DATABASE=PCIe-1473R
++
++pci:v00001093d0000C4C4sv00001093sd000075CE*
++ ID_MODEL_FROM_DATABASE=PXIe-7966R
++
++pci:v00001093d0000C4C4sv00001093sd000076B7*
++ ID_MODEL_FROM_DATABASE=PXIe-7975R
+ pci:v00001093d0000C4C4sv00001093sd000076D0*
+  ID_MODEL_FROM_DATABASE=PXIe-5160
+@@ -17696,9 +17924,6 @@ pci:v0000109Ed0000036Esv00001461sd00000761*
+ pci:v0000109Ed0000036Esv00001461sd00000771*
+  ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771
+-pci:v0000109Ed0000036Esv00001464sd0000AA00*
+- ID_MODEL_FROM_DATABASE=iTuner Spectra8
+-
+ pci:v0000109Ed0000036Esv000014F1sd00000001*
+  ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC
+@@ -18152,6 +18377,9 @@ pci:v000010A9d00008001*
+ pci:v000010A9d00008002*
+  ID_MODEL_FROM_DATABASE=G-net NT
++pci:v000010A9d0000802B*
++ ID_MODEL_FROM_DATABASE=REACT external interrupt controller
++
+ pci:v000010AA*
+  ID_VENDOR_FROM_DATABASE=ACC Microelectronics
+@@ -18485,6 +18713,9 @@ pci:v000010B5d00008732*
+ pci:v000010B5d00008734*
+  ID_MODEL_FROM_DATABASE=PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch
++pci:v000010B5d00008747*
++ ID_MODEL_FROM_DATABASE=PEX 8747 48-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch
++
+ pci:v000010B5d000087B0*
+  ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch
+@@ -18969,10 +19200,10 @@ pci:v000010B6d00000009sv000010B6sd00000009*
+  ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI-HS Ringnode
+ pci:v000010B6d0000000A*
+- ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI Ringnode
++ ID_MODEL_FROM_DATABASE=Token Ring 100/16/4 Ringnode/Ringrunner
+ pci:v000010B6d0000000Asv000010B6sd0000000A*
+- ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI Ringnode
++ ID_MODEL_FROM_DATABASE=Token Ring 100/16/4 Ringnode/Ringrunner
+ pci:v000010B6d0000000B*
+  ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter Mk2
+@@ -19001,6 +19232,9 @@ pci:v000010B7*
+ pci:v000010B7d00000001*
+  ID_MODEL_FROM_DATABASE=3c985 1000BaseSX (SX/TX)
++pci:v000010B7d00000001sv00009850sd00000001*
++ ID_MODEL_FROM_DATABASE=3c985B-SX
++
+ pci:v000010B7d00000013*
+  ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC (3CRDAG675)
+@@ -21042,10 +21276,7 @@ pci:v000010DEd000000CC*
+  ID_MODEL_FROM_DATABASE=NV41GLM [Quadro FX Go1400]
+ pci:v000010DEd000000CD*
+- ID_MODEL_FROM_DATABASE=NV41GL [Quadro FX 3450/4000 SDI]
+-
+-pci:v000010DEd000000CDsv000010DEsd0000029B*
+- ID_MODEL_FROM_DATABASE=wx4300 Workstation
++ ID_MODEL_FROM_DATABASE=NV42GL [Quadro FX 3450/4000 SDI]
+ pci:v000010DEd000000CE*
+  ID_MODEL_FROM_DATABASE=NV41GL [Quadro FX 1400]
+@@ -24858,7 +25089,7 @@ pci:v000010DEd0000086E*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9100M G]
+ pci:v000010DEd0000086F*
+- ID_MODEL_FROM_DATABASE=C79 [GeForce 9200M G]
++ ID_MODEL_FROM_DATABASE=MCP79 [GeForce 8200M G]
+ pci:v000010DEd00000870*
+  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M]
+@@ -26006,6 +26237,9 @@ pci:v000010DEd00001005sv00003842sd00002795*
+ pci:v000010DEd0000100A*
+  ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Ti]
++pci:v000010DEd0000100C*
++ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX Titan Black]
++
+ pci:v000010DEd0000101F*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20]
+@@ -26582,6 +26816,9 @@ pci:v000010DEd00001140sv00001462sd000010B8*
+ pci:v000010DEd00001140sv00001462sd000010E9*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv00001462sd00001116*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
+ pci:v000010DEd00001140sv00001462sd0000AA33*
+  ID_MODEL_FROM_DATABASE=GeForce 720M
+@@ -26750,6 +26987,9 @@ pci:v000010DEd00001140sv00001B0Asd00002202*
+ pci:v000010DEd00001180*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680]
++pci:v000010DEd00001180sv00001043sd000083F1*
++ ID_MODEL_FROM_DATABASE=GTX680-DC2-2GD5
++
+ pci:v000010DEd00001180sv00003842sd00003682*
+  ID_MODEL_FROM_DATABASE=GeForce GTX 680 Mac Edition
+@@ -26804,6 +27044,15 @@ pci:v000010DEd0000118F*
+ pci:v000010DEd00001193*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
++pci:v000010DEd00001198*
++ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 880M]
++
++pci:v000010DEd00001199*
++ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 870M]
++
++pci:v000010DEd0000119A*
++ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 860M]
++
+ pci:v000010DEd0000119D*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M Mac Edition]
+@@ -27065,6 +27314,9 @@ pci:v000010DEd00001251*
+ pci:v000010DEd00001280*
+  ID_MODEL_FROM_DATABASE=GK208 [GeForce GT 635]
++pci:v000010DEd00001281*
++ ID_MODEL_FROM_DATABASE=GK208 [GeForce GT 710]
++
+ pci:v000010DEd00001282*
+  ID_MODEL_FROM_DATABASE=GK208 [GeForce GT 640 Rev. 2]
+@@ -27107,6 +27359,9 @@ pci:v000010DEd00001294*
+ pci:v000010DEd00001295*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce 710M]
++pci:v000010DEd00001296*
++ ID_MODEL_FROM_DATABASE=GK208M [GeForce 825M]
++
+ pci:v000010DEd00001298*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 720M]
+@@ -27119,12 +27374,48 @@ pci:v000010DEd000012B9*
+ pci:v000010DEd000012BA*
+  ID_MODEL_FROM_DATABASE=GK208GLM [Quadro K510M]
++pci:v000010DEd00001340*
++ ID_MODEL_FROM_DATABASE=GM108M [GeForce 830M]
++
++pci:v000010DEd00001341*
++ ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M]
++
++pci:v000010DEd00001380*
++ ID_MODEL_FROM_DATABASE=GM107 [GeForce GTX 750 Ti]
++
++pci:v000010DEd00001381*
++ ID_MODEL_FROM_DATABASE=GM107 [GeForce GTX 750]
++
++pci:v000010DEd00001382*
++ ID_MODEL_FROM_DATABASE=GM107 [GeForce GTX 745]
++
++pci:v000010DEd00001390*
++ ID_MODEL_FROM_DATABASE=GM107M [GeForce 845M]
++
++pci:v000010DEd00001391*
++ ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 850M]
++
++pci:v000010DEd00001392*
++ ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 860M]
++
++pci:v000010DEd00001393*
++ ID_MODEL_FROM_DATABASE=GM107M [GeForce 840M]
++
+ pci:v000010DF*
+  ID_VENDOR_FROM_DATABASE=Emulex Corporation
+ pci:v000010DFd00000720*
+  ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk)
++pci:v000010DFd00000720sv000017AAsd00001056*
++ ID_MODEL_FROM_DATABASE=ThinkServer OCm14102-UX-L AnyFabric
++
++pci:v000010DFd00000720sv000017AAsd00001057*
++ ID_MODEL_FROM_DATABASE=ThinkServer OCm14104-UX-L AnyFabric
++
++pci:v000010DFd00000720sv000017AAsd00001059*
++ ID_MODEL_FROM_DATABASE=ThinkServer OCm14104-UT-L AnyFabric
++
+ pci:v000010DFd00000722*
+  ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk)
+@@ -27167,6 +27458,12 @@ pci:v000010DFd0000E208*
+ pci:v000010DFd0000E220*
+  ID_MODEL_FROM_DATABASE=OneConnect NIC (Lancer)
++pci:v000010DFd0000E220sv000017AAsd00001054*
++ ID_MODEL_FROM_DATABASE=ThinkServer LPm16002B-M6-L AnyFabric
++
++pci:v000010DFd0000E220sv000017AAsd00001055*
++ ID_MODEL_FROM_DATABASE=ThinkServer LPm16004B-M8-L AnyFabric
++
+ pci:v000010DFd0000E240*
+  ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Lancer)
+@@ -27573,7 +27870,7 @@ pci:v000010ECd00008029sv00001259sd00002400*
+  ID_MODEL_FROM_DATABASE=AT-2400
+ pci:v000010ECd00008029sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=Qemu virtual machine
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
+ pci:v000010ECd00008129*
+  ID_MODEL_FROM_DATABASE=RTL-8129
+@@ -27603,7 +27900,7 @@ pci:v000010ECd00008138sv000010ECsd00008138*
+  ID_MODEL_FROM_DATABASE=RT8139 (B/C) Fast Ethernet Adapter
+ pci:v000010ECd00008139*
+- ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
+ pci:v000010ECd00008139sv00000357sd0000000A*
+  ID_MODEL_FROM_DATABASE=TTP-Monitoring Card V2.0
+@@ -27638,11 +27935,14 @@ pci:v000010ECd00008139sv00001071sd00008160*
+ pci:v000010ECd00008139sv000010BDsd00000320*
+  ID_MODEL_FROM_DATABASE=EP-320X-R
++pci:v000010ECd00008139sv000010ECsd00008139*
++ ID_MODEL_FROM_DATABASE=RTL-8100/8101L/8139 PCI Fast Ethernet Adapter
++
+ pci:v000010ECd00008139sv000010F7sd00008338*
+  ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
+ pci:v000010ECd00008139sv00001113sd0000EC01*
+- ID_MODEL_FROM_DATABASE=FNC-0107TX
++ ID_MODEL_FROM_DATABASE=LevelOne FNC-0107TX/FNC-0109TX
+ pci:v000010ECd00008139sv00001186sd00001300*
+  ID_MODEL_FROM_DATABASE=DFE-538TX
+@@ -27734,6 +28034,9 @@ pci:v000010ECd00008139sv0000187Esd00003303*
+ pci:v000010ECd00008139sv00001904sd00008139*
+  ID_MODEL_FROM_DATABASE=RTL8139D Fast Ethernet Adapter
++pci:v000010ECd00008139sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v000010ECd00008139sv00002646sd00000001*
+  ID_MODEL_FROM_DATABASE=KNE120TX
+@@ -27779,6 +28082,9 @@ pci:v000010ECd00008168sv0000103Csd00001611*
+ pci:v000010ECd00008168sv0000103Csd00001950*
+  ID_MODEL_FROM_DATABASE=ProBook 450/455
++pci:v000010ECd00008168sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v000010ECd00008168sv00001043sd000011F5*
+  ID_MODEL_FROM_DATABASE=A6J-Q008
+@@ -27815,6 +28121,9 @@ pci:v000010ECd00008168sv00001462sd0000238C*
+ pci:v000010ECd00008168sv00001462sd0000368C*
+  ID_MODEL_FROM_DATABASE=K9AG Neo2
++pci:v000010ECd00008168sv00001462sd00004180*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v000010ECd00008168sv00001462sd00007522*
+  ID_MODEL_FROM_DATABASE=X58 Pro-E
+@@ -27894,10 +28203,10 @@ pci:v000010ECd00008176sv00001A3Bsd00001139*
+  ID_MODEL_FROM_DATABASE=AW-NE139H Half-size Mini PCIe Card
+ pci:v000010ECd00008177*
+- ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter
++ ID_MODEL_FROM_DATABASE=RTL8191CE PCIe Wireless Network Adapter
+ pci:v000010ECd00008178*
+- ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter
++ ID_MODEL_FROM_DATABASE=RTL8192CE PCIe Wireless Network Adapter
+ pci:v000010ECd00008179*
+  ID_MODEL_FROM_DATABASE=RTL8188EE Wireless Network Adapter
+@@ -27914,11 +28223,14 @@ pci:v000010ECd00008180sv00001737sd00000019*
+ pci:v000010ECd00008185*
+  ID_MODEL_FROM_DATABASE=RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
++pci:v000010ECd0000818B*
++ ID_MODEL_FROM_DATABASE=RTL8192EE PCIe Wireless Network Adapter
++
+ pci:v000010ECd00008190*
+- ID_MODEL_FROM_DATABASE=RTL8190 802.11n Wireless LAN
++ ID_MODEL_FROM_DATABASE=RTL8190 802.11n PCI Wireless Network Adapter
+ pci:v000010ECd00008191*
+- ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter
++ ID_MODEL_FROM_DATABASE=RTL8192CE PCIe Wireless Network Adapter
+ pci:v000010ECd00008192*
+  ID_MODEL_FROM_DATABASE=RTL8192E/RTL8192SE Wireless LAN Controller
+@@ -27938,6 +28250,15 @@ pci:v000010ECd00008199sv00001462sd00006894*
+ pci:v000010ECd00008723*
+  ID_MODEL_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter
++pci:v000010ECd00008812*
++ ID_MODEL_FROM_DATABASE=RTL8812AE 802.11ac PCIe Wireless Network Adapter
++
++pci:v000010ECd00008813*
++ ID_MODEL_FROM_DATABASE=RTL8813AE 802.11ac PCIe Wireless Network Adapter
++
++pci:v000010ECd00008821*
++ ID_MODEL_FROM_DATABASE=RTL8821AE 802.11ac PCIe Wireless Network Adapter
++
+ pci:v000010ECd0000B723*
+  ID_MODEL_FROM_DATABASE=RTL8723BE PCIe Wireless Network Adapter
+@@ -28211,6 +28532,9 @@ pci:v00001102d00000004sv00001102sd00000058*
+ pci:v00001102d00000004sv00001102sd00001002*
+  ID_MODEL_FROM_DATABASE=SB Audigy2 Platinum
++pci:v00001102d00000004sv00001102sd00001003*
++ ID_MODEL_FROM_DATABASE=SB0350 Audigy 2
++
+ pci:v00001102d00000004sv00001102sd00001007*
+  ID_MODEL_FROM_DATABASE=SB0240 Audigy 2 Platinum 6.1
+@@ -28436,6 +28760,9 @@ pci:v00001103d00001742*
+ pci:v00001103d00002210*
+  ID_MODEL_FROM_DATABASE=RocketRAID 2210 SATA-II Controller
++pci:v00001103d00002210sv000011ABsd000011AB*
++ ID_MODEL_FROM_DATABASE=88SX6042
++
+ pci:v00001103d00002300*
+  ID_MODEL_FROM_DATABASE=RocketRAID 230x 4 Port SATA-II Controller
+@@ -28635,7 +28962,7 @@ pci:v00001106d00000415*
+  ID_MODEL_FROM_DATABASE=VT6415 PATA IDE Host Controller
+ pci:v00001106d00000415sv00001043sd0000838F*
+- ID_MODEL_FROM_DATABASE=M5A88-V EVO
++ ID_MODEL_FROM_DATABASE=Motherboard
+ pci:v00001106d00000501*
+  ID_MODEL_FROM_DATABASE=VT8501 [Apollo MVP4]
+@@ -29033,6 +29360,9 @@ pci:v00001106d00003038sv00001849sd00003038*
+ pci:v00001106d00003038sv000019DAsd0000A179*
+  ID_MODEL_FROM_DATABASE=ZBOX nano VD01
++pci:v00001106d00003038sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00001106d00003040*
+  ID_MODEL_FROM_DATABASE=VT82C586B ACPI
+@@ -29591,6 +29921,9 @@ pci:v00001106d00003238*
+ pci:v00001106d00003249*
+  ID_MODEL_FROM_DATABASE=VT6421 IDE/SATA Controller
++pci:v00001106d00003249sv00001106sd00003249*
++ ID_MODEL_FROM_DATABASE=VT6421 IDE/SATA Controller
++
+ pci:v00001106d0000324A*
+  ID_MODEL_FROM_DATABASE=CX700/VX700 PCI to PCI Bridge
+@@ -30180,7 +30513,7 @@ pci:v00001109d00001400*
+  ID_MODEL_FROM_DATABASE=EM110TX [EX110TX]
+ pci:v0000110A*
+- ID_VENDOR_FROM_DATABASE=Siemens Nixdorf AG
++ ID_VENDOR_FROM_DATABASE=Siemens AG
+ pci:v0000110Ad00000002*
+  ID_MODEL_FROM_DATABASE=Pirahna 2-port
+@@ -30216,20 +30549,56 @@ pci:v0000110Ad00002104*
+  ID_MODEL_FROM_DATABASE=Eicon Diva 2.02 compatible passive ISDN card
+ pci:v0000110Ad00003141*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5611 (Profibus Adapter)
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5611 / 5621
+ pci:v0000110Ad00003142*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613A1 (Profibus Adapter)
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 / 5614
++
++pci:v0000110Ad00003143*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1613
+ pci:v0000110Ad00004021*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)
+ pci:v0000110Ad00004029*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613A2 (Profibus Adapter)
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5614 A2
++
++pci:v0000110Ad00004029sv0000110Asd00004029*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 A2
++
++pci:v0000110Ad00004029sv0000110Asd0000C029*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5614 A2
+ pci:v0000110Ad00004035*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1613 A2
++pci:v0000110Ad00004036*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1616
++
++pci:v0000110Ad00004038*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1604
++
++pci:v0000110Ad00004069*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5623
++
++pci:v0000110Ad00004069sv0000110Asd0000C069*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5624
++
++pci:v0000110Ad0000407C*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5612
++
++pci:v0000110Ad0000407D*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 A3
++
++pci:v0000110Ad0000407E*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5622
++
++pci:v0000110Ad00004083*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5614 A3
++
++pci:v0000110Ad00004084*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1626
++
+ pci:v0000110Ad00004942*
+  ID_MODEL_FROM_DATABASE=FPGA I-Bus Tracer for MBD
+@@ -31244,9 +31613,24 @@ pci:v00001131d00007133sv00005ACEsd00006290*
+ pci:v00001131d00007133sv00005ACEsd00007090*
+  ID_MODEL_FROM_DATABASE=Behold TV A7
++pci:v00001131d00007133sv00005ACEsd00007150*
++ ID_MODEL_FROM_DATABASE=Behold TV H75
++
++pci:v00001131d00007133sv00005ACEsd00007151*
++ ID_MODEL_FROM_DATABASE=Behold TV H75
++
+ pci:v00001131d00007133sv00005ACEsd00007190*
+  ID_MODEL_FROM_DATABASE=Behold TV H7
++pci:v00001131d00007133sv00005ACEsd00007191*
++ ID_MODEL_FROM_DATABASE=Behold TV H7
++
++pci:v00001131d00007133sv00005ACEsd00007290*
++ ID_MODEL_FROM_DATABASE=Behold TV T7
++
++pci:v00001131d00007133sv00005ACEsd00007591*
++ ID_MODEL_FROM_DATABASE=Behold TV X7
++
+ pci:v00001131d00007133sv00005ACEsd00007595*
+  ID_MODEL_FROM_DATABASE=Behold TV X7
+@@ -31553,9 +31937,30 @@ pci:v00001131d00007231*
+ pci:v00001131d00007231sv00005ACEsd00008000*
+  ID_MODEL_FROM_DATABASE=Behold TV H8
++pci:v00001131d00007231sv00005ACEsd00008001*
++ ID_MODEL_FROM_DATABASE=Behold TV H8
++
++pci:v00001131d00007231sv00005ACEsd00008050*
++ ID_MODEL_FROM_DATABASE=Behold TV H85
++
++pci:v00001131d00007231sv00005ACEsd00008051*
++ ID_MODEL_FROM_DATABASE=Behold TV H85
++
+ pci:v00001131d00007231sv00005ACEsd00008100*
+  ID_MODEL_FROM_DATABASE=Behold TV A8
++pci:v00001131d00007231sv00005ACEsd00008101*
++ ID_MODEL_FROM_DATABASE=Behold TV A8
++
++pci:v00001131d00007231sv00005ACEsd00008150*
++ ID_MODEL_FROM_DATABASE=Behold TV A85
++
++pci:v00001131d00007231sv00005ACEsd00008151*
++ ID_MODEL_FROM_DATABASE=Behold TV A85
++
++pci:v00001131d00007231sv00005ACEsd00008201*
++ ID_MODEL_FROM_DATABASE=Behold TV T8
++
+ pci:v00001131d00009730*
+  ID_MODEL_FROM_DATABASE=SAA9730 Integrated Multimedia and Peripheral Controller
+@@ -35042,6 +35447,9 @@ pci:v000011C1d00005811*
+ pci:v000011C1d00005811sv0000103Csd00002A34*
+  ID_MODEL_FROM_DATABASE=Pavilion a1677c
++pci:v000011C1d00005811sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v000011C1d00005811sv0000103Csd00002A9E*
+  ID_MODEL_FROM_DATABASE=Pavilion p6310f
+@@ -35858,6 +36266,9 @@ pci:v00001217d00008330sv00001028sd000004A3*
+ pci:v00001217d00008331*
+  ID_MODEL_FROM_DATABASE=O2 Flash Memory Card
++pci:v00001217d00008520*
++ ID_MODEL_FROM_DATABASE=SD/MMC Card Reader Controller
++
+ pci:v00001218*
+  ID_VENDOR_FROM_DATABASE=Hybricon Corp.
+@@ -36852,7 +37263,7 @@ pci:v00001274d00001171*
+  ID_MODEL_FROM_DATABASE=ES1373 [AudioPCI] (also Creative Labs CT5803)
+ pci:v00001274d00001371*
+- ID_MODEL_FROM_DATABASE=ES1371 [AudioPCI-97]
++ ID_MODEL_FROM_DATABASE=ES1371 / Creative Labs CT2518 [AudioPCI-97]
+ pci:v00001274d00001371sv00000E11sd00000024*
+  ID_MODEL_FROM_DATABASE=AudioPCI on Motherboard Compaq Deskpro
+@@ -36870,7 +37281,7 @@ pci:v00001274d00001371sv0000107Bsd00008054*
+  ID_MODEL_FROM_DATABASE=Tabor2
+ pci:v00001274d00001371sv00001274sd00001371*
+- ID_MODEL_FROM_DATABASE=Creative Sound Blaster AudioPCI64V, AudioPCI128
++ ID_MODEL_FROM_DATABASE=AudioPCI 64V/128 / Creative Sound Blaster CT4810
+ pci:v00001274d00001371sv00001274sd00008001*
+  ID_MODEL_FROM_DATABASE=CT4751 board
+@@ -41858,12 +42269,24 @@ pci:v00001425d00005013*
+ pci:v00001425d00005014*
+  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller
++pci:v00001425d00005015*
++ ID_MODEL_FROM_DATABASE=T502-BT Unified Wire Ethernet Controller
++
+ pci:v00001425d00005080*
+  ID_MODEL_FROM_DATABASE=T540-5080 Unified Wire Ethernet Controller
+ pci:v00001425d00005081*
+  ID_MODEL_FROM_DATABASE=T540-5081 Unified Wire Ethernet Controller
++pci:v00001425d00005083*
++ ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller
++
++pci:v00001425d00005084*
++ ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller
++
++pci:v00001425d00005085*
++ ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
++
+ pci:v00001425d00005401*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
+@@ -41924,12 +42347,24 @@ pci:v00001425d00005413*
+ pci:v00001425d00005414*
+  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller
++pci:v00001425d00005415*
++ ID_MODEL_FROM_DATABASE=T502-BT Unified Wire Ethernet Controller
++
+ pci:v00001425d00005480*
+  ID_MODEL_FROM_DATABASE=T540-5080 Unified Wire Ethernet Controller
+ pci:v00001425d00005481*
+  ID_MODEL_FROM_DATABASE=T540-5081 Unified Wire Ethernet Controller
++pci:v00001425d00005483*
++ ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller
++
++pci:v00001425d00005484*
++ ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller
++
++pci:v00001425d00005485*
++ ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
++
+ pci:v00001425d00005501*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
+@@ -41990,12 +42425,24 @@ pci:v00001425d00005513*
+ pci:v00001425d00005514*
+  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Storage Controller
++pci:v00001425d00005515*
++ ID_MODEL_FROM_DATABASE=T502-BT Unified Wire Storage Controller
++
+ pci:v00001425d00005580*
+  ID_MODEL_FROM_DATABASE=T540-5080 Unified Wire Storage Controller
+ pci:v00001425d00005581*
+  ID_MODEL_FROM_DATABASE=T540-5081 Unified Wire Storage Controller
++pci:v00001425d00005583*
++ ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Storage Controller
++
++pci:v00001425d00005584*
++ ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Storage Controller
++
++pci:v00001425d00005585*
++ ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller
++
+ pci:v00001425d00005601*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
+@@ -42056,12 +42503,24 @@ pci:v00001425d00005613*
+ pci:v00001425d00005614*
+  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Storage Controller
++pci:v00001425d00005615*
++ ID_MODEL_FROM_DATABASE=T502-BT Unified Wire Storage Controller
++
+ pci:v00001425d00005680*
+  ID_MODEL_FROM_DATABASE=T540-5080 Unified Wire Storage Controller
+ pci:v00001425d00005681*
+  ID_MODEL_FROM_DATABASE=T540-5081 Unified Wire Storage Controller
++pci:v00001425d00005683*
++ ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Storage Controller
++
++pci:v00001425d00005684*
++ ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Storage Controller
++
++pci:v00001425d00005685*
++ ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Storage Controller
++
+ pci:v00001425d00005701*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
+@@ -42122,12 +42581,24 @@ pci:v00001425d00005713*
+ pci:v00001425d00005714*
+  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller
++pci:v00001425d00005715*
++ ID_MODEL_FROM_DATABASE=T502-BT Unified Wire Ethernet Controller
++
+ pci:v00001425d00005780*
+  ID_MODEL_FROM_DATABASE=T540-5080 Unified Wire Ethernet Controller
+ pci:v00001425d00005781*
+  ID_MODEL_FROM_DATABASE=T540-5081 Unified Wire Ethernet Controller
++pci:v00001425d00005783*
++ ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller
++
++pci:v00001425d00005784*
++ ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller
++
++pci:v00001425d00005785*
++ ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
++
+ pci:v00001425d00005801*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
+@@ -42188,12 +42659,24 @@ pci:v00001425d00005813*
+ pci:v00001425d00005814*
+  ID_MODEL_FROM_DATABASE=T580-LP-SO-CR Unified Wire Ethernet Controller
++pci:v00001425d00005815*
++ ID_MODEL_FROM_DATABASE=T502-BT Unified Wire Ethernet Controller
++
+ pci:v00001425d00005880*
+  ID_MODEL_FROM_DATABASE=T540-5080 Unified Wire Ethernet Controller
+ pci:v00001425d00005881*
+  ID_MODEL_FROM_DATABASE=T540-5081 Unified Wire Ethernet Controller
++pci:v00001425d00005883*
++ ID_MODEL_FROM_DATABASE=T540-5083 Unified Wire Ethernet Controller
++
++pci:v00001425d00005884*
++ ID_MODEL_FROM_DATABASE=T580-5084 Unified Wire Ethernet Controller
++
++pci:v00001425d00005885*
++ ID_MODEL_FROM_DATABASE=T580-5085 Unified Wire Ethernet Controller
++
+ pci:v00001425d0000A000*
+  ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller
+@@ -42483,7 +42966,7 @@ pci:v00001461d0000F436*
+  ID_MODEL_FROM_DATABASE=AVerTV Hybrid+FM
+ pci:v00001462*
+- ID_VENDOR_FROM_DATABASE=Micro-Star International Co., Ltd.
++ ID_VENDOR_FROM_DATABASE=Micro-Star International Co., Ltd. [MSI]
+ pci:v00001463*
+  ID_VENDOR_FROM_DATABASE=Fast Corporation
+@@ -43847,6 +44330,33 @@ pci:v000014E4d0000168E*
+ pci:v000014E4d0000168Esv0000103Csd00001798*
+  ID_MODEL_FROM_DATABASE=Flex-10 10Gb 2-port 530FLB Adapter [Meru]
++pci:v000014E4d0000168Esv0000103Csd000017A5*
++ ID_MODEL_FROM_DATABASE=HP Flex-10 10Gb 2-port 530M Adapter
++
++pci:v000014E4d0000168Esv0000103Csd000018D3*
++ ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530T Adapter
++
++pci:v000014E4d0000168Esv0000103Csd00001930*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter
++
++pci:v000014E4d0000168Esv0000103Csd00001931*
++ ID_MODEL_FROM_DATABASE=HP StoreFabric CN1100R Dual Port Converged Network Adapter
++
++pci:v000014E4d0000168Esv0000103Csd00001932*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLB Adapter
++
++pci:v000014E4d0000168Esv0000103Csd00001933*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534M Adapter
++
++pci:v000014E4d0000168Esv0000103Csd0000193A*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 533FLR-T Adapter
++
++pci:v000014E4d0000168Esv0000103Csd00003382*
++ ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter
++
++pci:v000014E4d0000168Esv0000103Csd0000339D*
++ ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530SFP+ Adapter
++
+ pci:v000014E4d00001690*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM57760 Gigabit Ethernet PCIe
+@@ -43922,9 +44432,21 @@ pci:v000014E4d000016A1*
+ pci:v000014E4d000016A2*
+  ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet
++pci:v000014E4d000016A2sv0000103Csd00001916*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630FLB Adapter
++
++pci:v000014E4d000016A2sv0000103Csd00001917*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630M Adapter
++
+ pci:v000014E4d000016A4*
+  ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function
++pci:v000014E4d000016A4sv0000103Csd00001916*
++ ID_MODEL_FROM_DATABASE=HP NPAR 20Gb 2-port 630FLB Adapter
++
++pci:v000014E4d000016A4sv0000103Csd00001917*
++ ID_MODEL_FROM_DATABASE=HP NPAR 20Gb 2-port 630M Adapter
++
+ pci:v000014E4d000016A5*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function
+@@ -44048,12 +44570,78 @@ pci:v000014E4d000016ACsv0000103Csd0000703D*
+ pci:v000014E4d000016AD*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function
++pci:v000014E4d000016ADsv0000103Csd00001916*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630FLB Adapter
++
++pci:v000014E4d000016ADsv0000103Csd00001917*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 20Gb 2-port 630M Adapter
++
+ pci:v000014E4d000016AE*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function
++pci:v000014E4d000016AEsv0000103Csd00001798*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530FLB Adapter
++
++pci:v000014E4d000016AEsv0000103Csd000017A5*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530M Adapter
++
++pci:v000014E4d000016AEsv0000103Csd000018D3*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530T Adapter
++
++pci:v000014E4d000016AEsv0000103Csd00001930*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 534FLR-SFP+ Adapter
++
++pci:v000014E4d000016AEsv0000103Csd00001931*
++ ID_MODEL_FROM_DATABASE=HP NPAR CN1100R Dual Port Converged Network Adapter
++
++pci:v000014E4d000016AEsv0000103Csd00001932*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 534FLB Adapter
++
++pci:v000014E4d000016AEsv0000103Csd00001933*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 534M Adapter
++
++pci:v000014E4d000016AEsv0000103Csd0000193A*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 533FLR-T Adapter
++
++pci:v000014E4d000016AEsv0000103Csd00003382*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530FLR-SFP+ Adapter
++
++pci:v000014E4d000016AEsv0000103Csd0000339D*
++ ID_MODEL_FROM_DATABASE=HP NPAR 10Gb 2-port 530SFP+ Adapter
++
+ pci:v000014E4d000016AF*
+  ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function
++pci:v000014E4d000016AFsv0000103Csd00001798*
++ ID_MODEL_FROM_DATABASE=HP Flex-10 10Gb 2-port 530FLB Adapter
++
++pci:v000014E4d000016AFsv0000103Csd000017A5*
++ ID_MODEL_FROM_DATABASE=HP Flex-10 10Gb 2-port 530M Adapter
++
++pci:v000014E4d000016AFsv0000103Csd000018D3*
++ ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530T Adapter
++
++pci:v000014E4d000016AFsv0000103Csd00001930*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLR-SFP+ Adapter
++
++pci:v000014E4d000016AFsv0000103Csd00001931*
++ ID_MODEL_FROM_DATABASE=HP StoreFabric CN1100R Dual Port Converged Network Adapter
++
++pci:v000014E4d000016AFsv0000103Csd00001932*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534FLB Adapter
++
++pci:v000014E4d000016AFsv0000103Csd00001933*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 534M Adapter
++
++pci:v000014E4d000016AFsv0000103Csd0000193A*
++ ID_MODEL_FROM_DATABASE=HP FlexFabric 10Gb 2-port 533FLR-T Adapter
++
++pci:v000014E4d000016AFsv0000103Csd00003382*
++ ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530FLR-SFP+ Adapter
++
++pci:v000014E4d000016AFsv0000103Csd0000339D*
++ ID_MODEL_FROM_DATABASE=HP Ethernet 10Gb 2-port 530SFP+ Adapter
++
+ pci:v000014E4d000016B0*
+  ID_MODEL_FROM_DATABASE=NetXtreme BCM57761 Gigabit Ethernet PCIe
+@@ -49484,6 +50072,9 @@ pci:v00001814d0000539F*
+ pci:v00001814d0000539Fsv0000103Csd00001637*
+  ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 PCIe wireless card
++pci:v00001814d00005592*
++ ID_MODEL_FROM_DATABASE=RT5592 PCIe Wireless Network Adapter
++
+ pci:v00001814d0000E932*
+  ID_MODEL_FROM_DATABASE=RT2560F 802.11 b/g PCI
+@@ -50480,6 +51071,12 @@ pci:v0000193Fd00000367*
+ pci:v0000193Fd00000370*
+  ID_MODEL_FROM_DATABASE=AHA370-PCIe
++pci:v0000193Fd00003641*
++ ID_MODEL_FROM_DATABASE=AHA3641
++
++pci:v0000193Fd00003642*
++ ID_MODEL_FROM_DATABASE=AHA3642
++
+ pci:v00001942*
+  ID_VENDOR_FROM_DATABASE=ClearSpeed Technology plc
+@@ -50633,6 +51230,9 @@ pci:v00001957d00000084*
+ pci:v00001957d00000085*
+  ID_MODEL_FROM_DATABASE=MPC8347 PBGA
++pci:v00001957d00000085sv0000110Asd00004046*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1623
++
+ pci:v00001957d00000086*
+  ID_MODEL_FROM_DATABASE=MPC8343E
+@@ -51095,6 +51695,9 @@ pci:v000019A2d00000710sv0000103Csd00003341*
+ pci:v000019A2d00000710sv0000103Csd00003345*
+  ID_MODEL_FROM_DATABASE=NC553m 10Gb 2-port FlexFabric Converged Network Adapter
++pci:v000019A2d00000710sv0000103Csd0000337B*
++ ID_MODEL_FROM_DATABASE=NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter
++
+ pci:v000019A2d00000712*
+  ID_MODEL_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator (be3)
+@@ -51104,6 +51707,9 @@ pci:v000019A2d00000714*
+ pci:v000019A2d00000714sv0000103Csd00003315*
+  ID_MODEL_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter
++pci:v000019A2d00000714sv0000103Csd0000337B*
++ ID_MODEL_FROM_DATABASE=NC554FLB 10Gb 2-port FlexFabric Converged Network Adapter
++
+ pci:v000019A8*
+  ID_VENDOR_FROM_DATABASE=DAQDATA GmbH
+@@ -51236,6 +51842,9 @@ pci:v00001A22*
+ pci:v00001A29*
+  ID_VENDOR_FROM_DATABASE=Fortinet, Inc.
++pci:v00001A29d00004338*
++ ID_MODEL_FROM_DATABASE=CP8 Content Processor ASIC
++
+ pci:v00001A2B*
+  ID_VENDOR_FROM_DATABASE=Ascom AG
+@@ -51605,6 +52214,12 @@ pci:v00001AF4d00001005*
+ pci:v00001AF4d00001009*
+  ID_MODEL_FROM_DATABASE=Virtio filesystem
++pci:v00001AF4d00001110*
++ ID_MODEL_FROM_DATABASE=Virtio Inter-VM shared memory
++
++pci:v00001AF4d00001110sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00001AF5*
+  ID_VENDOR_FROM_DATABASE=Netezza Corp.
+@@ -51647,6 +52262,9 @@ pci:v00001B21d00000612sv00001849sd00000612*
+ pci:v00001B21d00001042*
+  ID_MODEL_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller
++pci:v00001B21d00001042sv00001043sd00008488*
++ ID_MODEL_FROM_DATABASE=P8B WS Motherboard
++
+ pci:v00001B21d00001042sv00001849sd00001042*
+  ID_MODEL_FROM_DATABASE=Motherboard
+@@ -51662,6 +52280,39 @@ pci:v00001B2C*
+ pci:v00001B36*
+  ID_VENDOR_FROM_DATABASE=Red Hat, Inc.
++pci:v00001B36d00000001*
++ ID_MODEL_FROM_DATABASE=QEMU PCI-PCI bridge
++
++pci:v00001B36d00000002*
++ ID_MODEL_FROM_DATABASE=QEMU PCI 16550A Adapter
++
++pci:v00001B36d00000002sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
++pci:v00001B36d00000003*
++ ID_MODEL_FROM_DATABASE=QEMU PCI Dual-port 16550A Adapter
++
++pci:v00001B36d00000003sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
++pci:v00001B36d00000004*
++ ID_MODEL_FROM_DATABASE=QEMU PCI Quad-port 16550A Adapter
++
++pci:v00001B36d00000004sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
++pci:v00001B36d00000005*
++ ID_MODEL_FROM_DATABASE=QEMU PCI Test Device
++
++pci:v00001B36d00000005sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
++pci:v00001B36d00000100*
++ ID_MODEL_FROM_DATABASE=QXL paravirtual graphic card
++
++pci:v00001B36d00000100sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00001B37*
+  ID_VENDOR_FROM_DATABASE=Signal Processing Devices Sweden AB
+@@ -51725,6 +52376,9 @@ pci:v00001B4Bd00009130sv00001043sd00008438*
+ pci:v00001B4Bd00009172*
+  ID_MODEL_FROM_DATABASE=88SE9172 SATA 6Gb/s Controller
++pci:v00001B4Bd00009178*
++ ID_MODEL_FROM_DATABASE=88SE9170 PCIe SATA 6Gb/s Controller
++
+ pci:v00001B4Bd0000917A*
+  ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
+@@ -51875,6 +52529,9 @@ pci:v00001BBFd00000004*
+ pci:v00001BF4*
+  ID_VENDOR_FROM_DATABASE=VTI Instruments Corporation
++pci:v00001BF4d00000001*
++ ID_MODEL_FROM_DATABASE=SentinelEX
++
+ pci:v00001BFD*
+  ID_VENDOR_FROM_DATABASE=EeeTOP
+@@ -51902,6 +52559,18 @@ pci:v00001C2Cd000000A1*
+ pci:v00001C2Cd000000A2*
+  ID_MODEL_FROM_DATABASE=FBC8XG Capture 8x10Gb
++pci:v00001C2Cd000000A3*
++ ID_MODEL_FROM_DATABASE=FBC2XG Capture 2x10Gb
++
++pci:v00001C2Cd000000A4*
++ ID_MODEL_FROM_DATABASE=FBC4XGG3 Capture 4x10Gb
++
++pci:v00001C2Cd000000A5*
++ ID_MODEL_FROM_DATABASE=FBC2XLG Capture 2x40Gb
++
++pci:v00001C2Cd000000A6*
++ ID_MODEL_FROM_DATABASE=FBC1CG Capture 1x100Gb
++
+ pci:v00001C32*
+  ID_VENDOR_FROM_DATABASE=Highland Technology, Inc.
+@@ -53970,7 +54639,7 @@ pci:v00008086d00000100sv00001028sd000004AA*
+  ID_MODEL_FROM_DATABASE=XPS 8300
+ pci:v00008086d00000100sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P8P67/P8H67 Series Motherboard
+ pci:v00008086d00000101*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port
+@@ -53987,6 +54656,9 @@ pci:v00008086d00000102*
+ pci:v00008086d00000102sv00001028sd000004AA*
+  ID_MODEL_FROM_DATABASE=XPS 8300
++pci:v00008086d00000102sv00001043sd00000102*
++ ID_MODEL_FROM_DATABASE=P8H67 Series Motherboard
++
+ pci:v00008086d00000104*
+  ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller
+@@ -54065,9 +54737,15 @@ pci:v00008086d00000151*
+ pci:v00008086d00000151sv00001043sd00001477*
+  ID_MODEL_FROM_DATABASE=N56VZ
++pci:v00008086d00000151sv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
+ pci:v00008086d00000151sv00001043sd000084CA*
+  ID_MODEL_FROM_DATABASE=P8H77-I Motherboard
++pci:v00008086d00000151sv00008086sd00002010*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00000152*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+@@ -54098,12 +54776,21 @@ pci:v00008086d00000154sv00001043sd00001517*
+ pci:v00008086d00000155*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
++pci:v00008086d00000155sv00008086sd00002010*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00000156*
+  ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller
+ pci:v00008086d00000158*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller
++pci:v00008086d00000158sv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
++pci:v00008086d00000158sv00008086sd00002010*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00000159*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
+@@ -54116,6 +54803,9 @@ pci:v00008086d0000015C*
+ pci:v00008086d0000015D*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port
++pci:v00008086d0000015Dsv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
+ pci:v00008086d0000015E*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+@@ -54137,6 +54827,9 @@ pci:v00008086d00000166sv00001043sd00002103*
+ pci:v00008086d0000016A*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
++pci:v00008086d0000016Asv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8B WS Motherboard
++
+ pci:v00008086d00000172*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
+@@ -54753,7 +55446,7 @@ pci:v00008086d0000095Asv00008086sd00005002*
+  ID_MODEL_FROM_DATABASE=Wireless-N 7265
+ pci:v00008086d0000095Asv00008086sd0000500A*
+- ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
+ pci:v00008086d0000095Asv00008086sd00005010*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+@@ -54770,9 +55463,18 @@ pci:v00008086d0000095Asv00008086sd0000502A*
+ pci:v00008086d0000095Asv00008086sd00005090*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00005100*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
++pci:v00008086d0000095Asv00008086sd0000510A*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00005110*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00005112*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00005190*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+@@ -54794,9 +55496,15 @@ pci:v00008086d0000095Asv00008086sd00005590*
+ pci:v00008086d0000095Asv00008086sd00009010*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00009012*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00009110*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++pci:v00008086d0000095Asv00008086sd00009112*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
++
+ pci:v00008086d0000095Asv00008086sd00009210*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
+@@ -55089,397 +55797,409 @@ pci:v00008086d00000D36*
+  ID_MODEL_FROM_DATABASE=Crystal Well Integrated Graphics Controller
+ pci:v00008086d00000E00*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DMI2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DMI2
+ pci:v00008086d00000E01*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port in DMI2 Mode
+ pci:v00008086d00000E02*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 1a
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1a
+ pci:v00008086d00000E03*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 1b
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 1b
+ pci:v00008086d00000E04*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2a
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2a
+ pci:v00008086d00000E05*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2b
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2b
+ pci:v00008086d00000E06*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2c
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2c
+ pci:v00008086d00000E07*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 2d
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 2d
+ pci:v00008086d00000E08*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3a
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3a
+ pci:v00008086d00000E09*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3b
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3b
+ pci:v00008086d00000E0A*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3c
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3c
+ pci:v00008086d00000E0B*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 PCI Express Root Port 3d
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 PCI Express Root Port 3d
+ pci:v00008086d00000E10*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+ pci:v00008086d00000E13*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+ pci:v00008086d00000E17*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+ pci:v00008086d00000E18*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+ pci:v00008086d00000E1C*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO Configuration Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IIO Configuration Registers
+ pci:v00008086d00000E1D*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+ pci:v00008086d00000E1E*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 UBOX Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
+ pci:v00008086d00000E1F*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 UBOX Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
+ pci:v00008086d00000E20*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 0
+ pci:v00008086d00000E21*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 1
+ pci:v00008086d00000E22*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 2
+ pci:v00008086d00000E23*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 3
+ pci:v00008086d00000E24*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 4
+ pci:v00008086d00000E25*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 5
+ pci:v00008086d00000E26*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 6
+ pci:v00008086d00000E27*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Crystal Beach DMA Channel 7
+ pci:v00008086d00000E28*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 VTd/Memory Map/Misc
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 VTd/Memory Map/Misc
+ pci:v00008086d00000E29*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Memory Hotplug
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Memory Hotplug
+ pci:v00008086d00000E2A*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IIO RAS
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IIO RAS
+ pci:v00008086d00000E2C*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 IOAPIC
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 IOAPIC
+ pci:v00008086d00000E2E*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 CBDMA
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA
+ pci:v00008086d00000E2F*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 CBDMA
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 CBDMA
+ pci:v00008086d00000E30*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0
+ pci:v00008086d00000E32*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0
+ pci:v00008086d00000E33*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
+ pci:v00008086d00000E34*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+ pci:v00008086d00000E36*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+ pci:v00008086d00000E37*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+ pci:v00008086d00000E38*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1
+ pci:v00008086d00000E3A*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2
+ pci:v00008086d00000E3E*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+ pci:v00008086d00000E3F*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Performance Ring Monitoring
+ pci:v00008086d00000E40*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 2
+ pci:v00008086d00000E41*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+ pci:v00008086d00000E43*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2
+ pci:v00008086d00000E44*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 2
++
++pci:v00008086d00000E45*
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
++
++pci:v00008086d00000E47*
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+ pci:v00008086d00000E60*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 1
+ pci:v00008086d00000E68*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Target Address/Thermal Registers
+ pci:v00008086d00000E6A*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ pci:v00008086d00000E6B*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ pci:v00008086d00000E6C*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ pci:v00008086d00000E6D*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel Target Address Decoder Registers
+ pci:v00008086d00000E71*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 RAS Registers
+ pci:v00008086d00000E74*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+ pci:v00008086d00000E75*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 R2PCIe
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 R2PCIe
+ pci:v00008086d00000E77*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+ pci:v00008086d00000E79*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 RAS Registers
+ pci:v00008086d00000E7D*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 UBOX Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 UBOX Registers
+ pci:v00008086d00000E7F*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+ pci:v00008086d00000E80*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 0
+ pci:v00008086d00000E81*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Ring Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Ring Registers
+ pci:v00008086d00000E83*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0
+ pci:v00008086d00000E84*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 0
++
++pci:v00008086d00000E85*
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+ pci:v00008086d00000E87*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Registers
+ pci:v00008086d00000E90*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
+ pci:v00008086d00000E93*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link 1
+ pci:v00008086d00000E94*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 QPI Link Reut 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Reut 1
++
++pci:v00008086d00000E95*
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 QPI Link Agent Register
+ pci:v00008086d00000EA0*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Home Agent 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Home Agent 0
+ pci:v00008086d00000EA8*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Target Address/Thermal Registers
+ pci:v00008086d00000EAA*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ pci:v00008086d00000EAB*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ pci:v00008086d00000EAC*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ pci:v00008086d00000EAD*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel Target Address Decoder Registers
+ pci:v00008086d00000EAE*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+ pci:v00008086d00000EAF*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+ pci:v00008086d00000EB0*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 0
+ pci:v00008086d00000EB1*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 1
+ pci:v00008086d00000EB2*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0
+ pci:v00008086d00000EB3*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1
+ pci:v00008086d00000EB4*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 2
+ pci:v00008086d00000EB5*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 Thermal Control 3
+ pci:v00008086d00000EB6*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2
+ pci:v00008086d00000EB7*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3
+ pci:v00008086d00000EBC*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+ pci:v00008086d00000EBE*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+ pci:v00008086d00000EBF*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO Registers
+ pci:v00008086d00000EC0*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 0
+ pci:v00008086d00000EC1*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 1
+ pci:v00008086d00000EC2*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 2
+ pci:v00008086d00000EC3*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 3
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 3
+ pci:v00008086d00000EC4*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Power Control Unit 4
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Power Control Unit 4
+ pci:v00008086d00000EC8*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 System Address Decoder
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 System Address Decoder
+ pci:v00008086d00000EC9*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Broadcast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers
+ pci:v00008086d00000ECA*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Broadcast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Broadcast Registers
+ pci:v00008086d00000ED8*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000ED9*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EDC*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EDD*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EDE*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EDF*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EE0*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE1*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE2*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE3*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE4*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE5*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE6*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE7*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE8*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EE9*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EEA*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EEB*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EEC*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EED*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EEE*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Unicast Registers
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Unicast Registers
+ pci:v00008086d00000EF0*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 0
+ pci:v00008086d00000EF1*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 1
+ pci:v00008086d00000EF2*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0
+ pci:v00008086d00000EF3*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1
+ pci:v00008086d00000EF4*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 2
+ pci:v00008086d00000EF5*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 Thermal Control 3
+ pci:v00008086d00000EF6*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2
+ pci:v00008086d00000EF7*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3
+ pci:v00008086d00000EF8*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EF9*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EFA*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EFB*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EFC*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000EFD*
+- ID_MODEL_FROM_DATABASE=Xeon E5 v2/Core i7 DDRIO
++ ID_MODEL_FROM_DATABASE=Xeon E7 v2/Xeon E5 v2/Core i7 DDRIO
+ pci:v00008086d00000F00*
+  ID_MODEL_FROM_DATABASE=ValleyView SSA-CUnit
+@@ -55868,6 +56588,9 @@ pci:v00008086d0000100Esv00001028sd00000151*
+ pci:v00008086d0000100Esv0000107Bsd00008920*
+  ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
++pci:v00008086d0000100Esv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d0000100Esv00008086sd0000001E*
+  ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter
+@@ -56057,6 +56780,9 @@ pci:v00008086d0000101Esv00008086sd0000101E*
+ pci:v00008086d00001026*
+  ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller
++pci:v00008086d00001026sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d00001026sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -56867,15 +57593,24 @@ pci:v00008086d000010D3*
+ pci:v00008086d000010D3sv0000103Csd00003250*
+  ID_MODEL_FROM_DATABASE=NC112T PCI Express single Port Gigabit Server Adapter
++pci:v00008086d000010D3sv00001043sd00008369*
++ ID_MODEL_FROM_DATABASE=Motherboard
++
+ pci:v00008086d000010D3sv000010A9sd00008029*
+  ID_MODEL_FROM_DATABASE=Prism XL Single Port Gigabit Ethernet
+ pci:v00008086d000010D3sv000015D9sd0000060A*
+  ID_MODEL_FROM_DATABASE=X7SPA-H/X7SPA-HF Motherboard
++pci:v00008086d000010D3sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d000010D3sv00008086sd00000001*
+  ID_MODEL_FROM_DATABASE=Gigabit CT2 Desktop Adapter
++pci:v00008086d000010D3sv00008086sd0000357A*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d000010D3sv00008086sd0000A01F*
+  ID_MODEL_FROM_DATABASE=Gigabit CT Desktop Adapter
+@@ -57002,6 +57737,9 @@ pci:v00008086d000010EF*
+ pci:v00008086d000010EFsv00001028sd000002DA*
+  ID_MODEL_FROM_DATABASE=OptiPlex 980
++pci:v00008086d000010EFsv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d000010F0*
+  ID_MODEL_FROM_DATABASE=82578DC Gigabit Network Connection
+@@ -57086,6 +57824,9 @@ pci:v00008086d000010FBsv0000108Esd00007B11*
+ pci:v00008086d000010FBsv00001734sd000011A9*
+  ID_MODEL_FROM_DATABASE=10 Gigabit Dual Port Network Connection
++pci:v00008086d000010FBsv000017AAsd00001071*
++ ID_MODEL_FROM_DATABASE=ThinkServer X520-2 AnyFabric
++
+ pci:v00008086d000010FBsv00008086sd00000002*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-DA2
+@@ -57182,6 +57923,9 @@ pci:v00008086d00001209*
+ pci:v00008086d00001209sv0000140Bsd00000610*
+  ID_MODEL_FROM_DATABASE=PMC610 quad Ethernet board
++pci:v00008086d00001209sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00001209sv00004C53sd00001050*
+  ID_MODEL_FROM_DATABASE=CT7 mainboard
+@@ -57428,6 +58172,9 @@ pci:v00008086d00001229sv00001775sd00001100*
+ pci:v00008086d00001229sv00001775sd0000CE90*
+  ID_MODEL_FROM_DATABASE=CE9
++pci:v00008086d00001229sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00001229sv00004C53sd00001080*
+  ID_MODEL_FROM_DATABASE=CT8 mainboard
+@@ -57782,6 +58529,9 @@ pci:v00008086d00001502*
+ pci:v00008086d00001502sv00001028sd000004A3*
+  ID_MODEL_FROM_DATABASE=Precision M4600
++pci:v00008086d00001502sv00008086sd0000357A*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00001503*
+  ID_MODEL_FROM_DATABASE=82579V Gigabit Network Connection
+@@ -57878,12 +58628,18 @@ pci:v00008086d00001520*
+ pci:v00008086d00001521*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection
++pci:v00008086d00001521sv00001028sd00000602*
++ ID_MODEL_FROM_DATABASE=Gigabit 2P I350-t LOM
++
+ pci:v00008086d00001521sv00001028sd00001F60*
+  ID_MODEL_FROM_DATABASE=Intel GbE 4P I350crNDC
+ pci:v00008086d00001521sv00001028sd00001F62*
+  ID_MODEL_FROM_DATABASE=Intel GbE 2P I350crNDC
++pci:v00008086d00001521sv00001028sd0000FF9A*
++ ID_MODEL_FROM_DATABASE=Gigabit 4P X710/I350 rNDC
++
+ pci:v00008086d00001521sv0000103Csd000017D1*
+  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366FLR Adapter
+@@ -57911,6 +58667,9 @@ pci:v00008086d00001521sv0000108Esd00007B18*
+ pci:v00008086d00001521sv000010A9sd0000802A*
+  ID_MODEL_FROM_DATABASE=UV2-BaseIO dual-port GbE
++pci:v00008086d00001521sv000017AAsd00001074*
++ ID_MODEL_FROM_DATABASE=ThinkServer I350-T4 AnyFabric
++
+ pci:v00008086d00001521sv00008086sd00000001*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4
+@@ -57962,6 +58721,9 @@ pci:v00008086d00001522sv00008086sd000000A4*
+ pci:v00008086d00001523*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection
++pci:v00008086d00001523sv00001028sd00001F9B*
++ ID_MODEL_FROM_DATABASE=Gigabit 4P I350 bNDC
++
+ pci:v00008086d00001523sv0000103Csd00001784*
+  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter
+@@ -58025,6 +58787,9 @@ pci:v00008086d00001528sv0000108Esd00007B15*
+ pci:v00008086d00001528sv00001137sd000000BF*
+  ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2
++pci:v00008086d00001528sv000017AAsd00001073*
++ ID_MODEL_FROM_DATABASE=ThinkServer X540-T2 AnyFabric
++
+ pci:v00008086d00001528sv00008086sd00000001*
+  ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2
+@@ -58055,6 +58820,9 @@ pci:v00008086d00001533*
+ pci:v00008086d00001533sv0000103Csd00000003*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1
++pci:v00008086d00001533sv000017AAsd00001100*
++ ID_MODEL_FROM_DATABASE=ThinkServer Ethernet Server Adapter
++
+ pci:v00008086d00001533sv00008086sd00000001*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1
+@@ -58103,6 +58871,9 @@ pci:v00008086d0000154Asv00008086sd0000011B*
+ pci:v00008086d0000154Asv00008086sd0000011C*
+  ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4
++pci:v00008086d0000154C*
++ ID_MODEL_FROM_DATABASE=XL710 X710 Virtual Function
++
+ pci:v00008086d0000154D*
+  ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X520 Adapter
+@@ -58148,12 +58919,78 @@ pci:v00008086d0000155Dsv00008086sd00000002*
+ pci:v00008086d00001560*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X540
++pci:v00008086d00001571*
++ ID_MODEL_FROM_DATABASE=XL710 X710 Virtual Function
++
++pci:v00008086d00001572*
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X710 Adapter
++
++pci:v00008086d00001572sv00001028sd00001F99*
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X710/I350 rNDC
++
++pci:v00008086d00001572sv00008086sd00000001*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-4
++
++pci:v00008086d00001572sv00008086sd00000002*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-4
++
++pci:v00008086d00001572sv00008086sd00000004*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-4
++
++pci:v00008086d00001572sv00008086sd00000005*
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X710 Adapter
++
++pci:v00008086d00001572sv00008086sd00000006*
++ ID_MODEL_FROM_DATABASE=Ethernet 10G2P X710 Adapter
++
++pci:v00008086d00001572sv00008086sd00000007*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-2
++
++pci:v00008086d00001572sv00008086sd00000008*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X710-2
++
+ pci:v00008086d0000157B*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+ pci:v00008086d0000157C*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection
++pci:v00008086d00001580*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40Gbe backplane
++
++pci:v00008086d00001581*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10Gbe backplane
++
++pci:v00008086d00001581sv00001028sd00001F98*
++ ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X710-k bNDC
++
++pci:v00008086d00001583*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+
++
++pci:v00008086d00001583sv00008086sd00000001*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q2
++
++pci:v00008086d00001583sv00008086sd00000002*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q2
++
++pci:v00008086d00001583sv00008086sd00000003*
++ ID_MODEL_FROM_DATABASE=Ethernet I/O Module XL710-Q2
++
++pci:v00008086d00001584*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+
++
++pci:v00008086d00001584sv00008086sd00000001*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q1
++
++pci:v00008086d00001584sv00008086sd00000002*
++ ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter XL710-Q1
++
++pci:v00008086d00001584sv00008086sd00000003*
++ ID_MODEL_FROM_DATABASE=Ethernet I/O Module XL710-Q1
++
++pci:v00008086d00001585*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 10GbE QSFP+
++
+ pci:v00008086d000015A0*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM
+@@ -58166,6 +59003,117 @@ pci:v00008086d000015A2*
+ pci:v00008086d000015A3*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection (3) I218-V
++pci:v00008086d00001600*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI
++
++pci:v00008086d00001601*
++ ID_MODEL_FROM_DATABASE=Broadwell-U PCI Express x16 Controller
++
++pci:v00008086d00001602*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001603*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Camarillo Device
++
++pci:v00008086d00001604*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI
++
++pci:v00008086d00001605*
++ ID_MODEL_FROM_DATABASE=Broadwell-U PCI Express x8 Controller
++
++pci:v00008086d00001606*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001607*
++ ID_MODEL_FROM_DATABASE=Broadwell-U CHAPS Device
++
++pci:v00008086d00001608*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge -OPI
++
++pci:v00008086d00001609*
++ ID_MODEL_FROM_DATABASE=Broadwell-U x4 PCIe
++
++pci:v00008086d0000160A*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000160B*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000160C*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Audio Controller
++
++pci:v00008086d0000160D*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000160E*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000160F*
++ ID_MODEL_FROM_DATABASE=Broadwell-U SoftSKU
++
++pci:v00008086d00001610*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge - DMI
++
++pci:v00008086d00001612*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001614*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge - DMI
++
++pci:v00008086d00001616*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001618*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Host Bridge - DMI
++
++pci:v00008086d0000161A*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000161B*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000161D*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000161E*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001622*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001626*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000162A*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000162B*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000162D*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000162E*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001632*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d00001636*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000163A*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000163B*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000163D*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
++pci:v00008086d0000163E*
++ ID_MODEL_FROM_DATABASE=Broadwell-U Integrated Graphics
++
+ pci:v00008086d00001960*
+  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor
+@@ -58308,7 +59256,10 @@ pci:v00008086d00001C02sv00001028sd000004AA*
+  ID_MODEL_FROM_DATABASE=XPS 8300
+ pci:v00008086d00001C02sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
++pci:v00008086d00001C02sv00008086sd00007270*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
+ pci:v00008086d00001C03*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller
+@@ -58346,8 +59297,11 @@ pci:v00008086d00001C10sv00001028sd000004AA*
+ pci:v00008086d00001C10sv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
++pci:v00008086d00001C10sv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
+ pci:v00008086d00001C10sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
+ pci:v00008086d00001C12*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2
+@@ -58379,18 +59333,27 @@ pci:v00008086d00001C18*
+ pci:v00008086d00001C18sv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
++pci:v00008086d00001C18sv00008086sd00007270*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00001C1A*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 6
+ pci:v00008086d00001C1Asv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
++pci:v00008086d00001C1Asv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
+ pci:v00008086d00001C1C*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 7
+ pci:v00008086d00001C1E*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 8
++pci:v00008086d00001C1Esv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
+ pci:v00008086d00001C20*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller
+@@ -58412,6 +59375,9 @@ pci:v00008086d00001C20sv00001028sd000004DA*
+ pci:v00008086d00001C20sv00001043sd00008418*
+  ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++pci:v00008086d00001C20sv00001043sd0000841B*
++ ID_MODEL_FROM_DATABASE=P8H67 Series Motherboard
++
+ pci:v00008086d00001C20sv00008086sd00002008*
+  ID_MODEL_FROM_DATABASE=DQ67SW board
+@@ -58434,10 +59400,10 @@ pci:v00008086d00001C22sv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
+ pci:v00008086d00001C22sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
+ pci:v00008086d00001C22sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
+ pci:v00008086d00001C24*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family Thermal Management Controller
+@@ -58461,10 +59427,10 @@ pci:v00008086d00001C26sv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
+ pci:v00008086d00001C26sv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
+ pci:v00008086d00001C26sv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
+ pci:v00008086d00001C27*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #1
+@@ -58494,10 +59460,10 @@ pci:v00008086d00001C2Dsv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
+ pci:v00008086d00001C2Dsv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
+ pci:v00008086d00001C2Dsv00008086sd00007270*
+- ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS / Apple MacBook Pro 8,1/8,2
+ pci:v00008086d00001C33*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LAN Controller
+@@ -58521,7 +59487,7 @@ pci:v00008086d00001C3Asv00001028sd000004DA*
+  ID_MODEL_FROM_DATABASE=Vostro 3750
+ pci:v00008086d00001C3Asv00001043sd0000844D*
+- ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
+ pci:v00008086d00001C3Asv00008086sd00007270*
+  ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011]
+@@ -58577,6 +59543,9 @@ pci:v00008086d00001C4A*
+ pci:v00008086d00001C4Asv00001028sd000004AA*
+  ID_MODEL_FROM_DATABASE=XPS 8300
++pci:v00008086d00001C4Asv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8H67 Series Motherboard
++
+ pci:v00008086d00001C4B*
+  ID_MODEL_FROM_DATABASE=HM67 Express Chipset Family LPC Controller
+@@ -58610,6 +59579,9 @@ pci:v00008086d00001C51*
+ pci:v00008086d00001C52*
+  ID_MODEL_FROM_DATABASE=C202 Chipset Family LPC Controller
++pci:v00008086d00001C52sv00008086sd00007270*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00001C53*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller
+@@ -58622,6 +59594,9 @@ pci:v00008086d00001C55*
+ pci:v00008086d00001C56*
+  ID_MODEL_FROM_DATABASE=C206 Chipset Family LPC Controller
++pci:v00008086d00001C56sv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8B WS Motherboard
++
+ pci:v00008086d00001C57*
+  ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller
+@@ -59345,6 +60320,9 @@ pci:v00008086d0000225C*
+ pci:v00008086d0000225D*
+  ID_MODEL_FROM_DATABASE=Xeon Phi coprocessor 3120 series
++pci:v00008086d0000225E*
++ ID_MODEL_FROM_DATABASE=Xeon Phi coprocessor 31S1
++
+ pci:v00008086d00002310*
+  ID_MODEL_FROM_DATABASE=DH89xxCC LPC Controller
+@@ -59495,6 +60473,9 @@ pci:v00008086d00002415sv000011D4sd00005340*
+ pci:v00008086d00002415sv00001734sd00001025*
+  ID_MODEL_FROM_DATABASE=Activy 3xx
++pci:v00008086d00002415sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002416*
+  ID_MODEL_FROM_DATABASE=82801AA AC'97 Modem Controller
+@@ -59804,6 +60785,9 @@ pci:v00008086d00002449sv00001186sd00007801*
+ pci:v00008086d00002449sv0000144Dsd00002602*
+  ID_MODEL_FROM_DATABASE=HomePNA 1M CNR
++pci:v00008086d00002449sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002449sv00008086sd00003010*
+  ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE
+@@ -59897,6 +60881,9 @@ pci:v00008086d0000244Esv00001028sd000002DA*
+ pci:v00008086d0000244Esv0000103Csd00002A3B*
+  ID_MODEL_FROM_DATABASE=Pavilion A1512X
++pci:v00008086d0000244Esv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d0000244Esv0000103Csd000031FE*
+  ID_MODEL_FROM_DATABASE=ProLiant DL140 G3
+@@ -59906,15 +60893,27 @@ pci:v00008086d0000244Esv0000103Csd0000330B*
+ pci:v00008086d0000244Esv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
++pci:v00008086d0000244Esv00001043sd0000844D*
++ ID_MODEL_FROM_DATABASE=P8 series motherboard
++
+ pci:v00008086d0000244Esv00001458sd00005000*
+  ID_MODEL_FROM_DATABASE=Motherboard
++pci:v00008086d0000244Esv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
++pci:v00008086d0000244Esv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d0000244Esv000015D9sd00009680*
+  ID_MODEL_FROM_DATABASE=X7DBN Motherboard
+ pci:v00008086d0000244Esv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
++pci:v00008086d0000244Esv00008086sd00007270*
++ ID_MODEL_FROM_DATABASE=Server Board S1200BTS
++
+ pci:v00008086d00002450*
+  ID_MODEL_FROM_DATABASE=82801E ISA Bridge (LPC)
+@@ -60671,6 +61670,9 @@ pci:v00008086d000024CDsv00001734sd00001004*
+ pci:v00008086d000024CDsv00001734sd00001055*
+  ID_MODEL_FROM_DATABASE=Amilo M1420
++pci:v00008086d000024CDsv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d000024CDsv00004C53sd00001090*
+  ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard
+@@ -60689,6 +61691,9 @@ pci:v00008086d000024D0*
+ pci:v00008086d000024D1*
+  ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller
++pci:v00008086d000024D1sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024D1sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -60740,6 +61745,9 @@ pci:v00008086d000024D2sv00001014sd000002DD*
+ pci:v00008086d000024D2sv00001014sd000002ED*
+  ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++pci:v00008086d000024D2sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024D2sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -60809,6 +61817,9 @@ pci:v00008086d000024D3sv00001014sd000002ED*
+ pci:v00008086d000024D3sv00001028sd00000156*
+  ID_MODEL_FROM_DATABASE=Precision 360
++pci:v00008086d000024D3sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024D3sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -60860,6 +61871,9 @@ pci:v00008086d000024D4sv00001014sd000002DD*
+ pci:v00008086d000024D4sv00001014sd000002ED*
+  ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++pci:v00008086d000024D4sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024D4sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -60926,6 +61940,9 @@ pci:v00008086d000024D5*
+ pci:v00008086d000024D5sv0000100Asd0000147B*
+  ID_MODEL_FROM_DATABASE=Abit IS7-E motherboard
++pci:v00008086d000024D5sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024D5sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -60977,6 +61994,9 @@ pci:v00008086d000024D7*
+ pci:v00008086d000024D7sv00001014sd000002ED*
+  ID_MODEL_FROM_DATABASE=xSeries server mainboard
++pci:v00008086d000024D7sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024D7sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -61040,6 +62060,9 @@ pci:v00008086d000024DBsv00001014sd000002DD*
+ pci:v00008086d000024DBsv00001014sd000002ED*
+  ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++pci:v00008086d000024DBsv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024DBsv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -61112,6 +62135,9 @@ pci:v00008086d000024DDsv00001014sd000002DD*
+ pci:v00008086d000024DDsv00001014sd000002ED*
+  ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++pci:v00008086d000024DDsv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024DDsv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -61169,6 +62195,9 @@ pci:v00008086d000024DE*
+ pci:v00008086d000024DEsv00001014sd000002ED*
+  ID_MODEL_FROM_DATABASE=xSeries server mainboard
++pci:v00008086d000024DEsv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d000024DEsv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -61208,6 +62237,21 @@ pci:v00008086d000024DEsv00008086sd0000524C*
+ pci:v00008086d000024DF*
+  ID_MODEL_FROM_DATABASE=82801ER (ICH5R) SATA Controller
++pci:v00008086d000024DFsv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
++pci:v00008086d000024F3*
++ ID_MODEL_FROM_DATABASE=Wireless 8260
++
++pci:v00008086d000024F3sv00008086sd00000010*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 8260
++
++pci:v00008086d000024F4*
++ ID_MODEL_FROM_DATABASE=Wireless 8260
++
++pci:v00008086d000024F4sv00008086sd00000030*
++ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 8260
++
+ pci:v00008086d00002500*
+  ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH)
+@@ -61679,6 +62723,9 @@ pci:v00008086d000025ABsv00001775sd00001100*
+ pci:v00008086d000025ABsv00001775sd0000CE90*
+  ID_MODEL_FROM_DATABASE=CE9
++pci:v00008086d000025ABsv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d000025ABsv00004C53sd000010B0*
+  ID_MODEL_FROM_DATABASE=CL9 mainboard
+@@ -62330,6 +63377,9 @@ pci:v00008086d00002668sv00001043sd0000814E*
+ pci:v00008086d00002668sv00001462sd00007028*
+  ID_MODEL_FROM_DATABASE=915P/G Neo2
++pci:v00008086d00002668sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d0000266A*
+  ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller
+@@ -62657,6 +63707,9 @@ pci:v00008086d00002770sv00001043sd0000817A*
+ pci:v00008086d00002770sv0000107Bsd00005048*
+  ID_MODEL_FROM_DATABASE=E4500
++pci:v00008086d00002770sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d00002770sv00008086sd0000544E*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
+@@ -62669,6 +63722,9 @@ pci:v00008086d00002772*
+ pci:v00008086d00002772sv0000103Csd00002A3B*
+  ID_MODEL_FROM_DATABASE=Pavilion A1512X
++pci:v00008086d00002772sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d00002772sv00008086sd0000544E*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
+@@ -62831,6 +63887,9 @@ pci:v00008086d000027B8sv00001043sd00008179*
+ pci:v00008086d000027B8sv0000107Bsd00005048*
+  ID_MODEL_FROM_DATABASE=E4500
++pci:v00008086d000027B8sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027B8sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -62906,6 +63965,9 @@ pci:v00008086d000027C0sv00001462sd00002310*
+ pci:v00008086d000027C0sv00001462sd00007236*
+  ID_MODEL_FROM_DATABASE=945P Neo3-F Rev. 2.2 motherboard
++pci:v00008086d000027C0sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027C0sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -62961,7 +64023,7 @@ pci:v00008086d000027C4sv00001028sd000001D7*
+  ID_MODEL_FROM_DATABASE=XPS M1210
+ pci:v00008086d000027C4sv000017AAsd0000200E*
+- ID_MODEL_FROM_DATABASE=Thinkpad T60 model 2007
++ ID_MODEL_FROM_DATABASE=ThinkPad T60
+ pci:v00008086d000027C5*
+  ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode]
+@@ -63026,6 +64088,9 @@ pci:v00008086d000027C8sv0000144Dsd0000C072*
+ pci:v00008086d000027C8sv00001458sd00005004*
+  ID_MODEL_FROM_DATABASE=GA-D525TUD
++pci:v00008086d000027C8sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027C8sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63089,6 +64154,9 @@ pci:v00008086d000027C9sv0000144Dsd0000C072*
+ pci:v00008086d000027C9sv00001458sd00005004*
+  ID_MODEL_FROM_DATABASE=GA-D525TUD
++pci:v00008086d000027C9sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027C9sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63152,6 +64220,9 @@ pci:v00008086d000027CAsv0000144Dsd0000C072*
+ pci:v00008086d000027CAsv00001458sd00005004*
+  ID_MODEL_FROM_DATABASE=GA-D525TUD
++pci:v00008086d000027CAsv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027CAsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63209,6 +64280,9 @@ pci:v00008086d000027CBsv0000144Dsd0000C072*
+ pci:v00008086d000027CBsv00001458sd00005004*
+  ID_MODEL_FROM_DATABASE=GA-D525TUD
++pci:v00008086d000027CBsv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027CBsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63266,6 +64340,9 @@ pci:v00008086d000027CCsv0000144Dsd0000C072*
+ pci:v00008086d000027CCsv00001458sd00005006*
+  ID_MODEL_FROM_DATABASE=GA-D525TUD
++pci:v00008086d000027CCsv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027CCsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63296,6 +64373,9 @@ pci:v00008086d000027D0sv0000144Dsd0000C072*
+ pci:v00008086d000027D0sv00001458sd00005001*
+  ID_MODEL_FROM_DATABASE=GA-D525TUD
++pci:v00008086d000027D0sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027D0sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63314,6 +64394,9 @@ pci:v00008086d000027D2sv0000103Csd000030A3*
+ pci:v00008086d000027D2sv0000144Dsd0000C072*
+  ID_MODEL_FROM_DATABASE=Notebook N150P
++pci:v00008086d000027D2sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027D2sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63326,6 +64409,9 @@ pci:v00008086d000027D4*
+ pci:v00008086d000027D4sv0000144Dsd0000C072*
+  ID_MODEL_FROM_DATABASE=Notebook N150P
++pci:v00008086d000027D4sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027D4sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63341,6 +64427,9 @@ pci:v00008086d000027D6sv0000103Csd000030A3*
+ pci:v00008086d000027D6sv0000144Dsd0000C072*
+  ID_MODEL_FROM_DATABASE=Notebook N150P
++pci:v00008086d000027D6sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027D6sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63410,6 +64499,9 @@ pci:v00008086d000027D8sv00001458sd0000A002*
+ pci:v00008086d000027D8sv00001458sd0000A102*
+  ID_MODEL_FROM_DATABASE=GA-8I945PG-RH Mainboard
++pci:v00008086d000027D8sv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027D8sv0000152Dsd00000753*
+  ID_MODEL_FROM_DATABASE=Softmodem
+@@ -63470,6 +64562,9 @@ pci:v00008086d000027DAsv0000144Dsd0000C072*
+ pci:v00008086d000027DAsv00001458sd00005001*
+  ID_MODEL_FROM_DATABASE=GA-8I945PG-RH/GA-D525TUD Mainboard
++pci:v00008086d000027DAsv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027DAsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63545,6 +64640,9 @@ pci:v00008086d000027DFsv0000107Bsd00005048*
+ pci:v00008086d000027DFsv000010F7sd00008338*
+  ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
++pci:v00008086d000027DFsv00001462sd00007418*
++ ID_MODEL_FROM_DATABASE=Wind PC MS-7418
++
+ pci:v00008086d000027DFsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+@@ -63632,6 +64730,9 @@ pci:v00008086d00002822*
+ pci:v00008086d00002822sv00001028sd0000020D*
+  ID_MODEL_FROM_DATABASE=Inspiron 530
++pci:v00008086d00002822sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002823*
+  ID_MODEL_FROM_DATABASE=Wellsburg sSATA RAID Controller
+@@ -64202,6 +65303,9 @@ pci:v00008086d00002916*
+ pci:v00008086d00002916sv00001028sd0000020D*
+  ID_MODEL_FROM_DATABASE=Inspiron 530
++pci:v00008086d00002916sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002916sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+@@ -64223,6 +65327,9 @@ pci:v00008086d00002918sv00001028sd00000236*
+ pci:v00008086d00002918sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002918sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002919*
+  ID_MODEL_FROM_DATABASE=ICH9M LPC Interface Controller
+@@ -64265,6 +65372,9 @@ pci:v00008086d00002921sv00001462sd00007360*
+ pci:v00008086d00002922*
+  ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
++pci:v00008086d00002922sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002922sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64331,6 +65441,9 @@ pci:v00008086d00002930sv00001028sd0000020D*
+ pci:v00008086d00002930sv00001028sd00000211*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
++pci:v00008086d00002930sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002930sv0000103Csd00003628*
+  ID_MODEL_FROM_DATABASE=dv6-1190en
+@@ -64340,6 +65453,9 @@ pci:v00008086d00002930sv00001043sd00008277*
+ pci:v00008086d00002930sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002930sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002930sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64388,12 +65504,18 @@ pci:v00008086d00002934sv00001028sd0000029C*
+ pci:v00008086d00002934sv00001028sd00002011*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
++pci:v00008086d00002934sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002934sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d00002934sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002934sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002934sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64433,12 +65555,18 @@ pci:v00008086d00002935sv00001028sd00000287*
+ pci:v00008086d00002935sv00001028sd0000029C*
+  ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++pci:v00008086d00002935sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002935sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d00002935sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002935sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002935sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64472,12 +65600,18 @@ pci:v00008086d00002936sv00001028sd00000287*
+ pci:v00008086d00002936sv00001028sd0000029C*
+  ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++pci:v00008086d00002936sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002936sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d00002936sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002936sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002936sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64511,12 +65645,18 @@ pci:v00008086d00002937sv00001028sd0000029C*
+ pci:v00008086d00002937sv00001028sd00002011*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
++pci:v00008086d00002937sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002937sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d00002937sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002937sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002937sv00008086sd00002937*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
+@@ -64553,12 +65693,18 @@ pci:v00008086d00002938sv00001028sd00000287*
+ pci:v00008086d00002938sv00001028sd0000029C*
+  ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller
++pci:v00008086d00002938sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002938sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d00002938sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002938sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002938sv00008086sd00002938*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
+@@ -64580,12 +65726,18 @@ pci:v00008086d00002939sv00001028sd00000210*
+ pci:v00008086d00002939sv00001028sd00000237*
+  ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller
++pci:v00008086d00002939sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002939sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d00002939sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d00002939sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00002939sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64625,12 +65777,18 @@ pci:v00008086d0000293Asv00001028sd00000287*
+ pci:v00008086d0000293Asv00001028sd0000029C*
+  ID_MODEL_FROM_DATABASE=PowerEdge M710 USB EHCI Controller
++pci:v00008086d0000293Asv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d0000293Asv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d0000293Asv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d0000293Asv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d0000293Asv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -64661,12 +65819,18 @@ pci:v00008086d0000293Csv00001028sd00000287*
+ pci:v00008086d0000293Csv00001028sd0000029C*
+  ID_MODEL_FROM_DATABASE=PowerEdge M710 USB EHCI Controller
++pci:v00008086d0000293Csv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d0000293Csv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+ pci:v00008086d0000293Csv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d0000293Csv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d0000293Csv00008086sd0000293C*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
+@@ -64685,6 +65849,9 @@ pci:v00008086d0000293Esv00001028sd0000020D*
+ pci:v00008086d0000293Esv00001028sd00000211*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
++pci:v00008086d0000293Esv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d0000293Esv0000103Csd00003628*
+  ID_MODEL_FROM_DATABASE=dv6-1190en
+@@ -64694,6 +65861,9 @@ pci:v00008086d0000293Esv00001043sd0000829F*
+ pci:v00008086d0000293Esv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d0000293Esv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d0000293Esv00008086sd0000293E*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
+@@ -64712,6 +65882,9 @@ pci:v00008086d00002940sv00001028sd0000020D*
+ pci:v00008086d00002940sv00001028sd00000211*
+  ID_MODEL_FROM_DATABASE=Optiplex 755
++pci:v00008086d00002940sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002940sv00001043sd00008277*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+@@ -64730,6 +65903,9 @@ pci:v00008086d00002944*
+ pci:v00008086d00002944sv00001028sd0000020D*
+  ID_MODEL_FROM_DATABASE=Inspiron 530
++pci:v00008086d00002944sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d00002946*
+  ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 4
+@@ -64910,6 +66086,9 @@ pci:v00008086d000029C0*
+ pci:v00008086d000029C0sv00001028sd0000020D*
+  ID_MODEL_FROM_DATABASE=Inspiron 530
++pci:v00008086d000029C0sv0000103Csd00002A6F*
++ ID_MODEL_FROM_DATABASE=Asus IPIBL-LB Motherboard
++
+ pci:v00008086d000029C0sv00001043sd00008276*
+  ID_MODEL_FROM_DATABASE=P5K PRO Motherboard
+@@ -64919,6 +66098,9 @@ pci:v00008086d000029C0sv00001043sd000082B0*
+ pci:v00008086d000029C0sv00001462sd00007360*
+  ID_MODEL_FROM_DATABASE=G33/P35 Neo
++pci:v00008086d000029C0sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d000029C0sv00008086sd00005044*
+  ID_MODEL_FROM_DATABASE=Desktop Board DP35DP
+@@ -66050,6 +67232,9 @@ pci:v00008086d00002F37*
+ pci:v00008086d00002F38*
+  ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 1
++pci:v00008086d00002F39*
++ ID_MODEL_FROM_DATABASE=Haswell-E I/O Performance Monitoring
++
+ pci:v00008086d00002F3A*
+  ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 2
+@@ -66899,6 +68084,9 @@ pci:v00008086d00003591*
+ pci:v00008086d00003591sv00001014sd000002DD*
+  ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard
++pci:v00008086d00003591sv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d00003591sv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -66968,6 +68156,9 @@ pci:v00008086d0000359Bsv00001014sd000002DD*
+ pci:v00008086d0000359E*
+  ID_MODEL_FROM_DATABASE=E7525 Memory Controller Hub
++pci:v00008086d0000359Esv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00008086d0000359Esv00001028sd00000169*
+  ID_MODEL_FROM_DATABASE=Precision 470
+@@ -67586,6 +68777,9 @@ pci:v00008086d00003B0A*
+ pci:v00008086d00003B0Asv00001028sd000002DA*
+  ID_MODEL_FROM_DATABASE=OptiPlex 980
++pci:v00008086d00003B0Asv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B0B*
+  ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller
+@@ -67661,6 +68855,9 @@ pci:v00008086d00003B22*
+ pci:v00008086d00003B22sv00001028sd000002DA*
+  ID_MODEL_FROM_DATABASE=OptiPlex 980
++pci:v00008086d00003B22sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B23*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller
+@@ -67715,6 +68912,9 @@ pci:v00008086d00003B30sv00001028sd000002DA*
+ pci:v00008086d00003B30sv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d00003B30sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B30sv0000E4BFsd000050C1*
+  ID_MODEL_FROM_DATABASE=PC1-GROOVE
+@@ -67736,6 +68936,9 @@ pci:v00008086d00003B34sv00001028sd000002DA*
+ pci:v00008086d00003B34sv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d00003B34sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B34sv0000E4BFsd000050C1*
+  ID_MODEL_FROM_DATABASE=PC1-GROOVE
+@@ -67769,6 +68972,9 @@ pci:v00008086d00003B3Csv00001028sd000002DA*
+ pci:v00008086d00003B3Csv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d00003B3Csv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B3Csv0000E4BFsd000050C1*
+  ID_MODEL_FROM_DATABASE=PC1-GROOVE
+@@ -67793,12 +68999,18 @@ pci:v00008086d00003B42sv00001028sd000002DA*
+ pci:v00008086d00003B42sv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d00003B42sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B44*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 2
+ pci:v00008086d00003B44sv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d00003B44sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B46*
+  ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 3
+@@ -67841,6 +69053,9 @@ pci:v00008086d00003B56sv00001028sd000002DA*
+ pci:v00008086d00003B56sv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d00003B56sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B56sv0000E4BFsd000050C1*
+  ID_MODEL_FROM_DATABASE=PC1-GROOVE
+@@ -67853,6 +69068,9 @@ pci:v00008086d00003B64*
+ pci:v00008086d00003B64sv00001025sd00000347*
+  ID_MODEL_FROM_DATABASE=Aspire 7740G
++pci:v00008086d00003B64sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d00003B64sv0000E4BFsd000050C1*
+  ID_MODEL_FROM_DATABASE=PC1-GROOVE
+@@ -68601,10 +69819,10 @@ pci:v00008086d0000504C*
+  ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist TDM
+ pci:v00008086d00005200*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server
++ ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server PCI Bridge
+ pci:v00008086d00005201*
+- ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server
++ ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server Fast Ethernet Controller
+ pci:v00008086d00005201sv00008086sd00000001*
+  ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Ethernet Adapter
+@@ -68612,6 +69830,12 @@ pci:v00008086d00005201sv00008086sd00000001*
+ pci:v00008086d0000530D*
+  ID_MODEL_FROM_DATABASE=80310 (IOP) IO Processor
++pci:v00008086d00005845*
++ ID_MODEL_FROM_DATABASE=QEMU NVM Express Controller
++
++pci:v00008086d00005845sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d000065C0*
+  ID_MODEL_FROM_DATABASE=5100 Chipset Memory Controller Hub
+@@ -68688,7 +69912,7 @@ pci:v00008086d00007020*
+  ID_MODEL_FROM_DATABASE=82371SB PIIX3 USB [Natoma/Triton II]
+ pci:v00008086d00007020sv00001AF4sd00001100*
+- ID_MODEL_FROM_DATABASE=Qemu virtual machine
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
+ pci:v00008086d00007030*
+  ID_MODEL_FROM_DATABASE=430VX - 82437VX TVX [Triton VX]
+@@ -68720,6 +69944,9 @@ pci:v00008086d00007112*
+ pci:v00008086d00007112sv000015ADsd00001976*
+  ID_MODEL_FROM_DATABASE=Virtual Machine Chipset
++pci:v00008086d00007112sv00001AF4sd00001100*
++ ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
++
+ pci:v00008086d00007113*
+  ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI
+@@ -69383,6 +70610,9 @@ pci:v00008086d00008D04*
+ pci:v00008086d00008D06*
+  ID_MODEL_FROM_DATABASE=Wellsburg SATA Controller [RAID mode]
++pci:v00008086d00008D06sv000017AAsd00001031*
++ ID_MODEL_FROM_DATABASE=ThinkServer RAID 110i
++
+ pci:v00008086d00008D08*
+  ID_MODEL_FROM_DATABASE=Wellsburg 2-port SATA Controller [IDE mode]
+@@ -69959,6 +71189,9 @@ pci:v00008086d0000D131*
+ pci:v00008086d0000D131sv00001028sd000002DA*
+  ID_MODEL_FROM_DATABASE=OptiPlex 980
++pci:v00008086d0000D131sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d0000D132*
+  ID_MODEL_FROM_DATABASE=Core Processor DMI
+@@ -69989,6 +71222,9 @@ pci:v00008086d0000D138sv00001028sd000002DA*
+ pci:v00008086d0000D138sv00001028sd0000040B*
+  ID_MODEL_FROM_DATABASE=Latitude E6510
++pci:v00008086d0000D138sv000015D9sd0000060D*
++ ID_MODEL_FROM_DATABASE=C7SIM-Q Motherboard
++
+ pci:v00008086d0000D139*
+  ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 2
+@@ -71144,6 +72380,9 @@ pci:v00009005d00008089*
+ pci:v00009005d0000808F*
+  ID_MODEL_FROM_DATABASE=AIC-7901 U320 w/HostRAID
++pci:v00009005d0000808Fsv00001028sd00000168*
++ ID_MODEL_FROM_DATABASE=Precision Workstation 670 Mainboard
++
+ pci:v00009005d00008090*
+  ID_MODEL_FROM_DATABASE=ASC-39320 U320 w/HostRAID
+@@ -71271,11 +72510,14 @@ pci:v00009710d00009912*
+  ID_MODEL_FROM_DATABASE=PCIe 9912 Multi-I/O Controller
+ pci:v00009710d00009922*
+- ID_MODEL_FROM_DATABASE=PCIe 9922 Multi-I/O Controller
++ ID_MODEL_FROM_DATABASE=MCS9922 PCIe Multi-I/O Controller
+ pci:v00009710d00009990*
+  ID_MODEL_FROM_DATABASE=MCS9990 PCIe to 4‐Port USB 2.0 Host Controller
++pci:v00009850*
++ ID_VENDOR_FROM_DATABASE=3Com (wrong ID)
++
+ pci:v00009902*
+  ID_VENDOR_FROM_DATABASE=Stargen Inc.
+@@ -71381,6 +72623,9 @@ pci:v0000BD11*
+ pci:v0000BDBD*
+  ID_VENDOR_FROM_DATABASE=Blackmagic Design
++pci:v0000BDBDd0000A106*
++ ID_MODEL_FROM_DATABASE=Multibridge Extreme
++
+ pci:v0000BDBDd0000A117*
+  ID_MODEL_FROM_DATABASE=Intensity Pro
+@@ -71585,6 +72830,51 @@ pci:v0000D84D*
+ pci:v0000DADA*
+  ID_VENDOR_FROM_DATABASE=Datapath Limited
++pci:v0000DADAd00000133*
++ ID_MODEL_FROM_DATABASE=VisionRGB-X2
++
++pci:v0000DADAd00000139*
++ ID_MODEL_FROM_DATABASE=VisionRGB-E1
++
++pci:v0000DADAd00000144*
++ ID_MODEL_FROM_DATABASE=VisionSD8
++
++pci:v0000DADAd00000150*
++ ID_MODEL_FROM_DATABASE=VisionRGB-E2
++
++pci:v0000DADAd00000151*
++ ID_MODEL_FROM_DATABASE=VisionSD4+1
++
++pci:v0000DADAd00000159*
++ ID_MODEL_FROM_DATABASE=VisionAV
++
++pci:v0000DADAd00000161*
++ ID_MODEL_FROM_DATABASE=DGC161
++
++pci:v0000DADAd00000165*
++ ID_MODEL_FROM_DATABASE=DGC165
++
++pci:v0000DADAd00000167*
++ ID_MODEL_FROM_DATABASE=DGC167
++
++pci:v0000DADAd00000168*
++ ID_MODEL_FROM_DATABASE=DGC168
++
++pci:v0000DADAd00001139*
++ ID_MODEL_FROM_DATABASE=VisionRGB-E1S
++
++pci:v0000DADAd00001150*
++ ID_MODEL_FROM_DATABASE=VisionRGB-E2S
++
++pci:v0000DADAd00001151*
++ ID_MODEL_FROM_DATABASE=VisionSD4+1S
++
++pci:v0000DADAd00001153*
++ ID_MODEL_FROM_DATABASE=VisionDVI-DL
++
++pci:v0000DADAd00001154*
++ ID_MODEL_FROM_DATABASE=VisionSDI2
++
+ pci:v0000DB10*
+  ID_VENDOR_FROM_DATABASE=Diablo Technologies
+@@ -71735,6 +73025,9 @@ pci:v0000E4BFd0000CC47*
+ pci:v0000E4BFd0000CC4D*
+  ID_MODEL_FROM_DATABASE=CCM-BOOGIE
++pci:v0000E4E4*
++ ID_VENDOR_FROM_DATABASE=Xorcom
++
+ pci:v0000E55E*
+  ID_VENDOR_FROM_DATABASE=Essence Technology, Inc.
+diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
+index 60dbcd2..014c628 100644
+--- a/hwdb/20-usb-vendor-model.hwdb
++++ b/hwdb/20-usb-vendor-model.hwdb
+@@ -20,6 +20,12 @@ usb:v0003*
+ usb:v0004*
+  ID_VENDOR_FROM_DATABASE=Nebraska Furniture Mart
++usb:v0011*
++ ID_VENDOR_FROM_DATABASE=Unknown manufacturer
++
++usb:v0011p7788*
++ ID_MODEL_FROM_DATABASE=Flash mass storage drive
++
+ usb:v0053*
+  ID_VENDOR_FROM_DATABASE=Planex
+@@ -30,7 +36,7 @@ usb:v0079*
+  ID_VENDOR_FROM_DATABASE=DragonRise Inc.
+ usb:v0079p0006*
+- ID_MODEL_FROM_DATABASE=Generic USB Joystick
++ ID_MODEL_FROM_DATABASE=PC TWIN SHOCK Gamepad
+ usb:v0079p0011*
+  ID_MODEL_FROM_DATABASE=Gamepad
+@@ -63,7 +69,7 @@ usb:v0204*
+  ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd
+ usb:v0204p6025*
+- ID_MODEL_FROM_DATABASE=CBM2080 Flash drive controller
++ ID_MODEL_FROM_DATABASE=CBM2080 / CBM2090 Flash drive controller
+ usb:v0204p6026*
+  ID_MODEL_FROM_DATABASE=CBM1180 Flash drive controller
+@@ -263,6 +269,9 @@ usb:v03EBp2109*
+ usb:v03EBp210D*
+  ID_MODEL_FROM_DATABASE=XPLAIN evaluation kit (CDC ACM)
++usb:v03EBp2110*
++ ID_MODEL_FROM_DATABASE=AVR JTAGICE3 Debugger and Programmer
++
+ usb:v03EBp2122*
+  ID_MODEL_FROM_DATABASE=XMEGA-A1 Explained evaluation kit
+@@ -1001,6 +1010,9 @@ usb:v03F0p2505*
+ usb:v03F0p2512*
+  ID_MODEL_FROM_DATABASE=OfficeJet Pro L7300
++usb:v03F0p2514*
++ ID_MODEL_FROM_DATABASE=4-port hub
++
+ usb:v03F0p2517*
+  ID_MODEL_FROM_DATABASE=LaserJet 2410
+@@ -1376,6 +1388,9 @@ usb:v03F0p5111*
+ usb:v03F0p5211*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 3300 series
++usb:v03F0p5307*
++ ID_MODEL_FROM_DATABASE=v165w Stick
++
+ usb:v03F0p5311*
+  ID_MODEL_FROM_DATABASE=OfficeJet 6300
+@@ -2054,6 +2069,21 @@ usb:v0403p8A28*
+ usb:v0403p8A98*
+  ID_MODEL_FROM_DATABASE=TIAO Multi-Protocol Adapter
++usb:v0403p8B28*
++ ID_MODEL_FROM_DATABASE=Alpermann+Velte TCI70
++
++usb:v0403p8B29*
++ ID_MODEL_FROM_DATABASE=Alpermann+Velte TC60 CLS
++
++usb:v0403p8B2A*
++ ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium Q1
++
++usb:v0403p8B2B*
++ ID_MODEL_FROM_DATABASE=Alpermann+Velte TCD
++
++usb:v0403p8B2C*
++ ID_MODEL_FROM_DATABASE=Alpermann+Velte TCC70
++
+ usb:v0403p9133*
+  ID_MODEL_FROM_DATABASE=CallerID
+@@ -2156,6 +2186,9 @@ usb:v0403pC8BD*
+ usb:v0403pC8BE*
+  ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium D1
++usb:v0403pC8BF*
++ ID_MODEL_FROM_DATABASE=Alpermann+Velte TC60 RLV
++
+ usb:v0403pCC48*
+  ID_MODEL_FROM_DATABASE=Tactrix OpenPort 1.3 Mitsubishi
+@@ -2966,6 +2999,9 @@ usb:v040Ap4021*
+ usb:v040Ap4022*
+  ID_MODEL_FROM_DATABASE=1400 Digital Photo Printer
++usb:v040Ap402E*
++ ID_MODEL_FROM_DATABASE=605 Photo Printer
++
+ usb:v040Ap4034*
+  ID_MODEL_FROM_DATABASE=805 Photo Printer
+@@ -4949,6 +4985,9 @@ usb:v043Ep7001*
+ usb:v043Ep7013*
+  ID_MODEL_FROM_DATABASE=MP3 Player
++usb:v043Ep70D7*
++ ID_MODEL_FROM_DATABASE=Mouse Scanner LSM-150 [LG Smart Scan Mouse]
++
+ usb:v043Ep70F5*
+  ID_MODEL_FROM_DATABASE=External HDD
+@@ -5114,6 +5153,9 @@ usb:v044FpB203*
+ usb:v044FpB300*
+  ID_MODEL_FROM_DATABASE=Firestorm Dual Power
++usb:v044FpB303*
++ ID_MODEL_FROM_DATABASE=FireStorm Dual Analog 2
++
+ usb:v044FpB304*
+  ID_MODEL_FROM_DATABASE=Firestorm Dual Power
+@@ -6437,6 +6479,9 @@ usb:v045Ep0772*
+ usb:v045Ep0779*
+  ID_MODEL_FROM_DATABASE=LifeCam HD-3000
++usb:v045Ep0780*
++ ID_MODEL_FROM_DATABASE=Comfort Curve Keyboard 3000
++
+ usb:v045Ep0797*
+  ID_MODEL_FROM_DATABASE=Optical Mouse 200
+@@ -7313,6 +7358,9 @@ usb:v046DpC062*
+ usb:v046DpC063*
+  ID_MODEL_FROM_DATABASE=DELL Laser Mouse
++usb:v046DpC064*
++ ID_MODEL_FROM_DATABASE=M110 corded optical mouse (M-B0001)
++
+ usb:v046DpC066*
+  ID_MODEL_FROM_DATABASE=G9x Laser Mouse
+@@ -7331,6 +7379,9 @@ usb:v046DpC06B*
+ usb:v046DpC06C*
+  ID_MODEL_FROM_DATABASE=Optical Mouse
++usb:v046DpC077*
++ ID_MODEL_FROM_DATABASE=M105 Optical Mouse
++
+ usb:v046DpC101*
+  ID_MODEL_FROM_DATABASE=UltraX Media Remote
+@@ -7361,6 +7412,9 @@ usb:v046DpC125*
+ usb:v046DpC126*
+  ID_MODEL_FROM_DATABASE=Harmony Link
++usb:v046DpC12B*
++ ID_MODEL_FROM_DATABASE=Harmony Touch Remote
++
+ usb:v046DpC201*
+  ID_MODEL_FROM_DATABASE=WingMan Extreme Joystick with Throttle
+@@ -7448,6 +7502,12 @@ usb:v046DpC226*
+ usb:v046DpC227*
+  ID_MODEL_FROM_DATABASE=G15 Refresh Keyboard
++usb:v046DpC228*
++ ID_MODEL_FROM_DATABASE=G19 Gaming Keyboard
++
++usb:v046DpC229*
++ ID_MODEL_FROM_DATABASE=G19 Gaming Keyboard Macro Interface
++
+ usb:v046DpC22A*
+  ID_MODEL_FROM_DATABASE=Gaming Keyboard G110
+@@ -7466,6 +7526,18 @@ usb:v046DpC245*
+ usb:v046DpC246*
+  ID_MODEL_FROM_DATABASE=Gaming Mouse G300
++usb:v046DpC248*
++ ID_MODEL_FROM_DATABASE=G105 Gaming Keyboard
++
++usb:v046DpC24A*
++ ID_MODEL_FROM_DATABASE=G600 Gaming Mouse
++
++usb:v046DpC24D*
++ ID_MODEL_FROM_DATABASE=G710 Gaming Keyboard
++
++usb:v046DpC24E*
++ ID_MODEL_FROM_DATABASE=G500s Laser Gaming Mouse
++
+ usb:v046DpC281*
+  ID_MODEL_FROM_DATABASE=WingMan Force
+@@ -8543,6 +8615,9 @@ usb:v0480pA006*
+ usb:v0480pA007*
+  ID_MODEL_FROM_DATABASE=External Disk USB 3.0
++usb:v0480pA009*
++ ID_MODEL_FROM_DATABASE=Stor.E Basics
++
+ usb:v0480pD010*
+  ID_MODEL_FROM_DATABASE=External Disk 3TB
+@@ -10814,6 +10889,9 @@ usb:v04A9p31E5*
+ usb:v04A9p31E6*
+  ID_MODEL_FROM_DATABASE=PowerShot SD940 IS DIGITAL ELPH / Digital IXUS 120 IS / IXY DIGITAL 220 IS
++usb:v04A9p31E7*
++ ID_MODEL_FROM_DATABASE=SELPHY CP790
++
+ usb:v04A9p31EA*
+  ID_MODEL_FROM_DATABASE=EOS Rebel T2i / EOS 550D / EOS Kiss X4
+@@ -10985,6 +11063,9 @@ usb:v04A9p325F*
+ usb:v04A9p3260*
+  ID_MODEL_FROM_DATABASE=PowerShot SX270 HS
++usb:v04A9p3262*
++ ID_MODEL_FROM_DATABASE=PowerShot A2600
++
+ usb:v04A9p3264*
+  ID_MODEL_FROM_DATABASE=PowerShot A1400
+@@ -11000,6 +11081,9 @@ usb:v04A9p3271*
+ usb:v04A9p3276*
+  ID_MODEL_FROM_DATABASE=PowerShot SX170 IS
++usb:v04A9p3277*
++ ID_MODEL_FROM_DATABASE=PowerShot SX510 HS
++
+ usb:v04A9p327D*
+  ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132
+@@ -11312,6 +11396,9 @@ usb:v04B3p4482*
+ usb:v04B3p4485*
+  ID_MODEL_FROM_DATABASE=Serial Converter
++usb:v04B3p4524*
++ ID_MODEL_FROM_DATABASE=40 Character Vacuum Fluorescent Display
++
+ usb:v04B3p4525*
+  ID_MODEL_FROM_DATABASE=Double sided CRT
+@@ -12335,6 +12422,9 @@ usb:v04C5p10FE*
+ usb:v04C5p1150*
+  ID_MODEL_FROM_DATABASE=fi-6230
++usb:v04C5p201D*
++ ID_MODEL_FROM_DATABASE=SATA 3.0 6Gbit/s Adaptor [GROOVY]
++
+ usb:v04C6*
+  ID_VENDOR_FROM_DATABASE=Toshiba America Electronic Components
+@@ -12374,6 +12464,9 @@ usb:v04C8p072D*
+ usb:v04CA*
+  ID_VENDOR_FROM_DATABASE=Lite-On Technology Corp.
++usb:v04CAp004F*
++ ID_MODEL_FROM_DATABASE=SK-9020 keyboard
++
+ usb:v04CAp1766*
+  ID_MODEL_FROM_DATABASE=HID Monitor Controls
+@@ -13346,6 +13439,9 @@ usb:v04E6p5292*
+ usb:v04E6p5410*
+  ID_MODEL_FROM_DATABASE=SCR35xx Smart Card Reader
++usb:v04E6p5591*
++ ID_MODEL_FROM_DATABASE=SCL3711-NFC&RW
++
+ usb:v04E6pE000*
+  ID_MODEL_FROM_DATABASE=SCRx31 Reader
+@@ -14138,6 +14234,9 @@ usb:v04F2p0841*
+ usb:v04F2p0860*
+  ID_MODEL_FROM_DATABASE=2.4G Multimedia Wireless Kit
++usb:v04F2p1121*
++ ID_MODEL_FROM_DATABASE=Periboard 717 Mini Wireless Keyboard
++
+ usb:v04F2pA001*
+  ID_MODEL_FROM_DATABASE=E-Video DC-100 Camera
+@@ -28935,10 +29034,10 @@ usb:v0906*
+  ID_VENDOR_FROM_DATABASE=Faraday Technology Corp.
+ usb:v0908*
+- ID_VENDOR_FROM_DATABASE=ShenZhen SANZHAI Technology Co.,Ltd
++ ID_VENDOR_FROM_DATABASE=Siemens AG
+ usb:v0908p2701*
+- ID_MODEL_FROM_DATABASE=Spy Pen VGA
++ ID_MODEL_FROM_DATABASE=ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA
+ usb:v0909*
+  ID_VENDOR_FROM_DATABASE=Audio-Technica Corp.
+@@ -38360,6 +38459,12 @@ usb:v0FFC*
+ usb:v0FFCp0021*
+  ID_MODEL_FROM_DATABASE=Nord Stage 2
++usb:v0FFD*
++ ID_VENDOR_FROM_DATABASE=EarlySense
++
++usb:v0FFDpFF00*
++ ID_MODEL_FROM_DATABASE=OEM
++
+ usb:v0FFF*
+  ID_VENDOR_FROM_DATABASE=Aopen, Inc.
+@@ -47762,6 +47867,12 @@ usb:v2237*
+ usb:v2237p4161*
+  ID_MODEL_FROM_DATABASE=eReader White
++usb:v228D*
++ ID_VENDOR_FROM_DATABASE=8D Technologies inc.
++
++usb:v228Dp0001*
++ ID_MODEL_FROM_DATABASE=Terminal Bike Key Reader
++
+ usb:v22A6*
+  ID_VENDOR_FROM_DATABASE=Pie Digital, Inc.
diff --git a/debian/patches/hwdb-update-381.patch b/debian/patches/hwdb-update-381.patch
new file mode 100644 (file)
index 0000000..7209013
--- /dev/null
@@ -0,0 +1,2056 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Sun, 13 Apr 2014 23:46:27 -0700
+Subject: hwdb: update
+
+(cherry picked from commit dbe633cc027e31a0d4fb488a3c68b7762ef0e7b3)
+(cherry picked from commit 6ece7006e35a434b961cbed397e9f71bf3b5c47e)
+---
+ hwdb/20-OUI.hwdb              | 275 +++++++++++++++++++++-
+ hwdb/20-pci-vendor-model.hwdb | 522 ++++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 751 insertions(+), 46 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index 209b89e..17794ed 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -6929,7 +6929,7 @@ OUI:0050C2912*
+  ID_OUI_FROM_DATABASE=ASSET InterTech, Inc.
+ OUI:0050C2913*
+- ID_OUI_FROM_DATABASE=Selex Sensors & Airborne Systems
++ ID_OUI_FROM_DATABASE=Selex Ex Ltd
+ OUI:0050C2914*
+  ID_OUI_FROM_DATABASE=IO-Connect
+@@ -15944,7 +15944,7 @@ OUI:000300*
+  ID_OUI_FROM_DATABASE=Barracuda Networks, Inc.
+ OUI:000301*
+- ID_OUI_FROM_DATABASE=Avantas Networks Corporation
++ ID_OUI_FROM_DATABASE=EXFO
+ OUI:000302*
+  ID_OUI_FROM_DATABASE=Charles Industries, Ltd.
+@@ -24575,7 +24575,7 @@ OUI:000E65*
+  ID_OUI_FROM_DATABASE=TransCore
+ OUI:000E66*
+- ID_OUI_FROM_DATABASE=Hitachi Advanced Digital, Inc.
++ ID_OUI_FROM_DATABASE=Hitachi Industry & Control Solutions, Ltd.
+ OUI:000E67*
+  ID_OUI_FROM_DATABASE=Eltis Microelectronics Ltd.
+@@ -24947,7 +24947,7 @@ OUI:000EE1*
+  ID_OUI_FROM_DATABASE=ExtremeSpeed Inc.
+ OUI:000EE2*
+- ID_OUI_FROM_DATABASE=Custom Engineering S.p.A.
++ ID_OUI_FROM_DATABASE=Custom Engineering
+ OUI:000EE3*
+  ID_OUI_FROM_DATABASE=Chiyu Technology Co.,Ltd
+@@ -51760,6 +51760,9 @@ OUI:045A95*
+ OUI:045C06*
+  ID_OUI_FROM_DATABASE=Zmodo Technology Corporation
++OUI:045C8E*
++ ID_OUI_FROM_DATABASE=gosund GROUP CO.,LTD
++
+ OUI:045D56*
+  ID_OUI_FROM_DATABASE=camtron industrial inc.
+@@ -51865,6 +51868,9 @@ OUI:04C5A4*
+ OUI:04C880*
+  ID_OUI_FROM_DATABASE=Samtec Inc
++OUI:04C991*
++ ID_OUI_FROM_DATABASE=Phistek INC.
++
+ OUI:04CB1D*
+  ID_OUI_FROM_DATABASE=Traka plc
+@@ -52633,6 +52639,9 @@ OUI:08CA45*
+ OUI:08CC68*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:08CD9B*
++ ID_OUI_FROM_DATABASE=samtec automotive electronics & software GmbH
++
+ OUI:08D09F*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -52684,6 +52693,9 @@ OUI:08F2F4*
+ OUI:08F6F8*
+  ID_OUI_FROM_DATABASE=GET Engineering
++OUI:08F728*
++ ID_OUI_FROM_DATABASE=GLOBO Multimedia Sp. z o.o. Sp.k.
++
+ OUI:08FAE0*
+  ID_OUI_FROM_DATABASE=Fohhn Audio AG
+@@ -52750,6 +52762,9 @@ OUI:0C3021*
+ OUI:0C37DC*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++OUI:0C383E*
++ ID_OUI_FROM_DATABASE=Fanvil Technology Co., Ltd.
++
+ OUI:0C3956*
+  ID_OUI_FROM_DATABASE=Observator instruments
+@@ -53104,6 +53119,9 @@ OUI:102D96*
+ OUI:102EAF*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:103047*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:103378*
+  ID_OUI_FROM_DATABASE=FLECTRON Co., LTD
+@@ -53215,6 +53233,9 @@ OUI:1088CE*
+ OUI:108CCF*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:109266*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:1093E9*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -53260,6 +53281,9 @@ OUI:10BF48*
+ OUI:10C2BA*
+  ID_OUI_FROM_DATABASE=UTT Co., Ltd.
++OUI:10C37B*
++ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++
+ OUI:10C586*
+  ID_OUI_FROM_DATABASE=BIO SOUND LAB CO., LTD.
+@@ -53365,6 +53389,9 @@ OUI:141BBD*
+ OUI:141BF0*
+  ID_OUI_FROM_DATABASE=Intellimedia Systems Ltd
++OUI:141FBA*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:1423D7*
+  ID_OUI_FROM_DATABASE=EUTRONIX CO., LTD.
+@@ -53518,6 +53545,9 @@ OUI:14B968*
+ OUI:14C089*
+  ID_OUI_FROM_DATABASE=DUNE HD LTD
++OUI:14C126*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:14C21D*
+  ID_OUI_FROM_DATABASE=Sabtech Industries
+@@ -53572,6 +53602,9 @@ OUI:14F28E*
+ OUI:14F42A*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:14F65A*
++ ID_OUI_FROM_DATABASE=Xiaomi inc.
++
+ OUI:14FEAF*
+  ID_OUI_FROM_DATABASE=SAGITTAR LIMITED
+@@ -53659,6 +53692,9 @@ OUI:182B05*
+ OUI:182C91*
+  ID_OUI_FROM_DATABASE=Concept Development, Inc.
++OUI:183009*
++ ID_OUI_FROM_DATABASE=Woojin Industrial Systems Co., Ltd.
++
+ OUI:1832A2*
+  ID_OUI_FROM_DATABASE=LAON TECHNOLOGY CO., LTD.
+@@ -53698,6 +53734,9 @@ OUI:184617*
+ OUI:1848D8*
+  ID_OUI_FROM_DATABASE=Fastback Networks
++OUI:184A6F*
++ ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
++
+ OUI:184E94*
+  ID_OUI_FROM_DATABASE=MESSOA TECHNOLOGIES INC.
+@@ -53758,6 +53797,9 @@ OUI:1880F5*
+ OUI:188331*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:1883BF*
++ ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
++
+ OUI:188410*
+  ID_OUI_FROM_DATABASE=CoreTrust Inc.
+@@ -54322,6 +54364,9 @@ OUI:206A8A*
+ OUI:206AFF*
+  ID_OUI_FROM_DATABASE=Atlas Elektronik UK Limited
++OUI:206E9C*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:206FEC*
+  ID_OUI_FROM_DATABASE=Braemac CA LLC
+@@ -54838,6 +54883,9 @@ OUI:284C53*
+ OUI:284D92*
+  ID_OUI_FROM_DATABASE=Luminator
++OUI:284ED7*
++ ID_OUI_FROM_DATABASE=OutSmart Power Systems, Inc.
++
+ OUI:284FCE*
+  ID_OUI_FROM_DATABASE=Liaoning Wontel Science and Technology Development Co.,Ltd.
+@@ -54976,6 +55024,9 @@ OUI:28C68E*
+ OUI:28C718*
+  ID_OUI_FROM_DATABASE=Altierre
++OUI:28C7CE*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:28C825*
+  ID_OUI_FROM_DATABASE=DellKing Industrial Co., Ltd
+@@ -55069,6 +55120,9 @@ OUI:28FBD3*
+ OUI:28FC51*
+  ID_OUI_FROM_DATABASE=The Electric Controller and Manufacturing Co., LLC
++OUI:28FCF6*
++ ID_OUI_FROM_DATABASE=Shenzhen Xin KingBrand enterprises Co.,Ltd
++
+ OUI:2C002C*
+  ID_OUI_FROM_DATABASE=UNOWHY
+@@ -55291,6 +55345,9 @@ OUI:2CB693*
+ OUI:2CB69D*
+  ID_OUI_FROM_DATABASE=RED Digital Cinema
++OUI:2CBE08*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:2CBE97*
+  ID_OUI_FROM_DATABASE=Ingenieurbuero Bickele und Buehler GmbH
+@@ -55354,6 +55411,9 @@ OUI:30055C*
+ OUI:300B9C*
+  ID_OUI_FROM_DATABASE=Delta Mobile Systems, Inc.
++OUI:300D2A*
++ ID_OUI_FROM_DATABASE=Zhejiang Wellcom Technology Co.,Ltd.
++
+ OUI:300ED5*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
+@@ -55450,6 +55510,9 @@ OUI:3055ED*
+ OUI:3057AC*
+  ID_OUI_FROM_DATABASE=IRLAB LTD.
++OUI:30595B*
++ ID_OUI_FROM_DATABASE=streamnow AG
++
+ OUI:3059B7*
+  ID_OUI_FROM_DATABASE=Microsoft
+@@ -55543,6 +55606,9 @@ OUI:30B3A2*
+ OUI:30B5C2*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++OUI:30B5F1*
++ ID_OUI_FROM_DATABASE=Aitexin Technology Co., Ltd
++
+ OUI:30C750*
+  ID_OUI_FROM_DATABASE=MIC Technology Group
+@@ -55606,6 +55672,9 @@ OUI:30F9ED*
+ OUI:30FD11*
+  ID_OUI_FROM_DATABASE=MACROTECH (USA) INC.
++OUI:340286*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:3407FB*
+  ID_OUI_FROM_DATABASE=Ericsson AB
+@@ -55654,6 +55723,9 @@ OUI:342F6E*
+ OUI:343111*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:3431C4*
++ ID_OUI_FROM_DATABASE=AVM GmbH
++
+ OUI:3440B5*
+  ID_OUI_FROM_DATABASE=IBM
+@@ -55840,6 +55912,9 @@ OUI:34C059*
+ OUI:34C3AC*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:34C5D0*
++ ID_OUI_FROM_DATABASE=Hagleitner Hygiene International GmbH
++
+ OUI:34C69A*
+  ID_OUI_FROM_DATABASE=Enecsys Ltd
+@@ -55963,6 +56038,9 @@ OUI:3826CD*
+ OUI:3828EA*
+  ID_OUI_FROM_DATABASE=Fujian Netcom Technology Co., LTD
++OUI:382DD1*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:3831AC*
+  ID_OUI_FROM_DATABASE=WEG
+@@ -56371,6 +56449,9 @@ OUI:3C99F7*
+ OUI:3C9F81*
+  ID_OUI_FROM_DATABASE=Shenzhen CATIC Bit Communications Technology Co.,Ltd
++OUI:3CA10D*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:3CA315*
+  ID_OUI_FROM_DATABASE=Bless Information & Communications Co., Ltd
+@@ -56380,6 +56461,9 @@ OUI:3CA72B*
+ OUI:3CA9F4*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:3CAA3F*
++ ID_OUI_FROM_DATABASE=iKey, Ltd.
++
+ OUI:3CAB8E*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -56413,6 +56497,9 @@ OUI:3CC99E*
+ OUI:3CCA87*
+  ID_OUI_FROM_DATABASE=Iders Incorporated
++OUI:3CCD5A*
++ ID_OUI_FROM_DATABASE=Technische Alternative GmbH
++
+ OUI:3CCD93*
+  ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
+@@ -57109,6 +57196,9 @@ OUI:481A84*
+ OUI:481BD2*
+  ID_OUI_FROM_DATABASE=Intron Scientific co., ltd.
++OUI:4826E8*
++ ID_OUI_FROM_DATABASE=Tek-Air Systems, Inc.
++
+ OUI:48282F*
+  ID_OUI_FROM_DATABASE=ZTE Corporation
+@@ -57260,7 +57350,7 @@ OUI:48D7FF*
+  ID_OUI_FROM_DATABASE=BLANKOM Antennentechnik GmbH
+ OUI:48D855*
+- ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY
++ ID_OUI_FROM_DATABASE=Telvent
+ OUI:48D8FE*
+  ID_OUI_FROM_DATABASE=ClarIDy Solutions, Inc.
+@@ -57748,6 +57838,9 @@ OUI:507E5D*
+ OUI:508569*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
++OUI:508789*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:5087B8*
+  ID_OUI_FROM_DATABASE=Nuvyyo Inc
+@@ -57880,6 +57973,9 @@ OUI:50FC30*
+ OUI:50FC9F*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:50FEF2*
++ ID_OUI_FROM_DATABASE=Sify Technologies Ltd
++
+ OUI:5403F5*
+  ID_OUI_FROM_DATABASE=EBN Technology Corp.
+@@ -58072,6 +58168,9 @@ OUI:54AE27*
+ OUI:54B620*
+  ID_OUI_FROM_DATABASE=SUHDOL E&C Co.Ltd.
++OUI:54B753*
++ ID_OUI_FROM_DATABASE=Hunan Fenghui Yinjia Science And Technology Co.,Ltd
++
+ OUI:54BEF7*
+  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+@@ -58132,6 +58231,9 @@ OUI:54F5B6*
+ OUI:54F666*
+  ID_OUI_FROM_DATABASE=Berthold Technologies GmbH and Co.KG
++OUI:54FA3E*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
++
+ OUI:54FB58*
+  ID_OUI_FROM_DATABASE=WISEWARE, Lda
+@@ -58462,6 +58564,9 @@ OUI:5C260A*
+ OUI:5C2AEF*
+  ID_OUI_FROM_DATABASE=Open Access Pty Ltd
++OUI:5C2E59*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:5C313E*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -58519,6 +58624,9 @@ OUI:5C57C8*
+ OUI:5C5948*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:5C5BC2*
++ ID_OUI_FROM_DATABASE=YIK Corporation
++
+ OUI:5C5EAB*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -58558,6 +58666,9 @@ OUI:5C8778*
+ OUI:5C89D4*
+  ID_OUI_FROM_DATABASE=Beijing Banner Electric Co.,Ltd
++OUI:5C8D4E*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:5C95AE*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -58819,6 +58930,9 @@ OUI:607688*
+ OUI:60812B*
+  ID_OUI_FROM_DATABASE=Custom Control Concepts
++OUI:6081F9*
++ ID_OUI_FROM_DATABASE=Helium Systems, Inc
++
+ OUI:6083B2*
+  ID_OUI_FROM_DATABASE=GkWare e.K.
+@@ -58867,6 +58981,9 @@ OUI:60A10A*
+ OUI:60A44C*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++OUI:60A8FE*
++ ID_OUI_FROM_DATABASE=Nokia Solutions and Networks
++
+ OUI:60A9B0*
+  ID_OUI_FROM_DATABASE=Merchandising Technologies, Inc
+@@ -58918,6 +59035,9 @@ OUI:60C980*
+ OUI:60CBFB*
+  ID_OUI_FROM_DATABASE=AirScape Inc.
++OUI:60CDA9*
++ ID_OUI_FROM_DATABASE=Abloomy
++
+ OUI:60CDC5*
+  ID_OUI_FROM_DATABASE=Taiwan Carol Electronics., Ltd
+@@ -59092,6 +59212,9 @@ OUI:644D70*
+ OUI:644F74*
+  ID_OUI_FROM_DATABASE=LENUS Co., Ltd.
++OUI:644FB0*
++ ID_OUI_FROM_DATABASE=Hyunjin.com
++
+ OUI:64517E*
+  ID_OUI_FROM_DATABASE=LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.
+@@ -59146,6 +59269,9 @@ OUI:64680C*
+ OUI:6469BC*
+  ID_OUI_FROM_DATABASE=Hytera Communications Co .,ltd
++OUI:646CB2*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:646E6C*
+  ID_OUI_FROM_DATABASE=Radio Datacom LLC
+@@ -59305,6 +59431,9 @@ OUI:64D814*
+ OUI:64D912*
+  ID_OUI_FROM_DATABASE=Solidica, Inc.
++OUI:64D954*
++ ID_OUI_FROM_DATABASE=TAICANG AND W ELECTRONICS CO LTD
++
+ OUI:64D989*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -59368,6 +59497,9 @@ OUI:64F987*
+ OUI:64FC8C*
+  ID_OUI_FROM_DATABASE=Zonar Systems
++OUI:680571*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:6805CA*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -59701,6 +59833,9 @@ OUI:6C2E33*
+ OUI:6C2E85*
+  ID_OUI_FROM_DATABASE=SAGEMCOM
++OUI:6C2F2C*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:6C32DE*
+  ID_OUI_FROM_DATABASE=Indieon Technologies Pvt. Ltd.
+@@ -59860,6 +59995,9 @@ OUI:6CADF8*
+ OUI:6CAE8B*
+  ID_OUI_FROM_DATABASE=IBM Corporation
++OUI:6CB0CE*
++ ID_OUI_FROM_DATABASE=NETGEAR
++
+ OUI:6CB311*
+  ID_OUI_FROM_DATABASE=Shenzhen Lianrui Electronics Co.,Ltd
+@@ -59875,6 +60013,9 @@ OUI:6CBEE9*
+ OUI:6CC1D2*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:6CC217*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:6CC26B*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -59929,6 +60070,9 @@ OUI:6CF97C*
+ OUI:6CFA58*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:6CFA89*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:6CFAA7*
+  ID_OUI_FROM_DATABASE=AMPAK Technology Inc.
+@@ -60097,6 +60241,9 @@ OUI:7071B3*
+ OUI:7071BC*
+  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++OUI:70720D*
++ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
++
+ OUI:70723C*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+@@ -60502,6 +60649,9 @@ OUI:74D850*
+ OUI:74DA38*
+  ID_OUI_FROM_DATABASE=Edimax Technology Co. Ltd.
++OUI:74DBD1*
++ ID_OUI_FROM_DATABASE=Ebay Inc
++
+ OUI:74DE2B*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+@@ -60733,6 +60883,9 @@ OUI:78923E*
+ OUI:78929C*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:789684*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:7898FD*
+  ID_OUI_FROM_DATABASE=Q9 Networks Inc.
+@@ -60922,6 +61075,9 @@ OUI:78F7BE*
+ OUI:78F7D0*
+  ID_OUI_FROM_DATABASE=Silverbrook Research
++OUI:78FD94*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:78FE3D*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -61060,6 +61216,9 @@ OUI:7C69F6*
+ OUI:7C6AB3*
+  ID_OUI_FROM_DATABASE=IBC TECHNOLOGIES INC.
++OUI:7C6AC3*
++ ID_OUI_FROM_DATABASE=GatesAir, Inc
++
+ OUI:7C6ADB*
+  ID_OUI_FROM_DATABASE=SafeTone Technology Co.,Ltd
+@@ -61087,6 +61246,9 @@ OUI:7C6F06*
+ OUI:7C6FF8*
+  ID_OUI_FROM_DATABASE=ShenZhen ACTO Digital Video Technology Co.,Ltd.
++OUI:7C70BC*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:7C72E4*
+  ID_OUI_FROM_DATABASE=Unikey Technologies
+@@ -61174,6 +61336,9 @@ OUI:7CBFB1*
+ OUI:7CC3A1*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:7CC4EF*
++ ID_OUI_FROM_DATABASE=Devialet
++
+ OUI:7CC537*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -61231,6 +61396,9 @@ OUI:7CE044*
+ OUI:7CE1FF*
+  ID_OUI_FROM_DATABASE=Computer Performance, Inc. DBA Digital Loggers, Inc.
++OUI:7CE524*
++ ID_OUI_FROM_DATABASE=Quirky, Inc.
++
+ OUI:7CE56B*
+  ID_OUI_FROM_DATABASE=ESEN Optoelectronics Technology Co.,Ltd.
+@@ -61477,6 +61645,9 @@ OUI:80A1D7*
+ OUI:80AAA4*
+  ID_OUI_FROM_DATABASE=USAG
++OUI:80AD67*
++ ID_OUI_FROM_DATABASE=Kasda Digital Technology Co.,Ltd
++
+ OUI:80B219*
+  ID_OUI_FROM_DATABASE=ELEKTRON TECHNOLOGY UK LIMITED
+@@ -61564,6 +61735,9 @@ OUI:80FFA8*
+ OUI:8400D2*
+  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
++OUI:8401A7*
++ ID_OUI_FROM_DATABASE=Greyware Automation Products, Inc
++
+ OUI:840B2D*
+  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO-MECHANICS CO., LTD
+@@ -61576,6 +61750,9 @@ OUI:841715*
+ OUI:841766*
+  ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd
++OUI:84183A*
++ ID_OUI_FROM_DATABASE=Ruckus Wireless
++
+ OUI:841888*
+  ID_OUI_FROM_DATABASE=Juniper Networks
+@@ -61723,6 +61900,9 @@ OUI:848433*
+ OUI:848506*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:84850A*
++ ID_OUI_FROM_DATABASE=Hella Sonnen- und Wetterschutztechnik GmbH
++
+ OUI:848D84*
+  ID_OUI_FROM_DATABASE=Rajant Corporation
+@@ -61885,6 +62065,9 @@ OUI:8823FE*
+ OUI:88252C*
+  ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
++OUI:882950*
++ ID_OUI_FROM_DATABASE=Dalian Netmoon Tech Develop Co.,Ltd
++
+ OUI:882E5A*
+  ID_OUI_FROM_DATABASE=storONE
+@@ -61948,6 +62131,9 @@ OUI:885C47*
+ OUI:88615A*
+  ID_OUI_FROM_DATABASE=Siano Mobile Silicon Ltd.
++OUI:8863DF*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:88685C*
+  ID_OUI_FROM_DATABASE=Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd
+@@ -62098,6 +62284,9 @@ OUI:88E917*
+ OUI:88ED1C*
+  ID_OUI_FROM_DATABASE=Cudo Communication Co., Ltd.
++OUI:88F031*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:88F077*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -62326,6 +62515,9 @@ OUI:8CB864*
+ OUI:8CBEBE*
+  ID_OUI_FROM_DATABASE=Xiaomi Technology Co.,Ltd
++OUI:8CBF9D*
++ ID_OUI_FROM_DATABASE=Shanghai Xinyou Information Technology Ltd. Co.
++
+ OUI:8CC121*
+  ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company
+@@ -62662,6 +62854,9 @@ OUI:90B97D*
+ OUI:90C115*
+  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
++OUI:90C792*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:90CC24*
+  ID_OUI_FROM_DATABASE=Synaptics, Inc
+@@ -63259,6 +63454,9 @@ OUI:98EC65*
+ OUI:98F0AB*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:98F170*
++ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
++
+ OUI:98F537*
+  ID_OUI_FROM_DATABASE=zte corporation
+@@ -63496,6 +63694,9 @@ OUI:9CA577*
+ OUI:9CA9E4*
+  ID_OUI_FROM_DATABASE=zte corporation
++OUI:9CAD97*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:9CADEF*
+  ID_OUI_FROM_DATABASE=Obihai Technology, Inc.
+@@ -64456,6 +64657,9 @@ OUI:A8E018*
+ OUI:A8E3EE*
+  ID_OUI_FROM_DATABASE=Sony Computer Entertainment Inc.
++OUI:A8E539*
++ ID_OUI_FROM_DATABASE=Moimstone Co.,Ltd
++
+ OUI:A8EF26*
+  ID_OUI_FROM_DATABASE=Tritonwave
+@@ -64702,6 +64906,9 @@ OUI:ACA016*
+ OUI:ACA22C*
+  ID_OUI_FROM_DATABASE=Baycity Technologies Ltd
++OUI:ACA31E*
++ ID_OUI_FROM_DATABASE=Aruba Networks
++
+ OUI:ACA430*
+  ID_OUI_FROM_DATABASE=Peerless AV
+@@ -64837,6 +65044,12 @@ OUI:B000B4*
+ OUI:B00594*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
++OUI:B009D3*
++ ID_OUI_FROM_DATABASE=Avizia
++
++OUI:B01041*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
++
+ OUI:B01203*
+  ID_OUI_FROM_DATABASE=Dynamics Hong Kong Limited
+@@ -64951,6 +65164,9 @@ OUI:B0808C*
+ OUI:B081D8*
+  ID_OUI_FROM_DATABASE=I-sys Corp
++OUI:B083FE*
++ ID_OUI_FROM_DATABASE=Dell Inc
++
+ OUI:B0869E*
+  ID_OUI_FROM_DATABASE=Chloride S.r.L
+@@ -65122,6 +65338,9 @@ OUI:B407F9*
+ OUI:B40832*
+  ID_OUI_FROM_DATABASE=TC Communications
++OUI:B40B44*
++ ID_OUI_FROM_DATABASE=Smartisan Technology Co., Ltd.
++
+ OUI:B40B7A*
+  ID_OUI_FROM_DATABASE=Brusa Elektronik AG
+@@ -65200,6 +65419,9 @@ OUI:B4417A*
+ OUI:B4430D*
+  ID_OUI_FROM_DATABASE=Broadlink Pty Ltd
++OUI:B4475E*
++ ID_OUI_FROM_DATABASE=Avaya, Inc
++
+ OUI:B44CC2*
+  ID_OUI_FROM_DATABASE=NR ELECTRIC CO., LTD
+@@ -65608,6 +65830,9 @@ OUI:B8A8AF*
+ OUI:B8AC6F*
+  ID_OUI_FROM_DATABASE=Dell Inc
++OUI:B8AD3E*
++ ID_OUI_FROM_DATABASE=BLUECOM
++
+ OUI:B8AE6E*
+  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+@@ -65842,6 +66067,9 @@ OUI:BC4B79*
+ OUI:BC4E3C*
+  ID_OUI_FROM_DATABASE=CORE STAFF CO., LTD.
++OUI:BC4E5D*
++ ID_OUI_FROM_DATABASE=ZhongMiao Technology Co., Ltd.
++
+ OUI:BC51FE*
+  ID_OUI_FROM_DATABASE=Swann Communications Pty Ltd
+@@ -65974,6 +66202,9 @@ OUI:BCC6DB*
+ OUI:BCC810*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
++OUI:BCCAB5*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:BCCD45*
+  ID_OUI_FROM_DATABASE=VOISMART
+@@ -66748,6 +66979,9 @@ OUI:C88B47*
+ OUI:C8903E*
+  ID_OUI_FROM_DATABASE=Pakton Technologies
++OUI:C891F9*
++ ID_OUI_FROM_DATABASE=SAGEMCOM
++
+ OUI:C89346*
+  ID_OUI_FROM_DATABASE=MXCHIP Company Limited
+@@ -67000,6 +67234,9 @@ OUI:CC3A61*
+ OUI:CC3C3F*
+  ID_OUI_FROM_DATABASE=SA.S.S. Datentechnik AG
++OUI:CC3D82*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:CC3E5F*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+@@ -67303,6 +67540,9 @@ OUI:D03761*
+ OUI:D03972*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:D039B3*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:D046DC*
+  ID_OUI_FROM_DATABASE=Southwest Research Institute
+@@ -67735,6 +67975,9 @@ OUI:D48FAA*
+ OUI:D491AF*
+  ID_OUI_FROM_DATABASE=Electroacustica General Iberica, S.A.
++OUI:D49398*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:D493A0*
+  ID_OUI_FROM_DATABASE=Fidelix Oy
+@@ -68057,7 +68300,7 @@ OUI:D89695*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:D8973B*
+- ID_OUI_FROM_DATABASE=Emerson Network Power Embedded Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:D89760*
+  ID_OUI_FROM_DATABASE=C2 Development, Inc.
+@@ -68170,6 +68413,9 @@ OUI:D8DF0D*
+ OUI:D8E3AE*
+  ID_OUI_FROM_DATABASE=CIRTEC MEDICAL SYSTEMS
++OUI:D8E56D*
++ ID_OUI_FROM_DATABASE=TCT Mobile Limited
++
+ OUI:D8E72B*
+  ID_OUI_FROM_DATABASE=OnPATH Technologies
+@@ -69319,6 +69565,9 @@ OUI:E8F928*
+ OUI:E8FC60*
+  ID_OUI_FROM_DATABASE=ELCOM Innovations Private Limited
++OUI:E8FCAF*
++ ID_OUI_FROM_DATABASE=NETGEAR INC.,
++
+ OUI:EC0ED6*
+  ID_OUI_FROM_DATABASE=ITECH INSTRUMENTS SAS
+@@ -69442,6 +69691,9 @@ OUI:EC888F*
+ OUI:EC89F5*
+  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
++OUI:EC8A4C*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:EC8EAD*
+  ID_OUI_FROM_DATABASE=DLX
+@@ -70099,6 +70351,9 @@ OUI:F4CE46*
+ OUI:F4CFE2*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:F4D261*
++ ID_OUI_FROM_DATABASE=SEMOCON Co., Ltd
++
+ OUI:F4D9FB*
+  ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
+@@ -70111,6 +70366,9 @@ OUI:F4DCDA*
+ OUI:F4DCF9*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++OUI:F4DD9E*
++ ID_OUI_FROM_DATABASE=GoPro
++
+ OUI:F4E142*
+  ID_OUI_FROM_DATABASE=Delta Elektronika BV
+@@ -70318,6 +70576,9 @@ OUI:F87B8C*
+ OUI:F8811A*
+  ID_OUI_FROM_DATABASE=OVERKIZ
++OUI:F884F2*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:F88C1C*
+  ID_OUI_FROM_DATABASE=KAISHUN ELECTRONIC TECHNOLOGY CO., LTD. BEIJING
+@@ -70586,7 +70847,7 @@ OUI:FC3FAB*
+  ID_OUI_FROM_DATABASE=Henan Lanxin Technology Co., Ltd
+ OUI:FC4463*
+- ID_OUI_FROM_DATABASE=Universal Audio
++ ID_OUI_FROM_DATABASE=Universal Audio, Inc
+ OUI:FC4499*
+  ID_OUI_FROM_DATABASE=Swarco LEA d.o.o.
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 371a685..d54cb2a 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -497,6 +497,9 @@ pci:v00000E11d0000F130*
+ pci:v00000E11d0000F150*
+  ID_MODEL_FROM_DATABASE=NetFlex-3/P ThunderLAN 2.3
++pci:v00000E55*
++ ID_VENDOR_FROM_DATABASE=HaSoTec GmbH
++
+ pci:v00000EAC*
+  ID_VENDOR_FROM_DATABASE=SHF Communication Technologies AG
+@@ -1169,6 +1172,12 @@ pci:v00001000d00000073sv00001137sd000000B0*
+ pci:v00001000d00000073sv00001137sd000000B1*
+  ID_MODEL_FROM_DATABASE=UCSC RAID SAS 2008M-8i
++pci:v00001000d00000073sv00001137sd000000C2*
++ ID_MODEL_FROM_DATABASE=UCS E-Series Double Wide
++
++pci:v00001000d00000073sv00001137sd000000C3*
++ ID_MODEL_FROM_DATABASE=UCS E-Series Single Wide
++
+ pci:v00001000d00000073sv000015D9sd00000400*
+  ID_MODEL_FROM_DATABASE=Supermicro SMC2008-iMR
+@@ -1665,25 +1674,25 @@ pci:v00001002d00001307*
+  ID_MODEL_FROM_DATABASE=Kaveri
+ pci:v00001002d00001309*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 Graphics]
+ pci:v00001002d0000130A*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R6 Graphics]
+ pci:v00001002d0000130B*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R4 Graphics]
+ pci:v00001002d0000130C*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 Graphics]
+ pci:v00001002d0000130D*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R6 Graphics]
+ pci:v00001002d0000130E*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 Graphics]
+ pci:v00001002d0000130F*
+- ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 200 Series]
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 Graphics]
+ pci:v00001002d00001310*
+  ID_MODEL_FROM_DATABASE=Kaveri
+@@ -1695,7 +1704,7 @@ pci:v00001002d00001312*
+  ID_MODEL_FROM_DATABASE=Kaveri
+ pci:v00001002d00001313*
+- ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 200 Series]
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 Graphics]
+ pci:v00001002d00001314*
+  ID_MODEL_FROM_DATABASE=Wrestler HDMI Audio
+@@ -1704,22 +1713,25 @@ pci:v00001002d00001314sv0000174Bsd00001001*
+  ID_MODEL_FROM_DATABASE=PURE Fusion Mini
+ pci:v00001002d00001315*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 Graphics]
+ pci:v00001002d00001316*
+- ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 200 Series]
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 Graphics]
+ pci:v00001002d00001317*
+  ID_MODEL_FROM_DATABASE=Kaveri
++pci:v00001002d00001318*
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R5 Graphics]
++
+ pci:v00001002d0000131B*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R4 Graphics]
+ pci:v00001002d0000131C*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 Graphics]
+ pci:v00001002d0000131D*
+- ID_MODEL_FROM_DATABASE=Kaveri
++ ID_MODEL_FROM_DATABASE=Kaveri [Radeon R6 Graphics]
+ pci:v00001002d00001714*
+  ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series]
+@@ -4275,7 +4287,7 @@ pci:v00001002d00006641*
+  ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M]
+ pci:v00001002d00006649*
+- ID_MODEL_FROM_DATABASE=Bonaire
++ ID_MODEL_FROM_DATABASE=Bonaire [FirePro W5100]
+ pci:v00001002d00006650*
+  ID_MODEL_FROM_DATABASE=Bonaire
+@@ -4326,13 +4338,13 @@ pci:v00001002d00006663sv00001025sd00000846*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8570A
+ pci:v00001002d00006664*
+- ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M250]
++ ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M240]
+ pci:v00001002d00006665*
+  ID_MODEL_FROM_DATABASE=Jet PRO [Radeon R5 M230]
+ pci:v00001002d00006667*
+- ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M240]
++ ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M230]
+ pci:v00001002d0000666F*
+  ID_MODEL_FROM_DATABASE=Sun LE [Radeon HD 8550M]
+@@ -5808,7 +5820,7 @@ pci:v00001002d00006792*
+  ID_MODEL_FROM_DATABASE=Tahiti
+ pci:v00001002d00006798*
+- ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/R9 280X]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]
+ pci:v00001002d00006798sv00001002sd00003000*
+  ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition]
+@@ -5934,7 +5946,7 @@ pci:v00001002d000067B1*
+  ID_MODEL_FROM_DATABASE=Hawaii PRO [Radeon R9 290]
+ pci:v00001002d000067B9*
+- ID_MODEL_FROM_DATABASE=Vesuvius
++ ID_MODEL_FROM_DATABASE=Vesuvius [Radeon R9 295 X2]
+ pci:v00001002d000067BE*
+  ID_MODEL_FROM_DATABASE=Hawaii LE
+@@ -5952,7 +5964,7 @@ pci:v00001002d00006800sv00008086sd00002111*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7970M
+ pci:v00001002d00006801*
+- ID_MODEL_FROM_DATABASE=Neptune [Radeon HD 8970M]
++ ID_MODEL_FROM_DATABASE=Neptune XT [Radeon HD 8970M]
+ pci:v00001002d00006801sv00001002sd00000124*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8970M
+@@ -6017,6 +6029,9 @@ pci:v00001002d00006820*
+ pci:v00001002d00006820sv0000103Csd00001851*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7750M
++pci:v00001002d00006820sv000017AAsd00003801*
++ ID_MODEL_FROM_DATABASE=Radeon R9 M275
++
+ pci:v00001002d00006821*
+  ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M]
+@@ -7817,6 +7832,12 @@ pci:v00001002d000068FAsv000017AFsd00003015*
+ pci:v00001002d000068FE*
+  ID_MODEL_FROM_DATABASE=Cedar LE
++pci:v00001002d00006900*
++ ID_MODEL_FROM_DATABASE=Topaz XT [Radeon R7 M260]
++
++pci:v00001002d00006901*
++ ID_MODEL_FROM_DATABASE=Topaz PRO [Radeon R5 M255]
++
+ pci:v00001002d00006920*
+  ID_MODEL_FROM_DATABASE=Tonga
+@@ -10391,6 +10412,15 @@ pci:v00001014d0000034Asv00001014sd00000499*
+ pci:v00001014d0000034Asv00001014sd0000049A*
+  ID_MODEL_FROM_DATABASE=PCIe3 x16 SAS RAID Internal Adapter 6Gb (57EE)
++pci:v00001014d0000034Asv00001014sd000004C7*
++ ID_MODEL_FROM_DATABASE=PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCA)
++
++pci:v00001014d0000034Asv00001014sd000004C8*
++ ID_MODEL_FROM_DATABASE=PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CD2)
++
++pci:v00001014d0000034Asv00001014sd00000C49*
++ ID_MODEL_FROM_DATABASE=PCIe3 x 8 Cache SAS RAID Internal Adapter 6GB(2CCD)
++
+ pci:v00001014d000004AA*
+  ID_MODEL_FROM_DATABASE=Flash Adapter 90 (PCIe2 0.9TB)
+@@ -13793,6 +13823,63 @@ pci:v0000103Cd00003238sv0000103Csd00003211*
+ pci:v0000103Cd00003238sv0000103Csd00003212*
+  ID_MODEL_FROM_DATABASE=Smart Array E200
++pci:v0000103Cd00003239*
++ ID_MODEL_FROM_DATABASE=Smart Array Gen9 Controllers
++
++pci:v0000103Cd00003239sv0000103Csd000021BD*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021BE*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021BF*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C0*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C1*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C2*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C3*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C4*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C5*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C6*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C7*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C8*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021C9*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021CA*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021CB*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021CC*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021CD*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
++pci:v0000103Cd00003239sv0000103Csd000021CE*
++ ID_MODEL_FROM_DATABASE=Smart Array
++
+ pci:v0000103Cd0000323A*
+  ID_MODEL_FROM_DATABASE=Smart Array G6 controllers
+@@ -17954,6 +18041,54 @@ pci:v0000109Ed0000036Esv000018ACsd0000D500*
+ pci:v0000109Ed0000036Esv0000270Fsd0000FC00*
+  ID_MODEL_FROM_DATABASE=Digitop DTT-1000
++pci:v0000109Ed0000036Esv0000AA00sd00001460*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardA Input0
++
++pci:v0000109Ed0000036Esv0000AA01sd00001461*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardA Input1
++
++pci:v0000109Ed0000036Esv0000AA02sd00001462*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardA Input2
++
++pci:v0000109Ed0000036Esv0000AA03sd00001463*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardA Input3
++
++pci:v0000109Ed0000036Esv0000AA04sd00001464*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardB Input0
++
++pci:v0000109Ed0000036Esv0000AA05sd00001465*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardB Input1
++
++pci:v0000109Ed0000036Esv0000AA06sd00001466*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardB Input2
++
++pci:v0000109Ed0000036Esv0000AA07sd00001467*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardB Input3
++
++pci:v0000109Ed0000036Esv0000AA08sd00001468*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardC Input0
++
++pci:v0000109Ed0000036Esv0000AA09sd00001469*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardC Input1
++
++pci:v0000109Ed0000036Esv0000AA0Asd0000146A*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardC Input2
++
++pci:v0000109Ed0000036Esv0000AA0Bsd0000146B*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardC Input3
++
++pci:v0000109Ed0000036Esv0000AA0Csd0000146C*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardD Input0
++
++pci:v0000109Ed0000036Esv0000AA0Dsd0000146D*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardD Input1
++
++pci:v0000109Ed0000036Esv0000AA0Esd0000146E*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardD Input2
++
++pci:v0000109Ed0000036Esv0000AA0Fsd0000146F*
++ ID_MODEL_FROM_DATABASE=Spectra8 CardD Input3
++
+ pci:v0000109Ed0000036Esv0000BD11sd00001200*
+  ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver)
+@@ -26009,6 +26144,9 @@ pci:v000010DEd00000E1A*
+ pci:v000010DEd00000E1B*
+  ID_MODEL_FROM_DATABASE=GK107 HDMI Audio Controller
++pci:v000010DEd00000E1Bsv0000103Csd0000197B*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v000010DEd00000E1Bsv00001043sd00008428*
+  ID_MODEL_FROM_DATABASE=GTX650-DC-1GD5
+@@ -26165,6 +26303,9 @@ pci:v000010DEd00000FF5*
+ pci:v000010DEd00000FF6*
+  ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1100M]
++pci:v000010DEd00000FF6sv0000103Csd0000197B*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v000010DEd00000FF7*
+  ID_MODEL_FROM_DATABASE=GK107GL [GRID K140Q vGPU]
+@@ -26234,6 +26375,12 @@ pci:v000010DEd00001005sv00003842sd00002794*
+ pci:v000010DEd00001005sv00003842sd00002795*
+  ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature
++pci:v000010DEd00001007*
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780 Rev. 2]
++
++pci:v000010DEd00001008*
++ ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780 Ti Rev. 2]
++
+ pci:v000010DEd0000100A*
+  ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Ti]
+@@ -26294,6 +26441,9 @@ pci:v000010DEd0000104Asv000010B0sd0000104A*
+ pci:v000010DEd0000104B*
+  ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 625 OEM]
++pci:v000010DEd0000104C*
++ ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 705]
++
+ pci:v000010DEd00001050*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce GT 520M]
+@@ -26333,6 +26483,24 @@ pci:v000010DEd00001058sv00001043sd000010BC*
+ pci:v000010DEd00001058sv00001043sd00001652*
+  ID_MODEL_FROM_DATABASE=GeForce GT 610M
++pci:v000010DEd00001058sv000017AAsd0000367A*
++ ID_MODEL_FROM_DATABASE=GeForce 610M
++
++pci:v000010DEd00001058sv000017AAsd00003682*
++ ID_MODEL_FROM_DATABASE=GeForce 800A
++
++pci:v000010DEd00001058sv000017AAsd00003687*
++ ID_MODEL_FROM_DATABASE=GeForce 800A
++
++pci:v000010DEd00001058sv000017AAsd00003692*
++ ID_MODEL_FROM_DATABASE=GeForce 705A
++
++pci:v000010DEd00001058sv000017AAsd00003695*
++ ID_MODEL_FROM_DATABASE=GeForce 800A
++
++pci:v000010DEd00001058sv000017AAsd0000A117*
++ ID_MODEL_FROM_DATABASE=GeForce 610M
++
+ pci:v000010DEd00001059*
+  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
+@@ -26351,6 +26519,15 @@ pci:v000010DEd0000105B*
+ pci:v000010DEd0000105Bsv0000103Csd00002AFB*
+  ID_MODEL_FROM_DATABASE=GeForce 705A
++pci:v000010DEd0000105Bsv000017AAsd0000309D*
++ ID_MODEL_FROM_DATABASE=GeForce 705A
++
++pci:v000010DEd0000105Bsv000017AAsd000030B1*
++ ID_MODEL_FROM_DATABASE=GeForce 800A
++
++pci:v000010DEd0000105Bsv000017AAsd000036A1*
++ ID_MODEL_FROM_DATABASE=GeForce 800A
++
+ pci:v000010DEd0000107C*
+  ID_MODEL_FROM_DATABASE=GF119 [NVS 315]
+@@ -26675,6 +26852,30 @@ pci:v000010DEd00001140sv00001043sd000014C7*
+ pci:v000010DEd00001140sv00001043sd00001507*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
++pci:v000010DEd00001140sv00001043sd000015AD*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd000015ED*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd0000160D*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd0000163D*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd0000166D*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd000016CD*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd000016DD*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd0000170D*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
+ pci:v000010DEd00001140sv00001043sd00002132*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
+@@ -26699,6 +26900,12 @@ pci:v000010DEd00001140sv00001043sd0000223A*
+ pci:v000010DEd00001140sv00001043sd0000224A*
+  ID_MODEL_FROM_DATABASE=GeForce GT 710M
++pci:v000010DEd00001140sv00001043sd0000227A*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
++pci:v000010DEd00001140sv00001043sd0000228A*
++ ID_MODEL_FROM_DATABASE=GeForce 820M
++
+ pci:v000010DEd00001140sv00001043sd00008595*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
+@@ -26864,9 +27071,48 @@ pci:v000010DEd00001140sv000017AAsd00002213*
+ pci:v000010DEd00001140sv000017AAsd00002220*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv000017AAsd0000309C*
++ ID_MODEL_FROM_DATABASE=GeForce GT 720A
++
++pci:v000010DEd00001140sv000017AAsd000030B4*
++ ID_MODEL_FROM_DATABASE=GeForce 820A
++
+ pci:v000010DEd00001140sv000017AAsd00003656*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
++pci:v000010DEd00001140sv000017AAsd0000365A*
++ ID_MODEL_FROM_DATABASE=GeForce 705M
++
++pci:v000010DEd00001140sv000017AAsd0000365E*
++ ID_MODEL_FROM_DATABASE=GeForce 800M
++
++pci:v000010DEd00001140sv000017AAsd0000366C*
++ ID_MODEL_FROM_DATABASE=GeForce 800M
++
++pci:v000010DEd00001140sv000017AAsd00003685*
++ ID_MODEL_FROM_DATABASE=GeForce 800M
++
++pci:v000010DEd00001140sv000017AAsd00003686*
++ ID_MODEL_FROM_DATABASE=GeForce 800M
++
++pci:v000010DEd00001140sv000017AAsd00003687*
++ ID_MODEL_FROM_DATABASE=GeForce 705A
++
++pci:v000010DEd00001140sv000017AAsd00003696*
++ ID_MODEL_FROM_DATABASE=GeForce 820A
++
++pci:v000010DEd00001140sv000017AAsd0000369B*
++ ID_MODEL_FROM_DATABASE=GeForce 820A
++
++pci:v000010DEd00001140sv000017AAsd0000369C*
++ ID_MODEL_FROM_DATABASE=GeForce 820A
++
++pci:v000010DEd00001140sv000017AAsd0000369D*
++ ID_MODEL_FROM_DATABASE=GeForce 820A
++
++pci:v000010DEd00001140sv000017AAsd0000369E*
++ ID_MODEL_FROM_DATABASE=GeForce 820A
++
+ pci:v000010DEd00001140sv000017AAsd00003800*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
+@@ -27044,6 +27290,9 @@ pci:v000010DEd0000118F*
+ pci:v000010DEd00001193*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
++pci:v000010DEd00001195*
++ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 Rev. 2]
++
+ pci:v000010DEd00001198*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 880M]
+@@ -27173,6 +27422,9 @@ pci:v000010DEd000011E2*
+ pci:v000010DEd000011E3*
+  ID_MODEL_FROM_DATABASE=GK106M [GeForce GTX 760M]
++pci:v000010DEd000011E3sv000017AAsd00003683*
++ ID_MODEL_FROM_DATABASE=GeForce GTX 760A
++
+ pci:v000010DEd000011FA*
+  ID_MODEL_FROM_DATABASE=GK106GL [Quadro K4000]
+@@ -27323,6 +27575,9 @@ pci:v000010DEd00001282*
+ pci:v000010DEd00001284*
+  ID_MODEL_FROM_DATABASE=GK208 [GeForce GT 630 Rev. 2]
++pci:v000010DEd00001286*
++ ID_MODEL_FROM_DATABASE=GK208 [GeForce GT 720]
++
+ pci:v000010DEd00001290*
+  ID_MODEL_FROM_DATABASE=GK208M [GeForce GT 730M]
+@@ -27380,6 +27635,15 @@ pci:v000010DEd00001340*
+ pci:v000010DEd00001341*
+  ID_MODEL_FROM_DATABASE=GM108M [GeForce 840M]
++pci:v000010DEd00001341sv000017AAsd00003697*
++ ID_MODEL_FROM_DATABASE=GeForce 840A
++
++pci:v000010DEd00001341sv000017AAsd00003699*
++ ID_MODEL_FROM_DATABASE=GeForce 840A
++
++pci:v000010DEd00001341sv000017AAsd0000369C*
++ ID_MODEL_FROM_DATABASE=GeForce 840A
++
+ pci:v000010DEd00001380*
+  ID_MODEL_FROM_DATABASE=GM107 [GeForce GTX 750 Ti]
+@@ -27395,6 +27659,12 @@ pci:v000010DEd00001390*
+ pci:v000010DEd00001391*
+  ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 850M]
++pci:v000010DEd00001391sv000017AAsd00003697*
++ ID_MODEL_FROM_DATABASE=GeForce GTX 850A
++
++pci:v000010DEd00001391sv000017AAsd0000A125*
++ ID_MODEL_FROM_DATABASE=GeForce GTX 850A
++
+ pci:v000010DEd00001392*
+  ID_MODEL_FROM_DATABASE=GM107M [GeForce GTX 860M]
+@@ -27839,6 +28109,9 @@ pci:v000010ECd00005227*
+ pci:v000010ECd00005227sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
++pci:v000010ECd00005227sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v000010ECd00005229*
+  ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader
+@@ -27848,6 +28121,12 @@ pci:v000010ECd00005229sv00001025sd00000813*
+ pci:v000010ECd00005229sv0000103Csd0000194E*
+  ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
++pci:v000010ECd00005249*
++ ID_MODEL_FROM_DATABASE=RTS5249 PCI Express Card Reader
++
++pci:v000010ECd00005249sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v000010ECd00005288*
+  ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader
+@@ -30561,7 +30840,7 @@ pci:v0000110Ad00004021*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter)
+ pci:v0000110Ad00004029*
+- ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5614 A2
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 A2
+ pci:v0000110Ad00004029sv0000110Asd00004029*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613 A2
+@@ -30581,6 +30860,9 @@ pci:v0000110Ad00004038*
+ pci:v0000110Ad00004069*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5623
++pci:v0000110Ad00004069sv0000110Asd00004069*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5623
++
+ pci:v0000110Ad00004069sv0000110Asd0000C069*
+  ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5624
+@@ -31541,6 +31823,9 @@ pci:v00001131d00007133sv0000153Bsd00001160*
+ pci:v00001131d00007133sv0000153Bsd00001162*
+  ID_MODEL_FROM_DATABASE=Terratec Cinergy 400 mobile
++pci:v00001131d00007133sv000017DEsd00007256*
++ ID_MODEL_FROM_DATABASE=PlusTV All In One PI610 card
++
+ pci:v00001131d00007133sv000017DEsd00007350*
+  ID_MODEL_FROM_DATABASE=ATSC 110 Digital / Analog HDTV Tuner
+@@ -33651,7 +33936,7 @@ pci:v00001180d00000476sv000014EFsd00000220*
+  ID_MODEL_FROM_DATABASE=PCD-RP-220S
+ pci:v00001180d00000476sv000017AAsd0000201C*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60s
++ ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
+ pci:v00001180d00000476sv000017AAsd000020C4*
+  ID_MODEL_FROM_DATABASE=ThinkPad T61
+@@ -33711,7 +33996,7 @@ pci:v00001180d00000552sv0000144Dsd0000C00C*
+  ID_MODEL_FROM_DATABASE=P30/P35 notebook
+ pci:v00001180d00000552sv000017AAsd0000201E*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60s
++ ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
+ pci:v00001180d00000554*
+  ID_MODEL_FROM_DATABASE=R5C554
+@@ -33813,7 +34098,7 @@ pci:v00001180d00000822sv0000144Dsd0000C018*
+  ID_MODEL_FROM_DATABASE=X20 IV
+ pci:v00001180d00000822sv000017AAsd0000201D*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60s
++ ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
+ pci:v00001180d00000822sv000017AAsd000020C7*
+  ID_MODEL_FROM_DATABASE=ThinkPad T61
+@@ -33833,6 +34118,9 @@ pci:v00001180d00000832sv00001028sd000001D7*
+ pci:v00001180d00000832sv00001028sd000001F3*
+  ID_MODEL_FROM_DATABASE=Inspiron 1420
++pci:v00001180d00000832sv00001028sd0000024D*
++ ID_MODEL_FROM_DATABASE=Latitude E4300
++
+ pci:v00001180d00000832sv0000103Csd000030B5*
+  ID_MODEL_FROM_DATABASE=Presario V3242AU
+@@ -49442,6 +49730,18 @@ pci:v00001797d00006812*
+ pci:v00001797d00006813*
+  ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller
++pci:v00001797d00006814*
++ ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller
++
++pci:v00001797d00006815*
++ ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller
++
++pci:v00001797d00006816*
++ ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller
++
++pci:v00001797d00006817*
++ ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller
++
+ pci:v00001799*
+  ID_VENDOR_FROM_DATABASE=Belkin
+@@ -50978,12 +51278,33 @@ pci:v00001924d00000813sv00001924sd00007904*
+ pci:v00001924d00000903*
+  ID_MODEL_FROM_DATABASE=SFC9120
++pci:v00001924d00000903sv00001014sd000004CC*
++ ID_MODEL_FROM_DATABASE=SFN7122F-R2 2x10GbE SFP+ Flareon Ultra
++
+ pci:v00001924d00000903sv00001924sd00008002*
+  ID_MODEL_FROM_DATABASE=SFN7122F-R1 SFP+ Server Adapter
++pci:v00001924d00000903sv00001924sd00008003*
++ ID_MODEL_FROM_DATABASE=SFN7x41Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
++
+ pci:v00001924d00000903sv00001924sd00008006*
+  ID_MODEL_FROM_DATABASE=SFN7022F-R1 SFP+ Server Adapter
++pci:v00001924d00000903sv00001924sd00008007*
++ ID_MODEL_FROM_DATABASE=SFN7322F-R2 Precision Time SFP+ Server Adapter
++
++pci:v00001924d00000903sv00001924sd00008009*
++ ID_MODEL_FROM_DATABASE=SFN7x22F-R2 Flareon Ultra 7000 Series 10G Adapter
++
++pci:v00001924d00000903sv00001924sd0000800A*
++ ID_MODEL_FROM_DATABASE=SFN7x02F-R2 Flareon 7000 Series 10G Adapter
++
++pci:v00001924d00000923*
++ ID_MODEL_FROM_DATABASE=SFC9140
++
++pci:v00001924d00000923sv00001924sd0000800B*
++ ID_MODEL_FROM_DATABASE=SFN7x42Q-R1 Flareon Ultra 7000 Series 10/40G Adapter
++
+ pci:v00001924d00001803*
+  ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm]
+@@ -51227,6 +51548,9 @@ pci:v00001957d00000083*
+ pci:v00001957d00000084*
+  ID_MODEL_FROM_DATABASE=MPC8347E PBGA
++pci:v00001957d00000084sv0000110Asd00004074*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1628
++
+ pci:v00001957d00000085*
+  ID_MODEL_FROM_DATABASE=MPC8347 PBGA
+@@ -51456,7 +51780,7 @@ pci:v00001969d00002062*
+  ID_MODEL_FROM_DATABASE=AR8152 v2.0 Fast Ethernet
+ pci:v00001969d0000E091*
+- ID_MODEL_FROM_DATABASE=Killer E2200 Gigabit Ethernet Controller
++ ID_MODEL_FROM_DATABASE=Killer E220x Gigabit Ethernet Controller
+ pci:v0000196A*
+  ID_VENDOR_FROM_DATABASE=Sensory Networks Inc.
+@@ -52214,8 +52538,14 @@ pci:v00001AF4d00001005*
+ pci:v00001AF4d00001009*
+  ID_MODEL_FROM_DATABASE=Virtio filesystem
++pci:v00001AF4d00001010*
++ ID_MODEL_FROM_DATABASE=Virtio GPU
++
++pci:v00001AF4d00001012*
++ ID_MODEL_FROM_DATABASE=Virtio input device
++
+ pci:v00001AF4d00001110*
+- ID_MODEL_FROM_DATABASE=Virtio Inter-VM shared memory
++ ID_MODEL_FROM_DATABASE=Inter-VM shared memory
+ pci:v00001AF4d00001110sv00001AF4sd00001100*
+  ID_MODEL_FROM_DATABASE=QEMU Virtual Machine
+@@ -52397,6 +52727,9 @@ pci:v00001B4Bd000091A4*
+ pci:v00001B4Bd00009230*
+  ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller
++pci:v00001B4Bd00009445*
++ ID_MODEL_FROM_DATABASE=88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller
++
+ pci:v00001B4Bd00009480*
+  ID_MODEL_FROM_DATABASE=88SE9480 SAS/SATA 6Gb/s RAID controller
+@@ -55550,15 +55883,24 @@ pci:v00008086d00000964*
+ pci:v00008086d00000A04*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT DRAM Controller
++pci:v00008086d00000A04sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00000A06*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+ pci:v00008086d00000A0C*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT HD Audio Controller
++pci:v00008086d00000A0Csv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00000A16*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
++pci:v00008086d00000A16sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00000A22*
+  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
+@@ -55655,6 +55997,9 @@ pci:v00008086d00000C01*
+ pci:v00008086d00000C04*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
++pci:v00008086d00000C04sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00000C04sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -57360,7 +57705,7 @@ pci:v00008086d0000109Asv000017AAsd00002001*
+  ID_MODEL_FROM_DATABASE=ThinkPad T60
+ pci:v00008086d0000109Asv000017AAsd0000207E*
+- ID_MODEL_FROM_DATABASE=ThinkPad X60s
++ ID_MODEL_FROM_DATABASE=ThinkPad X60/X60s
+ pci:v00008086d0000109Asv00008086sd0000109A*
+  ID_MODEL_FROM_DATABASE=PRO/1000 PL Network Connection
+@@ -58847,6 +59192,9 @@ pci:v00008086d00001539*
+ pci:v00008086d0000153A*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM
++pci:v00008086d0000153Asv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d0000153Asv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -58901,6 +59249,9 @@ pci:v00008086d00001559*
+ pci:v00008086d0000155A*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection I218-LM
++pci:v00008086d0000155Asv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d0000155C*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter
+@@ -63816,7 +64167,7 @@ pci:v00008086d000027A0sv000017AAsd00002015*
+  ID_MODEL_FROM_DATABASE=ThinkPad T60
+ pci:v00008086d000027A0sv000017AAsd00002017*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027A1*
+  ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port
+@@ -63834,7 +64185,7 @@ pci:v00008086d000027A2sv0000103Csd000030A1*
+  ID_MODEL_FROM_DATABASE=NC2400
+ pci:v00008086d000027A2sv000017AAsd0000201A*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027A2sv00009902sd00001584*
+  ID_MODEL_FROM_DATABASE=CCE MPL-D10H120F
+@@ -63849,7 +64200,7 @@ pci:v00008086d000027A6sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11 integrated graphics (secondary)
+ pci:v00008086d000027A6sv000017AAsd0000201A*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027AC*
+  ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Memory Controller Hub
+@@ -63915,7 +64266,7 @@ pci:v00008086d000027B9sv000010F7sd00008338*
+  ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop
+ pci:v00008086d000027B9sv000017AAsd00002009*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027BC*
+  ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller
+@@ -64035,7 +64386,7 @@ pci:v00008086d000027C5sv0000103Csd000030A3*
+  ID_MODEL_FROM_DATABASE=Compaq nw8440
+ pci:v00008086d000027C5sv000017AAsd0000200D*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027C6*
+  ID_MODEL_FROM_DATABASE=82801GHM (ICH7-M DH) SATA Controller [RAID mode]
+@@ -64095,7 +64446,7 @@ pci:v00008086d000027C8sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027C8sv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027C8sv00008086sd00004F4D*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
+@@ -64161,7 +64512,7 @@ pci:v00008086d000027C9sv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027C9sv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027C9sv00008086sd00004F4D*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
+@@ -64227,7 +64578,7 @@ pci:v00008086d000027CAsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027CAsv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027CAsv00008086sd00004F4D*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
+@@ -64287,7 +64638,7 @@ pci:v00008086d000027CBsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027CBsv000017AAsd0000200A*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027CBsv00008086sd00004F4D*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
+@@ -64347,7 +64698,7 @@ pci:v00008086d000027CCsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027CCsv000017AAsd0000200B*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027CCsv00008086sd00004F4D*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
+@@ -64509,7 +64860,7 @@ pci:v00008086d000027D8sv00001734sd000010AD*
+  ID_MODEL_FROM_DATABASE=Conexant softmodem SmartCP
+ pci:v00008086d000027D8sv000017AAsd00002010*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027D8sv000017AAsd00003802*
+  ID_MODEL_FROM_DATABASE=Lenovo 3000 C200 audio [Realtek ALC861VD]
+@@ -64569,7 +64920,7 @@ pci:v00008086d000027DAsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027DAsv000017AAsd0000200F*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027DAsv00008086sd00004F4D*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D510MO
+@@ -64647,7 +64998,7 @@ pci:v00008086d000027DFsv00001775sd000011CC*
+  ID_MODEL_FROM_DATABASE=CC11/CL11
+ pci:v00008086d000027DFsv000017AAsd0000200C*
+- ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series
++ ID_MODEL_FROM_DATABASE=ThinkPad R60/T60/X60 series
+ pci:v00008086d000027DFsv00008086sd0000544E*
+  ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP
+@@ -70358,6 +70709,9 @@ pci:v00008086d00008C02*
+ pci:v00008086d00008C03*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
++pci:v00008086d00008C03sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C03sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -70442,6 +70796,9 @@ pci:v00008086d00008C1F*
+ pci:v00008086d00008C20*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
++pci:v00008086d00008C20sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C20sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -70451,6 +70808,9 @@ pci:v00008086d00008C21*
+ pci:v00008086d00008C22*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller
++pci:v00008086d00008C22sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C22sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -70463,18 +70823,27 @@ pci:v00008086d00008C24*
+ pci:v00008086d00008C26*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1
++pci:v00008086d00008C26sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C26sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+ pci:v00008086d00008C2D*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2
++pci:v00008086d00008C2Dsv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C2Dsv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+ pci:v00008086d00008C31*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI
++pci:v00008086d00008C31sv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C31sv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -70487,6 +70856,9 @@ pci:v00008086d00008C34*
+ pci:v00008086d00008C3A*
+  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1
++pci:v00008086d00008C3Asv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C3Asv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -70547,6 +70919,9 @@ pci:v00008086d00008C4E*
+ pci:v00008086d00008C4F*
+  ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller
++pci:v00008086d00008C4Fsv0000103Csd00001909*
++ ID_MODEL_FROM_DATABASE=ZBook 15
++
+ pci:v00008086d00008C4Fsv000017AAsd0000220E*
+  ID_MODEL_FROM_DATABASE=ThinkPad T440p
+@@ -70820,6 +71195,9 @@ pci:v00008086d00009C02*
+ pci:v00008086d00009C03*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode]
++pci:v00008086d00009C03sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C04*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode]
+@@ -70907,12 +71285,18 @@ pci:v00008086d00009C1F*
+ pci:v00008086d00009C20*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller
++pci:v00008086d00009C20sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C21*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller
+ pci:v00008086d00009C22*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SMBus Controller
++pci:v00008086d00009C22sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C23*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP CHAP Counters
+@@ -70922,12 +71306,18 @@ pci:v00008086d00009C24*
+ pci:v00008086d00009C26*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #1
++pci:v00008086d00009C26sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C2D*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #2
+ pci:v00008086d00009C31*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP USB xHCI HC
++pci:v00008086d00009C31sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C35*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP SDIO Controller
+@@ -70937,6 +71327,9 @@ pci:v00008086d00009C36*
+ pci:v00008086d00009C3A*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #0
++pci:v00008086d00009C3Asv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C3B*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #1
+@@ -70958,6 +71351,9 @@ pci:v00008086d00009C42*
+ pci:v00008086d00009C43*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller
++pci:v00008086d00009C43sv000017AAsd00002214*
++ ID_MODEL_FROM_DATABASE=ThinkPad X240
++
+ pci:v00008086d00009C44*
+  ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller
+@@ -72557,6 +72953,54 @@ pci:v0000A727d00000013*
+ pci:v0000A727d00006803*
+  ID_MODEL_FROM_DATABASE=3CRDAG675B Wireless 11a/b/g Adapter
++pci:v0000AA00*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA01*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA02*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA03*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA04*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA05*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA06*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA07*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA08*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA09*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA0A*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA0B*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA0C*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA0D*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA0E*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
++pci:v0000AA0F*
++ ID_VENDOR_FROM_DATABASE=iTuner
++
+ pci:v0000AA42*
+  ID_VENDOR_FROM_DATABASE=Scitex Digital Video
diff --git a/debian/patches/hwdb-update-396.patch b/debian/patches/hwdb-update-396.patch
new file mode 100644 (file)
index 0000000..673a0d9
--- /dev/null
@@ -0,0 +1,3962 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Mon, 5 May 2014 14:23:10 +0200
+Subject: hwdb: update
+
+(cherry picked from commit 61fb23db45c626d92b4e33f09b9287f58a3625a5)
+(cherry picked from commit 65d593c63301cd4deeef72f027901a4511e07f0c)
+---
+ hwdb/20-OUI.hwdb              | 295 ++++++++++++-
+ hwdb/20-pci-vendor-model.hwdb | 174 ++++++--
+ hwdb/20-usb-vendor-model.hwdb | 992 ++++++++++++++++++++++++++++++++++++++++--
+ 3 files changed, 1368 insertions(+), 93 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index 17794ed..afc0d90 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -13940,7 +13940,7 @@ OUI:000063*
+  ID_OUI_FROM_DATABASE=BARCO CONTROL ROOMS GMBH
+ OUI:000064*
+- ID_OUI_FROM_DATABASE=YOKOGAWA DIGITAL COMPUTER CORP
++ ID_OUI_FROM_DATABASE=Yokogawa Electric Corporation
+ OUI:000065*
+  ID_OUI_FROM_DATABASE=Network General Corporation
+@@ -14927,7 +14927,7 @@ OUI:0001AE*
+  ID_OUI_FROM_DATABASE=Trex Enterprises
+ OUI:0001AF*
+- ID_OUI_FROM_DATABASE=Emerson Network Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:0001B0*
+  ID_OUI_FROM_DATABASE=Fulltek Technology Co., Ltd.
+@@ -18272,7 +18272,7 @@ OUI:00060A*
+  ID_OUI_FROM_DATABASE=Blue2space
+ OUI:00060B*
+- ID_OUI_FROM_DATABASE=Emerson Network Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:00060C*
+  ID_OUI_FROM_DATABASE=Melco Industries, Inc.
+@@ -20441,7 +20441,7 @@ OUI:0008F8*
+  ID_OUI_FROM_DATABASE=UTC CCS
+ OUI:0008F9*
+- ID_OUI_FROM_DATABASE=Emerson Network Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:0008FA*
+  ID_OUI_FROM_DATABASE=Karl E.Brinkmann GmbH
+@@ -46612,6 +46612,9 @@ OUI:0064A6*
+ OUI:00664B*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++OUI:006B8E*
++ ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd.
++
+ OUI:006B9E*
+  ID_OUI_FROM_DATABASE=VIZIO Inc
+@@ -46850,7 +46853,7 @@ OUI:008041*
+  ID_OUI_FROM_DATABASE=VEB KOMBINAT ROBOTRON
+ OUI:008042*
+- ID_OUI_FROM_DATABASE=Emerson Network Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:008043*
+  ID_OUI_FROM_DATABASE=NETWORLD, INC.
+@@ -49919,7 +49922,7 @@ OUI:00C0F8*
+  ID_OUI_FROM_DATABASE=ABOUT COMPUTING INC.
+ OUI:00C0F9*
+- ID_OUI_FROM_DATABASE=Emerson Network Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:00C0FA*
+  ID_OUI_FROM_DATABASE=CANARY COMMUNICATIONS, INC.
+@@ -50957,7 +50960,7 @@ OUI:00E034*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+ OUI:00E035*
+- ID_OUI_FROM_DATABASE=Emerson Network Power
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:00E036*
+  ID_OUI_FROM_DATABASE=PIONEER CORPORATION
+@@ -52477,6 +52480,9 @@ OUI:0838A5*
+ OUI:083AB8*
+  ID_OUI_FROM_DATABASE=Shinoda Plasma Co., Ltd.
++OUI:083D88*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:083E0C*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -52495,9 +52501,6 @@ OUI:084027*
+ OUI:08482C*
+  ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD.
+-OUI:084929*
+- ID_OUI_FROM_DATABASE=CYBATI
+-
+ OUI:084E1C*
+  ID_OUI_FROM_DATABASE=H2A Systems, LLC
+@@ -52867,6 +52870,9 @@ OUI:0C8910*
+ OUI:0C8BFD*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:0C8C8F*
++ ID_OUI_FROM_DATABASE=Kamo Technology Limited
++
+ OUI:0C8CDC*
+  ID_OUI_FROM_DATABASE=Suunto Oy
+@@ -53515,6 +53521,9 @@ OUI:1499E2*
+ OUI:149FE8*
+  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
++OUI:14A364*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:14A62C*
+  ID_OUI_FROM_DATABASE=S.M. Dezac S.A.
+@@ -54403,6 +54412,9 @@ OUI:20918A*
+ OUI:2091D9*
+  ID_OUI_FROM_DATABASE=I'M SPA
++OUI:20934D*
++ ID_OUI_FROM_DATABASE=Fujian Star-net Communication Co., Ltd
++
+ OUI:209AE9*
+  ID_OUI_FROM_DATABASE=Volacomm Co., Ltd
+@@ -54598,6 +54610,9 @@ OUI:24470E*
+ OUI:24497B*
+  ID_OUI_FROM_DATABASE=Innovative Converged Devices Inc
++OUI:244F1D*
++ ID_OUI_FROM_DATABASE=iRule LLC
++
+ OUI:245FDF*
+  ID_OUI_FROM_DATABASE=KYOCERA Corporation
+@@ -54751,6 +54766,9 @@ OUI:24DEC6*
+ OUI:24E271*
+  ID_OUI_FROM_DATABASE=Qingdao Hisense Communications Co.,Ltd
++OUI:24E314*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:24E6BA*
+  ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky
+@@ -54829,6 +54847,9 @@ OUI:2826A6*
+ OUI:28285D*
+  ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
++OUI:2829CC*
++ ID_OUI_FROM_DATABASE=Corsa Technology Incorporated
++
+ OUI:2829D9*
+  ID_OUI_FROM_DATABASE=GlobalBeiMing technology (Beijing)Co. Ltd
+@@ -55087,12 +55108,18 @@ OUI:28E14C*
+ OUI:28E297*
+  ID_OUI_FROM_DATABASE=Shanghai InfoTM Microelectronics Co.,Ltd.
++OUI:28E31F*
++ ID_OUI_FROM_DATABASE=Xiaomi inc.
++
+ OUI:28E347*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+ OUI:28E608*
+  ID_OUI_FROM_DATABASE=Tokheim
++OUI:28E6E9*
++ ID_OUI_FROM_DATABASE=SIS Sat Internet Services GmbH
++
+ OUI:28E794*
+  ID_OUI_FROM_DATABASE=Microtime Computer Inc.
+@@ -55225,6 +55252,9 @@ OUI:2C534A*
+ OUI:2C542D*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:2C54CF*
++ ID_OUI_FROM_DATABASE=LG Electronics
++
+ OUI:2C553C*
+  ID_OUI_FROM_DATABASE=Gainspeed, Inc.
+@@ -55330,6 +55360,9 @@ OUI:2CA835*
+ OUI:2CAB25*
+  ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
++OUI:2CABA4*
++ ID_OUI_FROM_DATABASE=Cisco SPVTG
++
+ OUI:2CB05D*
+  ID_OUI_FROM_DATABASE=NETGEAR
+@@ -55456,6 +55489,9 @@ OUI:303294*
+ OUI:3032D4*
+  ID_OUI_FROM_DATABASE=Hanilstm Co., Ltd.
++OUI:303335*
++ ID_OUI_FROM_DATABASE=Boosty
++
+ OUI:3037A6*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -55888,6 +55924,9 @@ OUI:34BA9A*
+ OUI:34BB1F*
+  ID_OUI_FROM_DATABASE=Research In Motion
++OUI:34BB26*
++ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
++
+ OUI:34BCA6*
+  ID_OUI_FROM_DATABASE=Beijing Ding Qing Technology, Ltd.
+@@ -55975,6 +56014,9 @@ OUI:34EF44*
+ OUI:34EF8B*
+  ID_OUI_FROM_DATABASE=NTT Communications Corporation
++OUI:34F0CA*
++ ID_OUI_FROM_DATABASE=Shenzhen Linghangyuan Digital Technology Co.,Ltd.
++
+ OUI:34F39B*
+  ID_OUI_FROM_DATABASE=WizLAN Ltd.
+@@ -56023,6 +56065,9 @@ OUI:381766*
+ OUI:38192F*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:381C1A*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:381C4A*
+  ID_OUI_FROM_DATABASE=SIMCom Wireless Solutions Co.,Ltd.
+@@ -56236,6 +56281,9 @@ OUI:38F597*
+ OUI:38F708*
+  ID_OUI_FROM_DATABASE=National Resource Management, Inc.
++OUI:38F889*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:38F8B7*
+  ID_OUI_FROM_DATABASE=V2COM PARTICIPACOES S.A.
+@@ -56287,6 +56335,9 @@ OUI:3C15C2*
+ OUI:3C15EA*
+  ID_OUI_FROM_DATABASE=TESCOM CO., LTD.
++OUI:3C189F*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:3C18A0*
+  ID_OUI_FROM_DATABASE=Luxshare Precision Industry Co.,Ltd.
+@@ -56521,6 +56572,9 @@ OUI:3CD7DA*
+ OUI:3CD92B*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
++OUI:3CD9CE*
++ ID_OUI_FROM_DATABASE=Eclipse WiFi
++
+ OUI:3CDF1E*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -56725,6 +56779,9 @@ OUI:407A80*
+ OUI:407B1B*
+  ID_OUI_FROM_DATABASE=Mettle Networks Inc.
++OUI:408256*
++ ID_OUI_FROM_DATABASE=Continental Automotive GmbH
++
+ OUI:4083DE*
+  ID_OUI_FROM_DATABASE=Motorola
+@@ -56818,6 +56875,9 @@ OUI:40C245*
+ OUI:40C4D6*
+  ID_OUI_FROM_DATABASE=ChongQing Camyu Technology Development Co.,Ltd.
++OUI:40C62A*
++ ID_OUI_FROM_DATABASE=Shanghai Jing Ren Electronic Technology Co., Ltd.
++
+ OUI:40C7C9*
+  ID_OUI_FROM_DATABASE=Naviit Inc.
+@@ -57001,6 +57061,9 @@ OUI:446132*
+ OUI:44619C*
+  ID_OUI_FROM_DATABASE=FONsystem co. ltd.
++OUI:44666E*
++ ID_OUI_FROM_DATABASE=IP-LINE
++
+ OUI:446755*
+  ID_OUI_FROM_DATABASE=Orbit Irrigation
+@@ -57019,6 +57082,9 @@ OUI:44700B*
+ OUI:447098*
+  ID_OUI_FROM_DATABASE=MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED
++OUI:44746C*
++ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++
+ OUI:447BC4*
+  ID_OUI_FROM_DATABASE=DualShine Technology(SZ)Co.,Ltd
+@@ -57079,6 +57145,9 @@ OUI:44A42D*
+ OUI:44A689*
+  ID_OUI_FROM_DATABASE=PROMAX ELECTRONICA SA
++OUI:44A6E5*
++ ID_OUI_FROM_DATABASE=THINKING TECHNOLOGY CO.,LTD
++
+ OUI:44A7CF*
+  ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
+@@ -57178,6 +57247,9 @@ OUI:48022A*
+ OUI:480362*
+  ID_OUI_FROM_DATABASE=DESAY ELECTRONICS(HUIZHOU)CO.,LTD
++OUI:480C49*
++ ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC
++
+ OUI:481249*
+  ID_OUI_FROM_DATABASE=Luxcom Technologies Inc.
+@@ -57463,6 +57535,9 @@ OUI:4C2258*
+ OUI:4C2578*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:4C26E7*
++ ID_OUI_FROM_DATABASE=Welgate Co., Ltd.
++
+ OUI:4C2C80*
+  ID_OUI_FROM_DATABASE=Beijing Skyway Technologies Co.,Ltd
+@@ -57535,6 +57610,9 @@ OUI:4C63EB*
+ OUI:4C64D9*
+  ID_OUI_FROM_DATABASE=Guangdong Leawin Group Co., Ltd
++OUI:4C6E6E*
++ ID_OUI_FROM_DATABASE=Comnect Technology CO.,LTD
++
+ OUI:4C72B9*
+  ID_OUI_FROM_DATABASE=Pegatron Corporation
+@@ -57565,6 +57643,9 @@ OUI:4C8093*
+ OUI:4C82CF*
+  ID_OUI_FROM_DATABASE=Echostar Technologies
++OUI:4C83DE*
++ ID_OUI_FROM_DATABASE=Cisco SPVTG
++
+ OUI:4C8B30*
+  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+@@ -57592,6 +57673,9 @@ OUI:4C9E80*
+ OUI:4C9EE4*
+  ID_OUI_FROM_DATABASE=Hanyang Navicom Co.,Ltd.
++OUI:4C9EFF*
++ ID_OUI_FROM_DATABASE=ZyXEL Communications Corp
++
+ OUI:4CA56D*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -57775,6 +57859,9 @@ OUI:504A6E*
+ OUI:504F94*
+  ID_OUI_FROM_DATABASE=Loxone Electronics GmbH
++OUI:505065*
++ ID_OUI_FROM_DATABASE=TAKT Corporation
++
+ OUI:505663*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+@@ -57808,6 +57895,9 @@ OUI:506313*
+ OUI:506441*
+  ID_OUI_FROM_DATABASE=Greenlee
++OUI:506787*
++ ID_OUI_FROM_DATABASE=iTellus
++
+ OUI:5067F0*
+  ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
+@@ -58693,6 +58783,12 @@ OUI:5CAC4C*
+ OUI:5CB524*
+  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
++OUI:5CB6CC*
++ ID_OUI_FROM_DATABASE=NovaComm Technologies Inc.
++
++OUI:5CB8CB*
++ ID_OUI_FROM_DATABASE=Allis Communications
++
+ OUI:5CBD9E*
+  ID_OUI_FROM_DATABASE=HONGKONG MIRACLE EAGLE TECHNOLOGY(GROUP) LIMITED
+@@ -58789,6 +58885,9 @@ OUI:5CF8A1*
+ OUI:5CF938*
+  ID_OUI_FROM_DATABASE=Apple, Inc
++OUI:5CF96A*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:5CF9DD*
+  ID_OUI_FROM_DATABASE=Dell Inc
+@@ -58927,6 +59026,9 @@ OUI:60748D*
+ OUI:607688*
+  ID_OUI_FROM_DATABASE=Velodyne
++OUI:6077E2*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:60812B*
+  ID_OUI_FROM_DATABASE=Custom Control Concepts
+@@ -59074,6 +59176,9 @@ OUI:60E00E*
+ OUI:60E327*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++OUI:60E701*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:60E956*
+  ID_OUI_FROM_DATABASE=Ayla Networks, Inc
+@@ -59131,6 +59236,9 @@ OUI:6405BE*
+ OUI:64094C*
+  ID_OUI_FROM_DATABASE=Beijing Superbee Wireless Technology Co.,Ltd
++OUI:640980*
++ ID_OUI_FROM_DATABASE=XIAOMI Electronics,CO.,LTD
++
+ OUI:640B4A*
+  ID_OUI_FROM_DATABASE=Digital Telecom Technology Limited
+@@ -59254,6 +59362,9 @@ OUI:645FFF*
+ OUI:646223*
+  ID_OUI_FROM_DATABASE=Cellient Co., Ltd.
++OUI:64649B*
++ ID_OUI_FROM_DATABASE=juniper networks
++
+ OUI:6465C0*
+  ID_OUI_FROM_DATABASE=Nuvon, Inc
+@@ -59680,6 +59791,9 @@ OUI:689C5E*
+ OUI:689C70*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:68A0F6*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:68A1B7*
+  ID_OUI_FROM_DATABASE=Honghao Mingchuan Technology (Beijing) CO.,Ltd.
+@@ -60130,6 +60244,9 @@ OUI:702B1D*
+ OUI:702C1F*
+  ID_OUI_FROM_DATABASE=Wisol
++OUI:702DD1*
++ ID_OUI_FROM_DATABASE=Newings Communication CO., LTD.
++
+ OUI:702F4B*
+  ID_OUI_FROM_DATABASE=PolyVision Inc.
+@@ -60211,6 +60328,9 @@ OUI:705986*
+ OUI:705AB6*
+  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
++OUI:705B2E*
++ ID_OUI_FROM_DATABASE=M2Communication Inc.
++
+ OUI:705CAD*
+  ID_OUI_FROM_DATABASE=Konami Gaming Inc
+@@ -60568,6 +60688,9 @@ OUI:748EF8*
+ OUI:748F1B*
+  ID_OUI_FROM_DATABASE=MasterImage 3D
++OUI:748F4D*
++ ID_OUI_FROM_DATABASE=MEN Mikro Elektronik GmbH
++
+ OUI:749050*
+  ID_OUI_FROM_DATABASE=Renesas Electronics Corporation
+@@ -60694,6 +60817,9 @@ OUI:74F07D*
+ OUI:74F102*
+  ID_OUI_FROM_DATABASE=Beijing HCHCOM Technology Co., Ltd
++OUI:74F413*
++ ID_OUI_FROM_DATABASE=Maxwell Forest
++
+ OUI:74F612*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -61582,6 +61708,9 @@ OUI:806CBC*
+ OUI:80711F*
+  ID_OUI_FROM_DATABASE=Juniper Networks
++OUI:80717A*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:807693*
+  ID_OUI_FROM_DATABASE=Newag SA
+@@ -61633,6 +61762,9 @@ OUI:80946C*
+ OUI:8096B1*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:8096CA*
++ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind Co.,Ltd
++
+ OUI:80971B*
+  ID_OUI_FROM_DATABASE=Altenergy Power System,Inc.
+@@ -61699,6 +61831,9 @@ OUI:80D019*
+ OUI:80D18B*
+  ID_OUI_FROM_DATABASE=Hangzhou I'converge Technology Co.,Ltd
++OUI:80D21D*
++ ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc
++
+ OUI:80D433*
+  ID_OUI_FROM_DATABASE=LzLabs GmbH
+@@ -62356,6 +62491,9 @@ OUI:8C2F39*
+ OUI:8C3330*
+  ID_OUI_FROM_DATABASE=EmFirst Co., Ltd.
++OUI:8C3357*
++ ID_OUI_FROM_DATABASE=HiteVision Digital Media Technology Co.,Ltd.
++
+ OUI:8C3AE3*
+  ID_OUI_FROM_DATABASE=LG Electronics
+@@ -62842,6 +62980,9 @@ OUI:90B134*
+ OUI:90B21F*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:90B686*
++ ID_OUI_FROM_DATABASE=Murata Manufacturing Co., Ltd.
++
+ OUI:90B8D0*
+  ID_OUI_FROM_DATABASE=Joyent, Inc.
+@@ -62887,6 +63028,9 @@ OUI:90D92C*
+ OUI:90DA4E*
+  ID_OUI_FROM_DATABASE=AVANU
++OUI:90DA6A*
++ ID_OUI_FROM_DATABASE=MCC System Co., Ltd.
++
+ OUI:90DB46*
+  ID_OUI_FROM_DATABASE=E-LEAD ELECTRONIC CO., LTD
+@@ -63100,6 +63244,9 @@ OUI:94ACCA*
+ OUI:94AE61*
+  ID_OUI_FROM_DATABASE=Alcatel Lucent
++OUI:94AEE3*
++ ID_OUI_FROM_DATABASE=Belden Hirschmann Industries (Suzhou) Ltd.
++
+ OUI:94B8C5*
+  ID_OUI_FROM_DATABASE=RuggedCom Inc.
+@@ -63151,6 +63298,9 @@ OUI:94CE2C*
+ OUI:94D019*
+  ID_OUI_FROM_DATABASE=Cydle Corp.
++OUI:94D60E*
++ ID_OUI_FROM_DATABASE=shenzhen yunmao information technologies co., ltd
++
+ OUI:94D723*
+  ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co., Ltd
+@@ -63730,6 +63880,9 @@ OUI:9CC077*
+ OUI:9CC0D2*
+  ID_OUI_FROM_DATABASE=Conductix-Wampfler AG
++OUI:9CC172*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:9CC7A6*
+  ID_OUI_FROM_DATABASE=AVM GmbH
+@@ -63799,6 +63952,9 @@ OUI:A002DC*
+ OUI:A00363*
+  ID_OUI_FROM_DATABASE=Robert Bosch Healthcare GmbH
++OUI:A00627*
++ ID_OUI_FROM_DATABASE=NEXPA System
++
+ OUI:A00798*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+@@ -63898,6 +64054,9 @@ OUI:A051C6*
+ OUI:A055DE*
+  ID_OUI_FROM_DATABASE=Pace plc
++OUI:A056B2*
++ ID_OUI_FROM_DATABASE=Harman/Becker Automotive Systems GmbH
++
+ OUI:A0593A*
+  ID_OUI_FROM_DATABASE=V.D.S. Video Display Systems srl
+@@ -64234,6 +64393,9 @@ OUI:A45C27*
+ OUI:A45D36*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:A45DA1*
++ ID_OUI_FROM_DATABASE=ADB Broadband Italia
++
+ OUI:A46032*
+  ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD
+@@ -64312,6 +64474,9 @@ OUI:A49F89*
+ OUI:A4A24A*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
++OUI:A4A4D3*
++ ID_OUI_FROM_DATABASE=Bluebank Communication Technology Co.Ltd
++
+ OUI:A4A80F*
+  ID_OUI_FROM_DATABASE=Shenzhen Coship Electronics Co., Ltd.
+@@ -64462,6 +64627,9 @@ OUI:A80600*
+ OUI:A80C0D*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:A81374*
++ ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company
++
+ OUI:A8154D*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+@@ -64495,6 +64663,9 @@ OUI:A82BD6*
+ OUI:A830AD*
+  ID_OUI_FROM_DATABASE=Wei Fang Goertek Electronics Co.,Ltd
++OUI:A8329A*
++ ID_OUI_FROM_DATABASE=Digicom Futuristic Technologies Ltd.
++
+ OUI:A83944*
+  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+@@ -64582,6 +64753,9 @@ OUI:A88CEE*
+ OUI:A88D7B*
+  ID_OUI_FROM_DATABASE=SunDroid Global limited.
++OUI:A88E24*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:A8922C*
+  ID_OUI_FROM_DATABASE=LG Electronics
+@@ -64903,6 +65077,9 @@ OUI:AC9CE4*
+ OUI:ACA016*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:ACA213*
++ ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD
++
+ OUI:ACA22C*
+  ID_OUI_FROM_DATABASE=Baycity Technologies Ltd
+@@ -65068,6 +65245,9 @@ OUI:B01B7C*
+ OUI:B01C91*
+  ID_OUI_FROM_DATABASE=Elim Co
++OUI:B01F81*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:B024F3*
+  ID_OUI_FROM_DATABASE=Progeny Systems
+@@ -65113,6 +65293,9 @@ OUI:B058C4*
+ OUI:B05B1F*
+  ID_OUI_FROM_DATABASE=THERMO FISHER SCIENTIFIC S.P.A.
++OUI:B05B67*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:B05CE5*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -65338,6 +65521,9 @@ OUI:B407F9*
+ OUI:B40832*
+  ID_OUI_FROM_DATABASE=TC Communications
++OUI:B40AC6*
++ ID_OUI_FROM_DATABASE=DEXON Systems Ltd.
++
+ OUI:B40B44*
+  ID_OUI_FROM_DATABASE=Smartisan Technology Co., Ltd.
+@@ -65533,6 +65719,9 @@ OUI:B4AA4D*
+ OUI:B4AB2C*
+  ID_OUI_FROM_DATABASE=MtM Technology Corporation
++OUI:B4AE6F*
++ ID_OUI_FROM_DATABASE=Circle Reliance, Inc.
++
+ OUI:B4B017*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
+@@ -65566,6 +65755,9 @@ OUI:B4C810*
+ OUI:B4CCE9*
+  ID_OUI_FROM_DATABASE=PROSYST
++OUI:B4CEF6*
++ ID_OUI_FROM_DATABASE=HTC Corporation
++
+ OUI:B4CFDB*
+  ID_OUI_FROM_DATABASE=Shenzhen Jiuzhou Electric Co.,LTD
+@@ -65812,6 +66004,9 @@ OUI:B898B0*
+ OUI:B898F7*
+  ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen
++OUI:B89919*
++ ID_OUI_FROM_DATABASE=7signal Solutions, Inc
++
+ OUI:B89AED*
+  ID_OUI_FROM_DATABASE=OceanServer Technology, Inc
+@@ -66160,6 +66355,9 @@ OUI:BC9889*
+ OUI:BC99BC*
+  ID_OUI_FROM_DATABASE=FonSee Technology Inc.
++OUI:BC9CC5*
++ ID_OUI_FROM_DATABASE=Beijing Huafei Technology Co., Ltd.
++
+ OUI:BC9DA5*
+  ID_OUI_FROM_DATABASE=DASCOM Europe GmbH
+@@ -66511,6 +66709,9 @@ OUI:C0EAE4*
+ OUI:C0F1C4*
+  ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd.
++OUI:C0F2FB*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:C0F79D*
+  ID_OUI_FROM_DATABASE=Powercode
+@@ -66613,6 +66814,9 @@ OUI:C43C3C*
+ OUI:C43DC7*
+  ID_OUI_FROM_DATABASE=NETGEAR
++OUI:C44202*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:C4438F*
+  ID_OUI_FROM_DATABASE=LG Electronics
+@@ -66634,6 +66838,9 @@ OUI:C44AD0*
+ OUI:C44B44*
+  ID_OUI_FROM_DATABASE=Omniprint Inc.
++OUI:C44BD1*
++ ID_OUI_FROM_DATABASE=Wallys Communications  Teachnologies Co.,Ltd.
++
+ OUI:C44E1F*
+  ID_OUI_FROM_DATABASE=BlueN
+@@ -66835,6 +67042,9 @@ OUI:C4F57C*
+ OUI:C4FCE4*
+  ID_OUI_FROM_DATABASE=DishTV NZ Ltd
++OUI:C80210*
++ ID_OUI_FROM_DATABASE=LG Innotek
++
+ OUI:C80258*
+  ID_OUI_FROM_DATABASE=ITW GSE ApS
+@@ -67363,6 +67573,9 @@ OUI:CC9F35*
+ OUI:CCA0E5*
+  ID_OUI_FROM_DATABASE=DZG Metering GmbH
++OUI:CCA223*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:CCA374*
+  ID_OUI_FROM_DATABASE=Guangdong Guanglian Electronic Technology Co.Ltd
+@@ -67498,6 +67711,9 @@ OUI:CCFE3C*
+ OUI:D00790*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:D00AAB*
++ ID_OUI_FROM_DATABASE=Yokogawa Digital Computer Corporation
++
+ OUI:D00EA4*
+  ID_OUI_FROM_DATABASE=Porsche Cars North America
+@@ -67576,6 +67792,9 @@ OUI:D05875*
+ OUI:D059C3*
+  ID_OUI_FROM_DATABASE=CeraMicro Technology Corporation
++OUI:D059E4*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:D05A0F*
+  ID_OUI_FROM_DATABASE=I-BT DIGITAL CO.,LTD
+@@ -68248,6 +68467,9 @@ OUI:D86595*
+ OUI:D866C6*
+  ID_OUI_FROM_DATABASE=Shenzhen Daystar Technology Co.,ltd
++OUI:D866EE*
++ ID_OUI_FROM_DATABASE=BOXIN COMMUNICATION CO.,LTD.
++
+ OUI:D867D9*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+@@ -68542,6 +68764,9 @@ OUI:DC49C9*
+ OUI:DC4EDE*
+  ID_OUI_FROM_DATABASE=SHINYEI TECHNOLOGY CO., LTD.
++OUI:DC537C*
++ ID_OUI_FROM_DATABASE=Compal Broadband Networks, Inc.
++
+ OUI:DC5726*
+  ID_OUI_FROM_DATABASE=Power-One
+@@ -69112,6 +69337,9 @@ OUI:E45614*
+ OUI:E457A8*
+  ID_OUI_FROM_DATABASE=Stuart Manufacturing, Inc.
++OUI:E45D52*
++ ID_OUI_FROM_DATABASE=Avaya, Inc
++
+ OUI:E46449*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -69298,6 +69526,9 @@ OUI:E81132*
+ OUI:E81324*
+  ID_OUI_FROM_DATABASE=GuangZhou Bonsoninfo System CO.,LTD
++OUI:E8150E*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:E817FC*
+  ID_OUI_FROM_DATABASE=NIFTY Corporation
+@@ -69373,6 +69604,9 @@ OUI:E85B5B*
+ OUI:E85BF0*
+  ID_OUI_FROM_DATABASE=Imaging Diagnostics
++OUI:E85D6B*
++ ID_OUI_FROM_DATABASE=Luminate Wireless
++
+ OUI:E85E53*
+  ID_OUI_FROM_DATABASE=Infratec Datentechnik GmbH
+@@ -69409,6 +69643,9 @@ OUI:E878A1*
+ OUI:E87AF3*
+  ID_OUI_FROM_DATABASE=S5 Tech S.r.l.
++OUI:E8802E*
++ ID_OUI_FROM_DATABASE=Apple
++
+ OUI:E880D8*
+  ID_OUI_FROM_DATABASE=GNTEK Electronics Co.,Ltd.
+@@ -69719,7 +69956,7 @@ OUI:EC9B5B*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+ OUI:EC9ECD*
+- ID_OUI_FROM_DATABASE=Emerson Network Power and Embedded Computing
++ ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+ OUI:ECA29B*
+  ID_OUI_FROM_DATABASE=Kemppi Oy
+@@ -69745,6 +69982,9 @@ OUI:ECC38A*
+ OUI:ECC882*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:ECCB30*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:ECCD6D*
+  ID_OUI_FROM_DATABASE=Allied Telesis, Inc.
+@@ -69763,6 +70003,9 @@ OUI:ECD925*
+ OUI:ECD950*
+  ID_OUI_FROM_DATABASE=IRT SA
++OUI:ECD9D1*
++ ID_OUI_FROM_DATABASE=Shenzhen TG-NET Botone Technology Co.,Ltd.
++
+ OUI:ECDE3D*
+  ID_OUI_FROM_DATABASE=Lamprey Networks, Inc.
+@@ -70144,6 +70387,12 @@ OUI:F406A5*
+ OUI:F40B93*
+  ID_OUI_FROM_DATABASE=Research In Motion
++OUI:F40E11*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
++OUI:F40F1B*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:F40F9B*
+  ID_OUI_FROM_DATABASE=WAVELINK
+@@ -70165,6 +70414,9 @@ OUI:F41FC2*
+ OUI:F42012*
+  ID_OUI_FROM_DATABASE=Cuciniale GmbH
++OUI:F42833*
++ ID_OUI_FROM_DATABASE=MMPC Inc.
++
+ OUI:F42896*
+  ID_OUI_FROM_DATABASE=SPECTO PAINEIS ELETRONICOS LTDA
+@@ -70294,6 +70546,9 @@ OUI:F499AC*
+ OUI:F49F54*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:F49FF3*
++ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
++
+ OUI:F4A294*
+  ID_OUI_FROM_DATABASE=EAGLE WORLD DEVELOPMENT CO., LIMITED
+@@ -70351,6 +70606,9 @@ OUI:F4CE46*
+ OUI:F4CFE2*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:F4D032*
++ ID_OUI_FROM_DATABASE=Yunnan Ideal Information&Technology.,Ltd
++
+ OUI:F4D261*
+  ID_OUI_FROM_DATABASE=SEMOCON Co., Ltd
+@@ -70390,12 +70648,18 @@ OUI:F4F5A5*
+ OUI:F4F5E8*
+  ID_OUI_FROM_DATABASE=Google
++OUI:F4F646*
++ ID_OUI_FROM_DATABASE=Dediprog Technology Co. Ltd.
++
+ OUI:F4F951*
+  ID_OUI_FROM_DATABASE=Apple
+ OUI:F4FC32*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:F4FD2B*
++ ID_OUI_FROM_DATABASE=ZOYI Company
++
+ OUI:F80113*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+@@ -70798,6 +71062,9 @@ OUI:FC1607*
+ OUI:FC1794*
+  ID_OUI_FROM_DATABASE=InterCreative Co., Ltd
++OUI:FC1910*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:FC19D0*
+  ID_OUI_FROM_DATABASE=Cloud Vision Networks Technology Co.,Ltd.
+@@ -70906,6 +71173,9 @@ OUI:FC7516*
+ OUI:FC75E6*
+  ID_OUI_FROM_DATABASE=Handreamnet
++OUI:FC790B*
++ ID_OUI_FROM_DATABASE=Hitachi High Technologies America, Inc.
++
+ OUI:FC7CE7*
+  ID_OUI_FROM_DATABASE=FCI USA LLC
+@@ -70948,6 +71218,9 @@ OUI:FCA841*
+ OUI:FCA9B0*
+  ID_OUI_FROM_DATABASE=MIARTECH (SHANGHAI),INC.
++OUI:FCAA14*
++ ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
++
+ OUI:FCAD0F*
+  ID_OUI_FROM_DATABASE=QTS NETWORKS
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 14637d3..2957774 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -1673,6 +1673,9 @@ pci:v00001002d00001306*
+ pci:v00001002d00001307*
+  ID_MODEL_FROM_DATABASE=Kaveri
++pci:v00001002d00001308*
++ ID_MODEL_FROM_DATABASE=Kaveri HDMI/DP Audio Controller
++
+ pci:v00001002d00001309*
+  ID_MODEL_FROM_DATABASE=Kaveri [Radeon R7 Graphics]
+@@ -4268,6 +4271,9 @@ pci:v00001002d00006611sv00001B0Asd000090D3*
+ pci:v00001002d00006613*
+  ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240]
++pci:v00001002d00006613sv00001682sd00007240*
++ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240] (R7 240 2048 MB)
++
+ pci:v00001002d00006620*
+  ID_MODEL_FROM_DATABASE=Mars
+@@ -6024,31 +6030,31 @@ pci:v00001002d00006819sv0000174Bsd0000E221*
+  ID_MODEL_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850] (Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP)
+ pci:v00001002d00006820*
+- ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M]
++ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M / R9 M275X]
+ pci:v00001002d00006820sv0000103Csd00001851*
+- ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M] (Radeon HD 7750M)
++ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M / R9 M275X] (Radeon HD 7750M)
+ pci:v00001002d00006820sv000017AAsd00003801*
+- ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M] (Radeon R9 M275)
++ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M / R9 M275X] (Radeon R9 M275)
+ pci:v00001002d00006821*
+- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M]
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M / R9 M270X]
+ pci:v00001002d00006821sv00001002sd0000031E*
+- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] (FirePro SX4000)
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M / R9 M270X] (FirePro SX4000)
+ pci:v00001002d00006821sv00001028sd000005CC*
+- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] (FirePro M5100)
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M / R9 M270X] (FirePro M5100)
+ pci:v00001002d00006821sv00001028sd000015CC*
+- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M] (FirePro M5100)
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M / R9 M270X] (FirePro M5100)
+ pci:v00001002d00006822*
+  ID_MODEL_FROM_DATABASE=Venus PRO [Radeon E8860]
+ pci:v00001002d00006823*
+- ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M]
++ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M / R9 M265X]
+ pci:v00001002d00006825*
+  ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M]
+@@ -7770,64 +7776,73 @@ pci:v00001002d000068F9sv000017AFsd00003014*
+  ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350/8350 Series] (Radeon HD 6350)
+ pci:v00001002d000068FA*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350]
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220]
+ pci:v00001002d000068FAsv00001019sd00000019*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001019sd00000021*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001019sd00000022*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001019sd00000026*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 8350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 8350)
+ pci:v00001002d000068FAsv0000103Csd00002ADF*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350A)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350A)
+ pci:v00001002d000068FAsv0000103Csd00002AE8*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350A)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350A)
+ pci:v00001002d000068FAsv00001043sd00008350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 8350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 8350)
+ pci:v00001002d000068FAsv00001462sd00002128*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd00002184*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd00002186*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd00002495*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001462sd0000B490*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv00001642sd00003985*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
++
++pci:v00001002d000068FAsv0000174Bsd00003510*
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 8350)
++
++pci:v00001002d000068FAsv0000174Bsd00003521*
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon R5 220)
++
++pci:v00001002d000068FAsv0000174Bsd00003522*
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon R5 220)
+ pci:v00001002d000068FAsv0000174Bsd00007350*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd00008153*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 8350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 8350)
+ pci:v00001002d000068FAsv0000174Bsd0000E127*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd0000E153*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv0000174Bsd0000E180*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FAsv000017AFsd00003015*
+- ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350] (Radeon HD 7350)
++ ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350/8350 / R5 220] (Radeon HD 7350)
+ pci:v00001002d000068FE*
+  ID_MODEL_FROM_DATABASE=Cedar LE
+@@ -8886,7 +8901,7 @@ pci:v00001002d0000980A*
+  ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 7290]
+ pci:v00001002d00009830*
+- ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400]
++ ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400 / R3 Series]
+ pci:v00001002d00009831*
+  ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400E]
+@@ -8904,13 +8919,13 @@ pci:v00001002d00009835*
+  ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8310E]
+ pci:v00001002d00009836*
+- ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8280]
++ ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8280 / R3 Series]
+ pci:v00001002d00009837*
+  ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8280E]
+ pci:v00001002d00009838*
+- ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8240]
++ ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8240 / R3 Series]
+ pci:v00001002d00009839*
+  ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8180]
+@@ -10724,6 +10739,33 @@ pci:v00001022d00001418*
+ pci:v00001022d00001419*
+  ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) I/O Memory Management Unit
++pci:v00001022d0000141A*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Function 0
++
++pci:v00001022d0000141B*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Function 1
++
++pci:v00001022d0000141C*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Function 2
++
++pci:v00001022d0000141D*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Function 3
++
++pci:v00001022d0000141E*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Function 4
++
++pci:v00001022d0000141F*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Function 5
++
++pci:v00001022d00001422*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Root Complex
++
++pci:v00001022d00001423*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) I/O Memory Management Unit
++
++pci:v00001022d00001426*
++ ID_MODEL_FROM_DATABASE=Family 15h (Models 30h-3fh) Processor Root Port
++
+ pci:v00001022d00001439*
+  ID_MODEL_FROM_DATABASE=Family 16h Processor Functions 5:1
+@@ -17621,6 +17663,9 @@ pci:v00001093d000071BC*
+ pci:v00001093d000071D0*
+  ID_MODEL_FROM_DATABASE=PXI-6143
++pci:v00001093d000071DC*
++ ID_MODEL_FROM_DATABASE=PCI-1588
++
+ pci:v00001093d00007260*
+  ID_MODEL_FROM_DATABASE=PXI-5142
+@@ -17639,6 +17684,9 @@ pci:v00001093d000072AA*
+ pci:v00001093d000072AB*
+  ID_MODEL_FROM_DATABASE=PCI-5105
++pci:v00001093d000072B8*
++ ID_MODEL_FROM_DATABASE=PXI-6682
++
+ pci:v00001093d0000730F*
+  ID_MODEL_FROM_DATABASE=PXI-5922EX
+@@ -17708,6 +17756,9 @@ pci:v00001093d000073F0*
+ pci:v00001093d000073F1*
+  ID_MODEL_FROM_DATABASE=PCI-5153
++pci:v00001093d00007405*
++ ID_MODEL_FROM_DATABASE=PXIe-6674T
++
+ pci:v00001093d0000745E*
+  ID_MODEL_FROM_DATABASE=PXI-5153EX
+@@ -17726,6 +17777,12 @@ pci:v00001093d00007539*
+ pci:v00001093d0000753A*
+  ID_MODEL_FROM_DATABASE=NI 9159
++pci:v00001093d000075E5*
++ ID_MODEL_FROM_DATABASE=PXI-6683
++
++pci:v00001093d000075E6*
++ ID_MODEL_FROM_DATABASE=PXI-6683H
++
+ pci:v00001093d00007626*
+  ID_MODEL_FROM_DATABASE=NI 9154
+@@ -28100,6 +28157,9 @@ pci:v000010EC*
+ pci:v000010ECd00000139*
+  ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+ Ethernet Controller
++pci:v000010ECd00005208*
++ ID_MODEL_FROM_DATABASE=RTS5208 PCI Express Card Reader
++
+ pci:v000010ECd00005209*
+  ID_MODEL_FROM_DATABASE=RTS5209 PCI Express Card Reader
+@@ -28128,7 +28188,7 @@ pci:v000010ECd00005249sv0000103Csd00001909*
+  ID_MODEL_FROM_DATABASE=RTS5249 PCI Express Card Reader (ZBook 15)
+ pci:v000010ECd00005288*
+- ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader
++ ID_MODEL_FROM_DATABASE=RTS5288 PCI Express Card Reader
+ pci:v000010ECd00008029*
+  ID_MODEL_FROM_DATABASE=RTL-8029(AS)
+@@ -32153,6 +32213,9 @@ pci:v00001131d00007160*
+ pci:v00001131d00007160sv00001458sd00009009*
+  ID_MODEL_FROM_DATABASE=SAA7160 (E8000 DVB-T/Analog TV/FM tuner)
++pci:v00001131d00007160sv00001461sd00001455*
++ ID_MODEL_FROM_DATABASE=SAA7160 (AVerTV Hybrid Speedy PCI-E (H788))
++
+ pci:v00001131d00007162*
+  ID_MODEL_FROM_DATABASE=SAA7162
+@@ -34691,6 +34754,9 @@ pci:v000011ABd00002A42*
+ pci:v000011ABd00002A43*
+  ID_MODEL_FROM_DATABASE=88W8366 [TopDog] 802.11n Wireless
++pci:v000011ABd00002A55*
++ ID_MODEL_FROM_DATABASE=88W8864 [Avastar] 802.11ac Wireless
++
+ pci:v000011ABd00002B36*
+  ID_MODEL_FROM_DATABASE=88W8764 [Avastar] 802.11n Wireless
+@@ -36536,6 +36602,9 @@ pci:v00001217d00008120*
+ pci:v00001217d00008130*
+  ID_MODEL_FROM_DATABASE=Integrated MS/MSPRO/xD Controller
++pci:v00001217d00008221*
++ ID_MODEL_FROM_DATABASE=SD/MMC Card Reader Controller
++
+ pci:v00001217d00008320*
+  ID_MODEL_FROM_DATABASE=OZ600 MMC/SD Controller
+@@ -43278,7 +43347,13 @@ pci:v00001469*
+  ID_VENDOR_FROM_DATABASE=Cleveland Motion Controls
+ pci:v0000146A*
+- ID_VENDOR_FROM_DATABASE=IFR
++ ID_VENDOR_FROM_DATABASE=Aeroflex
++
++pci:v0000146Ad00003010*
++ ID_MODEL_FROM_DATABASE=3010 RF Synthesizer
++
++pci:v0000146Ad00003A11*
++ ID_MODEL_FROM_DATABASE=3011A PXI RF Synthesizer
+ pci:v0000146B*
+  ID_VENDOR_FROM_DATABASE=Parascan Technologies Ltd
+@@ -52409,6 +52484,9 @@ pci:v00001AB8d00004006*
+ pci:v00001AB9*
+  ID_VENDOR_FROM_DATABASE=Espia Srl
++pci:v00001AC8*
++ ID_VENDOR_FROM_DATABASE=Aeroflex Gaisler
++
+ pci:v00001ACC*
+  ID_VENDOR_FROM_DATABASE=Point of View BV
+@@ -52724,9 +52802,15 @@ pci:v00001B4Bd000091A0*
+ pci:v00001B4Bd000091A4*
+  ID_MODEL_FROM_DATABASE=88SE912x IDE Controller
++pci:v00001B4Bd00009220*
++ ID_MODEL_FROM_DATABASE=88SE9220 PCIe 2.0 x2 2-port SATA 6 Gb/s RAID Controller
++
+ pci:v00001B4Bd00009230*
+  ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller
++pci:v00001B4Bd00009235*
++ ID_MODEL_FROM_DATABASE=88SE9235 PCIe 2.0 x2 4-port SATA 6 Gb/s Controller
++
+ pci:v00001B4Bd00009445*
+  ID_MODEL_FROM_DATABASE=88SE9445 PCIe 2.0 x4 4-Port SAS/SATA 6 Gbps RAID Controller
+@@ -54693,7 +54777,7 @@ pci:v00006688*
+  ID_VENDOR_FROM_DATABASE=Zycoo Co., Ltd
+ pci:v00006688d00001200*
+- ID_MODEL_FROM_DATABASE=CooVOX TDM Analog Module
++ ID_MODEL_FROM_DATABASE=CooVox TDM Analog Module
+ pci:v00006688d00001400*
+  ID_MODEL_FROM_DATABASE=CooVOX TDM GSM Module
+@@ -59066,8 +59150,11 @@ pci:v00008086d00001522sv00008086sd000000A4*
+ pci:v00008086d00001523*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection
++pci:v00008086d00001523sv00001028sd00000060*
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Gigabit 2P I350 LOM)
++
+ pci:v00008086d00001523sv00001028sd00001F9B*
+- ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Gigabit 4P I350 bNDC)
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Gigabit 4P I350-t bNDC)
+ pci:v00008086d00001523sv0000103Csd00001784*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection (Ethernet 1Gb 2-port 361FLB Adapter)
+@@ -59183,9 +59270,6 @@ pci:v00008086d00001536*
+ pci:v00008086d00001537*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection
+-pci:v00008086d00001538*
+- ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+-
+ pci:v00008086d00001539*
+  ID_MODEL_FROM_DATABASE=I211 Gigabit Network Connection
+@@ -59270,6 +59354,12 @@ pci:v00008086d0000155Dsv00008086sd00000002*
+ pci:v00008086d00001560*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X540
++pci:v00008086d0000156F*
++ ID_MODEL_FROM_DATABASE=Ethernet Connection I219-LM
++
++pci:v00008086d00001570*
++ ID_MODEL_FROM_DATABASE=Ethernet Connection I219-V
++
+ pci:v00008086d00001571*
+  ID_MODEL_FROM_DATABASE=XL710 X710 Virtual Function
+@@ -59316,16 +59406,16 @@ pci:v00008086d00001581sv00001028sd00001F98*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10Gbe backplane (Ethernet 10G 4P X710-k bNDC)
+ pci:v00008086d00001583*
+- ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+
+ pci:v00008086d00001583sv00008086sd00000001*
+- ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
+ pci:v00008086d00001583sv00008086sd00000002*
+- ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
+ pci:v00008086d00001583sv00008086sd00000003*
+- ID_MODEL_FROM_DATABASE=Ethernet Controller LX710 for 40GbE QSFP+ (Ethernet I/O Module XL710-Q2)
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet I/O Module XL710-Q2)
+ pci:v00008086d00001584*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+
+diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
+index 014c628..52586bc 100644
+--- a/hwdb/20-usb-vendor-model.hwdb
++++ b/hwdb/20-usb-vendor-model.hwdb
+@@ -21,7 +21,7 @@ usb:v0004*
+  ID_VENDOR_FROM_DATABASE=Nebraska Furniture Mart
+ usb:v0011*
+- ID_VENDOR_FROM_DATABASE=Unknown manufacturer
++ ID_VENDOR_FROM_DATABASE=Unknown
+ usb:v0011p7788*
+  ID_MODEL_FROM_DATABASE=Flash mass storage drive
+@@ -275,6 +275,9 @@ usb:v03EBp2110*
+ usb:v03EBp2122*
+  ID_MODEL_FROM_DATABASE=XMEGA-A1 Explained evaluation kit
++usb:v03EBp2141*
++ ID_MODEL_FROM_DATABASE=ICE debugger
++
+ usb:v03EBp2310*
+  ID_MODEL_FROM_DATABASE=EVK11xx evaluation board
+@@ -455,6 +458,9 @@ usb:v03F0p0121*
+ usb:v03F0p0122*
+  ID_MODEL_FROM_DATABASE=HID Internet Keyboard
++usb:v03F0p0139*
++ ID_MODEL_FROM_DATABASE=Barcode Scanner 4430
++
+ usb:v03F0p0201*
+  ID_MODEL_FROM_DATABASE=ScanJet 6200c
+@@ -782,6 +788,9 @@ usb:v03F0p1517*
+ usb:v03F0p1524*
+  ID_MODEL_FROM_DATABASE=Smart Card Keyboard - KR
++usb:v03F0p1539*
++ ID_MODEL_FROM_DATABASE=Mini Magnetic Stripe Reader
++
+ usb:v03F0p1602*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 330 series
+@@ -893,6 +902,9 @@ usb:v03F0p1D02*
+ usb:v03F0p1D17*
+  ID_MODEL_FROM_DATABASE=LaserJet 1320
++usb:v03F0p1D24*
++ ID_MODEL_FROM_DATABASE=Barcode scanner
++
+ usb:v03F0p1E02*
+  ID_MODEL_FROM_DATABASE=PhotoSmart A320 Printer series
+@@ -935,6 +947,9 @@ usb:v03F0p2012*
+ usb:v03F0p201D*
+  ID_MODEL_FROM_DATABASE=un2400 Gobi Wireless Modem (QDL mode)
++usb:v03F0p2039*
++ ID_MODEL_FROM_DATABASE=Cashdrawer
++
+ usb:v03F0p2102*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 7345
+@@ -1008,7 +1023,7 @@ usb:v03F0p2505*
+  ID_MODEL_FROM_DATABASE=ScanJet 3770
+ usb:v03F0p2512*
+- ID_MODEL_FROM_DATABASE=OfficeJet Pro L7300
++ ID_MODEL_FROM_DATABASE=OfficeJet Pro L7300 / Compaq LA2405 series monitor
+ usb:v03F0p2514*
+  ID_MODEL_FROM_DATABASE=4-port hub
+@@ -1046,6 +1061,9 @@ usb:v03F0p2704*
+ usb:v03F0p2717*
+  ID_MODEL_FROM_DATABASE=Color LaserJet 2830
++usb:v03F0p2724*
++ ID_MODEL_FROM_DATABASE=Magnetic Stripe Reader IDRA-334133-HP
++
+ usb:v03F0p2811*
+  ID_MODEL_FROM_DATABASE=PSC-2100
+@@ -1424,6 +1442,9 @@ usb:v03F0p5817*
+ usb:v03F0p5911*
+  ID_MODEL_FROM_DATABASE=PhotoSmart C6180
++usb:v03F0p5912*
++ ID_MODEL_FROM_DATABASE=Officejet Pro 8600
++
+ usb:v03F0p5A11*
+  ID_MODEL_FROM_DATABASE=PhotoSmart C7100 series
+@@ -1532,6 +1553,9 @@ usb:v03F0p6B02*
+ usb:v03F0p6B11*
+  ID_MODEL_FROM_DATABASE=Photosmart C4500 series
++usb:v03F0p6C11*
++ ID_MODEL_FROM_DATABASE=Photosmart C4480
++
+ usb:v03F0p6C17*
+  ID_MODEL_FROM_DATABASE=Color LaserJet 4610
+@@ -1913,6 +1937,9 @@ usb:v03FC*
+ usb:v03FD*
+  ID_VENDOR_FROM_DATABASE=Xilinx, Inc.
++usb:v03FDp0008*
++ ID_MODEL_FROM_DATABASE=Platform Cable USB II
++
+ usb:v03FE*
+  ID_VENDOR_FROM_DATABASE=Farallon Comunications
+@@ -2012,6 +2039,9 @@ usb:v0403p0232*
+ usb:v0403p1060*
+  ID_MODEL_FROM_DATABASE=JTAG adapter
++usb:v0403p1234*
++ ID_MODEL_FROM_DATABASE=IronLogic RFID Adapter [Z-2 USB]
++
+ usb:v0403p6001*
+  ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
+@@ -2084,12 +2114,18 @@ usb:v0403p8B2B*
+ usb:v0403p8B2C*
+  ID_MODEL_FROM_DATABASE=Alpermann+Velte TCC70
++usb:v0403p9132*
++ ID_MODEL_FROM_DATABASE=LCD and Temperature Interface
++
+ usb:v0403p9133*
+  ID_MODEL_FROM_DATABASE=CallerID
+ usb:v0403p9135*
+  ID_MODEL_FROM_DATABASE=Rotary Pub alarm
++usb:v0403p9136*
++ ID_MODEL_FROM_DATABASE=Pulsecounter
++
+ usb:v0403p9E90*
+  ID_MODEL_FROM_DATABASE=Marvell OpenRD Base/Client
+@@ -2291,6 +2327,9 @@ usb:v0403pEF10*
+ usb:v0403pF070*
+  ID_MODEL_FROM_DATABASE=Serial Converter 422/485 [Vardaan VEUSB422R3]
++usb:v0403pF0E9*
++ ID_MODEL_FROM_DATABASE=Tagsys L-P101
++
+ usb:v0403pF1A0*
+  ID_MODEL_FROM_DATABASE=Asix PRESTO Programmer
+@@ -2999,6 +3038,9 @@ usb:v040Ap4021*
+ usb:v040Ap4022*
+  ID_MODEL_FROM_DATABASE=1400 Digital Photo Printer
++usb:v040Ap402B*
++ ID_MODEL_FROM_DATABASE=Photo Printer 6850
++
+ usb:v040Ap402E*
+  ID_MODEL_FROM_DATABASE=605 Photo Printer
+@@ -4379,6 +4421,9 @@ usb:v0424p7500*
+ usb:v0424p9512*
+  ID_MODEL_FROM_DATABASE=SMC9512/9514 USB Hub
++usb:v0424p9514*
++ ID_MODEL_FROM_DATABASE=SMC9514 Hub
++
+ usb:v0424pA700*
+  ID_MODEL_FROM_DATABASE=2 Port Hub
+@@ -5219,6 +5264,9 @@ usb:v0451p2046*
+ usb:v0451p2077*
+  ID_MODEL_FROM_DATABASE=TUSB2077 Hub
++usb:v0451p2F90*
++ ID_MODEL_FROM_DATABASE=SM-USB-DIG
++
+ usb:v0451p3410*
+  ID_MODEL_FROM_DATABASE=TUSB3410 Microcontroller
+@@ -5534,6 +5582,9 @@ usb:v0458p5003*
+ usb:v0458p5004*
+  ID_MODEL_FROM_DATABASE=G-pen Tablet
++usb:v0458p505E*
++ ID_MODEL_FROM_DATABASE=Genius iSlim 330
++
+ usb:v0458p6001*
+  ID_MODEL_FROM_DATABASE=GF3000F Ethernet Adapter
+@@ -5600,6 +5651,24 @@ usb:v0458p705A*
+ usb:v0458p705C*
+  ID_MODEL_FROM_DATABASE=Genius iSlim 1300AF
++usb:v0458p7061*
++ ID_MODEL_FROM_DATABASE=Genius iLook 1321 V2
++
++usb:v0458p7066*
++ ID_MODEL_FROM_DATABASE=Acer Crystal Eye Webcam
++
++usb:v0458p7067*
++ ID_MODEL_FROM_DATABASE=Genius iSlim 1300AF V2
++
++usb:v0458p7068*
++ ID_MODEL_FROM_DATABASE=Genius eFace 1325R
++
++usb:v0458p706D*
++ ID_MODEL_FROM_DATABASE=Genius iSlim 2000AF V2
++
++usb:v0458p7076*
++ ID_MODEL_FROM_DATABASE=Genius FaceCam 312
++
+ usb:v0458p7079*
+  ID_MODEL_FROM_DATABASE=FaceCam 2025R
+@@ -5609,6 +5678,12 @@ usb:v0458p707F*
+ usb:v0458p7088*
+  ID_MODEL_FROM_DATABASE=WideCam 1050
++usb:v0458p7089*
++ ID_MODEL_FROM_DATABASE=Genius FaceCam 320
++
++usb:v0458p708C*
++ ID_MODEL_FROM_DATABASE=Genius WideCam F100
++
+ usb:v0459*
+  ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc.
+@@ -6017,6 +6092,15 @@ usb:v045Ep02B0*
+ usb:v045Ep02B6*
+  ID_MODEL_FROM_DATABASE=Xbox 360 / Bluetooth Wireless Headset
++usb:v045Ep02BE*
++ ID_MODEL_FROM_DATABASE=Kinect for Windows NUI Audio
++
++usb:v045Ep02BF*
++ ID_MODEL_FROM_DATABASE=Kinect for Windows NUI Camera
++
++usb:v045Ep02C2*
++ ID_MODEL_FROM_DATABASE=Kinect for Windows NUI Motor
++
+ usb:v045Ep0400*
+  ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002
+@@ -6866,6 +6950,9 @@ usb:v046Dp0830*
+ usb:v046Dp0840*
+  ID_MODEL_FROM_DATABASE=QuickCam Express
++usb:v046Dp0843*
++ ID_MODEL_FROM_DATABASE=Webcam C930e
++
+ usb:v046Dp0850*
+  ID_MODEL_FROM_DATABASE=QuickCam Web
+@@ -7169,6 +7256,12 @@ usb:v046Dp0A1F*
+ usb:v046Dp0A29*
+  ID_MODEL_FROM_DATABASE=H600 [Wireless Headset]
++usb:v046Dp0A38*
++ ID_MODEL_FROM_DATABASE=Headset H340
++
++usb:v046Dp0A4D*
++ ID_MODEL_FROM_DATABASE=G430 Surround Sound Gaming Headset
++
+ usb:v046Dp0B02*
+  ID_MODEL_FROM_DATABASE=C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
+@@ -7650,7 +7743,7 @@ usb:v046DpC31B*
+  ID_MODEL_FROM_DATABASE=Compact Keyboard K300
+ usb:v046DpC31C*
+- ID_MODEL_FROM_DATABASE=Keyboard K120 for Business
++ ID_MODEL_FROM_DATABASE=Keyboard K120
+ usb:v046DpC31D*
+  ID_MODEL_FROM_DATABASE=Media Keyboard K200
+@@ -7751,6 +7844,9 @@ usb:v046DpC529*
+ usb:v046DpC52B*
+  ID_MODEL_FROM_DATABASE=Unifying Receiver
++usb:v046DpC52D*
++ ID_MODEL_FROM_DATABASE=R700 Remote Presenter receiver
++
+ usb:v046DpC52E*
+  ID_MODEL_FROM_DATABASE=MK260 Wireless Combo Receiver
+@@ -7760,6 +7856,18 @@ usb:v046DpC52F*
+ usb:v046DpC532*
+  ID_MODEL_FROM_DATABASE=Unifying Receiver
++usb:v046DpC603*
++ ID_MODEL_FROM_DATABASE=3Dconnexion Spacemouse Plus XT
++
++usb:v046DpC605*
++ ID_MODEL_FROM_DATABASE=3Dconnexion CADman
++
++usb:v046DpC606*
++ ID_MODEL_FROM_DATABASE=3Dconnexion Spacemouse Classic
++
++usb:v046DpC621*
++ ID_MODEL_FROM_DATABASE=3Dconnexion Spaceball 5000
++
+ usb:v046DpC623*
+  ID_MODEL_FROM_DATABASE=3Dconnexion Space Traveller 3D Mouse
+@@ -7772,9 +7880,18 @@ usb:v046DpC626*
+ usb:v046DpC627*
+  ID_MODEL_FROM_DATABASE=3Dconnexion Space Explorer 3D Mouse
++usb:v046DpC628*
++ ID_MODEL_FROM_DATABASE=3Dconnexion Space Navigator for Notebooks
++
+ usb:v046DpC629*
+  ID_MODEL_FROM_DATABASE=3Dconnexion SpacePilot Pro 3D Mouse
++usb:v046DpC62B*
++ ID_MODEL_FROM_DATABASE=3Dconnexion Space Mouse Pro
++
++usb:v046DpC640*
++ ID_MODEL_FROM_DATABASE=NuLOOQ navigator
++
+ usb:v046DpC702*
+  ID_MODEL_FROM_DATABASE=Cordless Presenter
+@@ -8609,6 +8726,9 @@ usb:v0480p0011*
+ usb:v0480p0014*
+  ID_MODEL_FROM_DATABASE=InTouch Module
++usb:v0480p0100*
++ ID_MODEL_FROM_DATABASE=Stor.E Slim USB 3.0
++
+ usb:v0480pA006*
+  ID_MODEL_FROM_DATABASE=External Disk 1.5TB
+@@ -10043,6 +10163,9 @@ usb:v04A9p2225*
+ usb:v04A9p2228*
+  ID_MODEL_FROM_DATABASE=CanoScan 4400F
++usb:v04A9p2229*
++ ID_MODEL_FROM_DATABASE=CanoScan 8600F
++
+ usb:v04A9p2602*
+  ID_MODEL_FROM_DATABASE=MultiPASS C555
+@@ -10988,6 +11111,9 @@ usb:v04A9p3233*
+ usb:v04A9p3234*
+  ID_MODEL_FROM_DATABASE=PowerShot SX150 IS
++usb:v04A9p3235*
++ ID_MODEL_FROM_DATABASE=PowerShot ELPH 510 HS / IXUS 1100 HS
++
+ usb:v04A9p3236*
+  ID_MODEL_FROM_DATABASE=PowerShot S100
+@@ -11057,12 +11183,18 @@ usb:v04A9p325B*
+ usb:v04A9p325C*
+  ID_MODEL_FROM_DATABASE=PowerShot SX500 IS
++usb:v04A9p325E*
++ ID_MODEL_FROM_DATABASE=PowerShot N
++
+ usb:v04A9p325F*
+  ID_MODEL_FROM_DATABASE=PowerShot SX280 HS
+ usb:v04A9p3260*
+  ID_MODEL_FROM_DATABASE=PowerShot SX270 HS
++usb:v04A9p3261*
++ ID_MODEL_FROM_DATABASE=PowerShot A3500 IS
++
+ usb:v04A9p3262*
+  ID_MODEL_FROM_DATABASE=PowerShot A2600
+@@ -11087,6 +11219,15 @@ usb:v04A9p3277*
+ usb:v04A9p327D*
+  ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132
++usb:v04A9p3288*
++ ID_MODEL_FROM_DATABASE=Powershot ELPH 135 / IXUS 145
++
++usb:v04A9p3289*
++ ID_MODEL_FROM_DATABASE=PowerShot ELPH 340 HS / IXUS 265 HS
++
++usb:v04A9p328A*
++ ID_MODEL_FROM_DATABASE=PowerShot ELPH 150 IS / IXUS 155
++
+ usb:v04AA*
+  ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd
+@@ -11471,6 +11612,9 @@ usb:v04B4p2050*
+ usb:v04B4p2830*
+  ID_MODEL_FROM_DATABASE=Opera1 DVB-S (cold state)
++usb:v04B4p4235*
++ ID_MODEL_FROM_DATABASE=Monitor 02 Driver
++
+ usb:v04B4p4381*
+  ID_MODEL_FROM_DATABASE=SCAPS USC-1 Scanner Controller
+@@ -12407,6 +12551,9 @@ usb:v04C5p10AE*
+ usb:v04C5p10AF*
+  ID_MODEL_FROM_DATABASE=fi-4220C2
++usb:v04C5p10C7*
++ ID_MODEL_FROM_DATABASE=fi-60f scanner
++
+ usb:v04C5p10E0*
+  ID_MODEL_FROM_DATABASE=fi-5120c Scanner
+@@ -12981,7 +13128,7 @@ usb:v04D9p2519*
+  ID_MODEL_FROM_DATABASE=Shenzhen LogoTech 2.4GHz receiver
+ usb:v04D9p2832*
+- ID_MODEL_FROM_DATABASE=1channel Telephone line recorder
++ ID_MODEL_FROM_DATABASE=HT82A832R Audio MCU
+ usb:v04D9p2834*
+  ID_MODEL_FROM_DATABASE=HT82A834R Audio MCU
+@@ -13070,6 +13217,9 @@ usb:v04DAp2374*
+ usb:v04DAp2451*
+  ID_MODEL_FROM_DATABASE=HDC-SD9
++usb:v04DAp245B*
++ ID_MODEL_FROM_DATABASE=HC-X920K (3MOS Full HD video camcorder)
++
+ usb:v04DAp2497*
+  ID_MODEL_FROM_DATABASE=HDC-TM700
+@@ -13535,6 +13685,9 @@ usb:v04E8p1006*
+ usb:v04E8p130C*
+  ID_MODEL_FROM_DATABASE=NX100
++usb:v04E8p1F05*
++ ID_MODEL_FROM_DATABASE=S2 Portable [JMicron] (500GB)
++
+ usb:v04E8p1F06*
+  ID_MODEL_FROM_DATABASE=HX-MU064DA portable harddisk
+@@ -13670,6 +13823,9 @@ usb:v04E8p3310*
+ usb:v04E8p3315*
+  ID_MODEL_FROM_DATABASE=ML-2540 Series Laser Printer
++usb:v04E8p331E*
++ ID_MODEL_FROM_DATABASE=M262x/M282x Xpress Series Laser Printer
++
+ usb:v04E8p3409*
+  ID_MODEL_FROM_DATABASE=SCX-4216F Scanner
+@@ -13718,6 +13874,9 @@ usb:v04E8p3420*
+ usb:v04E8p3426*
+  ID_MODEL_FROM_DATABASE=SCX-4500 Laser Printer
++usb:v04E8p342D*
++ ID_MODEL_FROM_DATABASE=SCX-4x28 Series
++
+ usb:v04E8p344F*
+  ID_MODEL_FROM_DATABASE=SCX-3400 Series
+@@ -14058,7 +14217,7 @@ usb:v04E8p685B*
+  ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (mass storage mode)
+ usb:v04E8p685C*
+- ID_MODEL_FROM_DATABASE=GT-I9250 Phone [Galaxy Nexus]
++ ID_MODEL_FROM_DATABASE=GT-I9250 Phone [Galaxy Nexus] (Mass storage mode)
+ usb:v04E8p685D*
+  ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (Download mode)
+@@ -14067,7 +14226,10 @@ usb:v04E8p685E*
+  ID_MODEL_FROM_DATABASE=GT-I9100 / GT-C3350 Phones (USB Debugging mode)
+ usb:v04E8p6860*
+- ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1]
++ ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1] , GT-I9500 [Galaxy S 4]
++
++usb:v04E8p6863*
++ ID_MODEL_FROM_DATABASE=GT-I9500 [Galaxy S4] / GT-I9250 [Galaxy Nexus] (network tethering)
+ usb:v04E8p6865*
+  ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (PTP mode)
+@@ -14075,6 +14237,9 @@ usb:v04E8p6865*
+ usb:v04E8p6866*
+  ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (debugging mode)
++usb:v04E8p6868*
++ ID_MODEL_FROM_DATABASE=Escape Composite driver for Android Phones: Modem+Diagnostic+ADB
++
+ usb:v04E8p6875*
+  ID_MODEL_FROM_DATABASE=GT-B3710 Standalone LTE device (Commercial)
+@@ -14342,6 +14507,12 @@ usb:v04F2pB057*
+ usb:v04F2pB059*
+  ID_MODEL_FROM_DATABASE=CKF7037 HP webcam
++usb:v04F2pB064*
++ ID_MODEL_FROM_DATABASE=CNA7137 Integrated Webcam
++
++usb:v04F2pB070*
++ ID_MODEL_FROM_DATABASE=Camera
++
+ usb:v04F2pB071*
+  ID_MODEL_FROM_DATABASE=2.0M UVC Webcam / CNF7129
+@@ -14411,6 +14582,9 @@ usb:v04F2pB2B0*
+ usb:v04F2pB2B9*
+  ID_MODEL_FROM_DATABASE=Lenovo Integrated Camera UVC
++usb:v04F2pB2DA*
++ ID_MODEL_FROM_DATABASE=thinkpad t430s camera
++
+ usb:v04F2pB2EA*
+  ID_MODEL_FROM_DATABASE=Integrated Camera [ThinkPad]
+@@ -14420,6 +14594,9 @@ usb:v04F2pB330*
+ usb:v04F2pB354*
+  ID_MODEL_FROM_DATABASE=UVC 1.00 device HD UVC WebCam
++usb:v04F2pB394*
++ ID_MODEL_FROM_DATABASE=Integrated Camera
++
+ usb:v04F3*
+  ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp.
+@@ -15038,6 +15215,9 @@ usb:v04F9p01EB*
+ usb:v04F9p01F4*
+  ID_MODEL_FROM_DATABASE=MFC-5890CN
++usb:v04F9p0217*
++ ID_MODEL_FROM_DATABASE=MFC-8480DN
++
+ usb:v04F9p0223*
+  ID_MODEL_FROM_DATABASE=DCP-365CN
+@@ -15158,9 +15338,15 @@ usb:v04FCp5331*
+ usb:v04FCp5360*
+  ID_MODEL_FROM_DATABASE=Sunplus Generic Digital Camera
++usb:v04FCp5563*
++ ID_MODEL_FROM_DATABASE=Digital Media Player MP3/WMA [The Sharper Image]
++
+ usb:v04FCp5720*
+  ID_MODEL_FROM_DATABASE=Card Reader Driver
++usb:v04FCp6333*
++ ID_MODEL_FROM_DATABASE=Siri A9 UVC chipset
++
+ usb:v04FCp7333*
+  ID_MODEL_FROM_DATABASE=Finet Technology Palmpix DC-85
+@@ -15239,6 +15425,18 @@ usb:v0502p3325*
+ usb:v0502p3341*
+  ID_MODEL_FROM_DATABASE=Iconia tablet A500
++usb:v0502p33C3*
++ ID_MODEL_FROM_DATABASE=Liquid Gallant Duo E350
++
++usb:v0502p33C4*
++ ID_MODEL_FROM_DATABASE=Liquid Gallant Duo E350 (debug mode)
++
++usb:v0502p33C7*
++ ID_MODEL_FROM_DATABASE=Liquid Gallant Duo E350 (USB tethering)
++
++usb:v0502p33C8*
++ ID_MODEL_FROM_DATABASE=Liquid Gallant Duo E350 (debug mode, USB tethering)
++
+ usb:v0502pD001*
+  ID_MODEL_FROM_DATABASE=Divio NW801/DVC-V6+ Digital Camera
+@@ -15446,6 +15644,9 @@ usb:v050Dp0416*
+ usb:v050Dp0551*
+  ID_MODEL_FROM_DATABASE=F6C550-AVR UPS
++usb:v050Dp065A*
++ ID_MODEL_FROM_DATABASE=F8T065BF Mini Bluetooth 4.0 Adapter
++
+ usb:v050Dp0706*
+  ID_MODEL_FROM_DATABASE=2-N-1 7-Port Hub (Lower half)
+@@ -15497,6 +15698,9 @@ usb:v050Dp2103*
+ usb:v050Dp21F1*
+  ID_MODEL_FROM_DATABASE=N300 WLAN N Adapter [ISY]
++usb:v050Dp21F2*
++ ID_MODEL_FROM_DATABASE=RTL8192CU 802.11n WLAN Adapter [ISY IWL 4000]
++
+ usb:v050Dp258A*
+  ID_MODEL_FROM_DATABASE=F5U258 Host to Host cable
+@@ -15728,6 +15932,9 @@ usb:v0525p1200*
+ usb:v0525p1265*
+  ID_MODEL_FROM_DATABASE=File-backed Storage Gadget
++usb:v0525p3424*
++ ID_MODEL_FROM_DATABASE=Lumidigm Venus fingerprint sensor
++
+ usb:v0525pA0F0*
+  ID_MODEL_FROM_DATABASE=Cambridge Electronic Devices Power1401 mk 2
+@@ -16655,6 +16862,9 @@ usb:v054Cp035B*
+ usb:v054Cp035C*
+  ID_MODEL_FROM_DATABASE=NWZ-A726/A728/A729
++usb:v054Cp035F*
++ ID_MODEL_FROM_DATABASE=UP-DR200 Photo Printer
++
+ usb:v054Cp0382*
+  ID_MODEL_FROM_DATABASE=Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1)
+@@ -16694,9 +16904,18 @@ usb:v054Cp0485*
+ usb:v054Cp04CB*
+  ID_MODEL_FROM_DATABASE=WALKMAN NWZ-E354
++usb:v054Cp0541*
++ ID_MODEL_FROM_DATABASE=DSC-HX100V [Cybershot Digital Still Camera]
++
++usb:v054Cp0689*
++ ID_MODEL_FROM_DATABASE=Walkman NWZ-B173F
++
+ usb:v054Cp06BB*
+  ID_MODEL_FROM_DATABASE=WALKMAN NWZ-F805
++usb:v054Cp088C*
++ ID_MODEL_FROM_DATABASE=Portable Headphone Amplifier
++
+ usb:v054Cp1000*
+  ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver
+@@ -16721,6 +16940,12 @@ usb:v0550p0004*
+ usb:v0550p0005*
+  ID_MODEL_FROM_DATABASE=InkJet Color Printer
++usb:v0550p000B*
++ ID_MODEL_FROM_DATABASE=Workcentre 24
++
++usb:v0550p014E*
++ ID_MODEL_FROM_DATABASE=CM215b Printer
++
+ usb:v0551*
+  ID_VENDOR_FROM_DATABASE=CompuTrend Systems, Inc.
+@@ -17306,6 +17531,9 @@ usb:v056Ap0069*
+ usb:v056Ap0081*
+  ID_MODEL_FROM_DATABASE=Graphire Wireless 6x8
++usb:v056Ap0084*
++ ID_MODEL_FROM_DATABASE=Wireless adapter for Bamboo tablets
++
+ usb:v056Ap0090*
+  ID_MODEL_FROM_DATABASE=TPC90
+@@ -17372,6 +17600,9 @@ usb:v056Ap00D1*
+ usb:v056Ap00D3*
+  ID_MODEL_FROM_DATABASE=Bamboo Fun (CTH-661)
++usb:v056Ap00D4*
++ ID_MODEL_FROM_DATABASE=Bamboo Pen (CTL-460)
++
+ usb:v056Ap00D6*
+  ID_MODEL_FROM_DATABASE=Bamboo Pen & Touch (CTH-460)
+@@ -17390,6 +17621,12 @@ usb:v056Ap00F6*
+ usb:v056Ap00F8*
+  ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) tablet
++usb:v056Ap0307*
++ ID_MODEL_FROM_DATABASE=Cintiq Companion Hybrid 13HD (DTH-A1300) tablet
++
++usb:v056Ap0309*
++ ID_MODEL_FROM_DATABASE=Cintiq Companion Hybrid 13HD (DTH-A1300) touchscreen
++
+ usb:v056Ap0400*
+  ID_MODEL_FROM_DATABASE=PenPartner 4x5
+@@ -18719,6 +18956,9 @@ usb:v0586p341E*
+ usb:v0586p341F*
+  ID_MODEL_FROM_DATABASE=NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU]
++usb:v0586p3425*
++ ID_MODEL_FROM_DATABASE=NWD6505 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U]
++
+ usb:v0586p343E*
+  ID_MODEL_FROM_DATABASE=N220 802.11bgn Wireless Adapter
+@@ -18737,9 +18977,15 @@ usb:v058A*
+ usb:v058B*
+  ID_VENDOR_FROM_DATABASE=Infineon Technologies
++usb:v058Bp0015*
++ ID_MODEL_FROM_DATABASE=Flash Loader utility
++
+ usb:v058Bp001C*
+  ID_MODEL_FROM_DATABASE=Flash Drive
++usb:v058Bp0041*
++ ID_MODEL_FROM_DATABASE=Flash Loader utility
++
+ usb:v058C*
+  ID_VENDOR_FROM_DATABASE=In Focus Systems
+@@ -18855,7 +19101,7 @@ usb:v058Fp6366*
+  ID_MODEL_FROM_DATABASE=Multi Flash Reader
+ usb:v058Fp6377*
+- ID_MODEL_FROM_DATABASE=Multimedia Card Reader
++ ID_MODEL_FROM_DATABASE=AU6375 4-LUN card reader
+ usb:v058Fp6386*
+  ID_MODEL_FROM_DATABASE=Memory Card
+@@ -18926,12 +19172,18 @@ usb:v058Fp9510*
+ usb:v058Fp9520*
+  ID_MODEL_FROM_DATABASE=EMV Certified Smart Card Reader
++usb:v058Fp9540*
++ ID_MODEL_FROM_DATABASE=AU9540 Smartcard Reader
++
+ usb:v058Fp9720*
+  ID_MODEL_FROM_DATABASE=USB-Serial Adapter
+ usb:v058FpA014*
+  ID_MODEL_FROM_DATABASE=Asus Integrated Webcam
++usb:v058FpB002*
++ ID_MODEL_FROM_DATABASE=Acer Integrated Webcam
++
+ usb:v0590*
+  ID_VENDOR_FROM_DATABASE=Omron Corp.
+@@ -18983,6 +19235,9 @@ usb:v0596p0002*
+ usb:v0596p0500*
+  ID_MODEL_FROM_DATABASE=PCT Multitouch HID Controller
++usb:v0596p0543*
++ ID_MODEL_FROM_DATABASE=DELL XPS touchscreen
++
+ usb:v0597*
+  ID_VENDOR_FROM_DATABASE=Trisignal Communications
+@@ -19055,6 +19310,9 @@ usb:v059Bp0061*
+ usb:v059Bp006D*
+  ID_MODEL_FROM_DATABASE=HipZip MP3 Player
++usb:v059Bp0070*
++ ID_MODEL_FROM_DATABASE=eGo Portable Hard Drive
++
+ usb:v059Bp007C*
+  ID_MODEL_FROM_DATABASE=Ultra Max USB/1394
+@@ -19163,9 +19421,15 @@ usb:v059Fp0323*
+ usb:v059Fp0421*
+  ID_MODEL_FROM_DATABASE=Big Disk G465
++usb:v059Fp0525*
++ ID_MODEL_FROM_DATABASE=BigDisk Extreme 500
++
+ usb:v059Fp0641*
+  ID_MODEL_FROM_DATABASE=Mobile Hard Drive
++usb:v059Fp0829*
++ ID_MODEL_FROM_DATABASE=BigDisk Extreme+
++
+ usb:v059Fp100C*
+  ID_MODEL_FROM_DATABASE=Rugged Triple Interface Mobile Hard Drive
+@@ -19190,6 +19454,9 @@ usb:v059Fp1049*
+ usb:v059Fp1052*
+  ID_MODEL_FROM_DATABASE=P'9220 Mobile Drive
++usb:v059Fp1064*
++ ID_MODEL_FROM_DATABASE=Rugged 16 and 32 GB
++
+ usb:v059FpA601*
+  ID_MODEL_FROM_DATABASE=HardDrive
+@@ -19464,7 +19731,7 @@ usb:v05ACp0225*
+  ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS)
+ usb:v05ACp0229*
+- ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (ANSI)
++ ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI)
+ usb:v05ACp022A*
+  ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (ISO)
+@@ -19545,7 +19812,7 @@ usb:v05ACp0302*
+  ID_MODEL_FROM_DATABASE=Optical Mouse [Fujitsu]
+ usb:v05ACp0304*
+- ID_MODEL_FROM_DATABASE=Optical USB Mouse [Mitsumi]
++ ID_MODEL_FROM_DATABASE=Mighty Mouse [Mitsumi, M1152]
+ usb:v05ACp0306*
+  ID_MODEL_FROM_DATABASE=Optical USB Mouse [Fujitsu]
+@@ -19577,6 +19844,9 @@ usb:v05ACp1003*
+ usb:v05ACp1006*
+  ID_MODEL_FROM_DATABASE=Hub in Aluminum Keyboard
++usb:v05ACp1008*
++ ID_MODEL_FROM_DATABASE=Mini DisplayPort to Dual-Link DVI Adapter
++
+ usb:v05ACp1101*
+  ID_MODEL_FROM_DATABASE=Speakers
+@@ -19670,6 +19940,9 @@ usb:v05ACp1265*
+ usb:v05ACp1266*
+  ID_MODEL_FROM_DATABASE=iPod Nano 6.Gen
++usb:v05ACp1267*
++ ID_MODEL_FROM_DATABASE=iPod Nano 7.Gen
++
+ usb:v05ACp1281*
+  ID_MODEL_FROM_DATABASE=Apple Mobile Device [Recovery Mode]
+@@ -19700,6 +19973,9 @@ usb:v05ACp1299*
+ usb:v05ACp129A*
+  ID_MODEL_FROM_DATABASE=iPad
++usb:v05ACp129C*
++ ID_MODEL_FROM_DATABASE=iPhone 4(CDMA)
++
+ usb:v05ACp129E*
+  ID_MODEL_FROM_DATABASE=iPod Touch 4.Gen
+@@ -19712,15 +19988,30 @@ usb:v05ACp12A0*
+ usb:v05ACp12A2*
+  ID_MODEL_FROM_DATABASE=iPad 2 (3G; 64GB)
++usb:v05ACp12A3*
++ ID_MODEL_FROM_DATABASE=iPad 2 (CDMA)
++
++usb:v05ACp12A4*
++ ID_MODEL_FROM_DATABASE=iPad 3 (wifi)
++
++usb:v05ACp12A5*
++ ID_MODEL_FROM_DATABASE=iPad 3 (CDMA)
++
+ usb:v05ACp12A6*
+  ID_MODEL_FROM_DATABASE=iPad 3 (3G, 16 GB)
++usb:v05ACp12A8*
++ ID_MODEL_FROM_DATABASE=iPhone5/5C/5S
++
+ usb:v05ACp12A9*
+  ID_MODEL_FROM_DATABASE=iPad 2
+ usb:v05ACp12AA*
+  ID_MODEL_FROM_DATABASE=iPod Touch 5.Gen [A1421]
++usb:v05ACp12AB*
++ ID_MODEL_FROM_DATABASE=iPad 4 (WiFi, 32GB)
++
+ usb:v05ACp1300*
+  ID_MODEL_FROM_DATABASE=iPod Shuffle
+@@ -19742,6 +20033,15 @@ usb:v05ACp1402*
+ usb:v05ACp1500*
+  ID_MODEL_FROM_DATABASE=SuperDrive [A1379]
++usb:v05ACp8005*
++ ID_MODEL_FROM_DATABASE=OHCI Root Hub Simulation
++
++usb:v05ACp8006*
++ ID_MODEL_FROM_DATABASE=EHCI Root Hub Simulation
++
++usb:v05ACp8007*
++ ID_MODEL_FROM_DATABASE=XHCI Root Hub USB 2.0 Simulation
++
+ usb:v05ACp8202*
+  ID_MODEL_FROM_DATABASE=HCF V.90 Data/Fax Modem
+@@ -19838,6 +20138,9 @@ usb:v05ACp8510*
+ usb:v05ACp911C*
+  ID_MODEL_FROM_DATABASE=Hub in A1082 [Cinema HD Display 23"]
++usb:v05ACp9127*
++ ID_MODEL_FROM_DATABASE=Hub in Thunderbolt Display
++
+ usb:v05ACp912F*
+  ID_MODEL_FROM_DATABASE=Hub in 30" Cinema Display
+@@ -20042,6 +20345,9 @@ usb:v05C6p9202*
+ usb:v05C6p9203*
+  ID_MODEL_FROM_DATABASE=Gobi Wireless Modem
++usb:v05C6p9205*
++ ID_MODEL_FROM_DATABASE=Gobi 2000
++
+ usb:v05C6p9211*
+  ID_MODEL_FROM_DATABASE=Acer Gobi Wireless Modem (QDL mode)
+@@ -20123,9 +20429,18 @@ usb:v05C8p021A*
+ usb:v05C8p0318*
+  ID_MODEL_FROM_DATABASE=Webcam
++usb:v05C8p0361*
++ ID_MODEL_FROM_DATABASE=SunplusIT INC. HP Truevision HD Webcam
++
++usb:v05C8p036E*
++ ID_MODEL_FROM_DATABASE=Webcam
++
+ usb:v05C8p0403*
+  ID_MODEL_FROM_DATABASE=Webcam
++usb:v05C8p041B*
++ ID_MODEL_FROM_DATABASE=HP 2.0MP High Definition Webcam
++
+ usb:v05C9*
+  ID_VENDOR_FROM_DATABASE=Semtech Corp.
+@@ -20861,6 +21176,9 @@ usb:v05DCp4D12*
+ usb:v05DCp4D30*
+  ID_MODEL_FROM_DATABASE=MP3 Player
++usb:v05DCpA209*
++ ID_MODEL_FROM_DATABASE=JumpDrive S70
++
+ usb:v05DCpA300*
+  ID_MODEL_FROM_DATABASE=JumpDrive2
+@@ -20921,6 +21239,9 @@ usb:v05DCpA701*
+ usb:v05DCpA731*
+  ID_MODEL_FROM_DATABASE=JumpDrive FireFly
++usb:v05DCpA768*
++ ID_MODEL_FROM_DATABASE=JumpDrive Retrax
++
+ usb:v05DCpA790*
+  ID_MODEL_FROM_DATABASE=JumpDrive 2GB
+@@ -20930,6 +21251,9 @@ usb:v05DCpA811*
+ usb:v05DCpA813*
+  ID_MODEL_FROM_DATABASE=16gB flash thumb drive
++usb:v05DCpA815*
++ ID_MODEL_FROM_DATABASE=JumpDrive V10
++
+ usb:v05DCpB002*
+  ID_MODEL_FROM_DATABASE=USB CF Reader
+@@ -20939,6 +21263,9 @@ usb:v05DCpB018*
+ usb:v05DCpB047*
+  ID_MODEL_FROM_DATABASE=SDHC Reader [RW047-7000]
++usb:v05DCpBA02*
++ ID_MODEL_FROM_DATABASE=Workflow CFR1
++
+ usb:v05DCpC753*
+  ID_MODEL_FROM_DATABASE=JumpDrive TwistTurn
+@@ -21084,7 +21411,7 @@ usb:v05E3p0607*
+  ID_MODEL_FROM_DATABASE=Logitech G110 Hub
+ usb:v05E3p0608*
+- ID_MODEL_FROM_DATABASE=USB-2.0 4-Port HUB
++ ID_MODEL_FROM_DATABASE=Hub
+ usb:v05E3p0610*
+  ID_MODEL_FROM_DATABASE=4-port hub
+@@ -21158,6 +21485,9 @@ usb:v05E3p0718*
+ usb:v05E3p0719*
+  ID_MODEL_FROM_DATABASE=SATA adapter
++usb:v05E3p0722*
++ ID_MODEL_FROM_DATABASE=SD/MMC card reader
++
+ usb:v05E3p0723*
+  ID_MODEL_FROM_DATABASE=GL827L SD/MMC/MS Flash Card Reader
+@@ -21170,9 +21500,18 @@ usb:v05E3p0727*
+ usb:v05E3p0731*
+  ID_MODEL_FROM_DATABASE=GL3310 SATA 3Gb/s Bridge Controller
++usb:v05E3p0732*
++ ID_MODEL_FROM_DATABASE=All-in-One Cardreader
++
+ usb:v05E3p0736*
+  ID_MODEL_FROM_DATABASE=microSD Reader/Writer
++usb:v05E3p0741*
++ ID_MODEL_FROM_DATABASE=microSD Card Reader
++
++usb:v05E3p0743*
++ ID_MODEL_FROM_DATABASE=SDXC and microSDXC CardReader
++
+ usb:v05E3p0760*
+  ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader/Writer
+@@ -21296,6 +21635,9 @@ usb:v05F3p0081*
+ usb:v05F3p00FF*
+  ID_MODEL_FROM_DATABASE=VEC Footpedal
++usb:v05F3p0203*
++ ID_MODEL_FROM_DATABASE=Y-mouse Keyboard & Mouse Adapter
++
+ usb:v05F3p020B*
+  ID_MODEL_FROM_DATABASE=PS2 Adapter
+@@ -21410,6 +21752,9 @@ usb:v05FEp0014*
+ usb:v05FEp1010*
+  ID_MODEL_FROM_DATABASE=Optical Wireless
++usb:v05FEp2001*
++ ID_MODEL_FROM_DATABASE=Microsoft Wireless Receiver 700
++
+ usb:v05FF*
+  ID_VENDOR_FROM_DATABASE=LeCroy Corp.
+@@ -21434,6 +21779,9 @@ usb:v0603*
+ usb:v0603p00F1*
+  ID_MODEL_FROM_DATABASE=Keyboard
++usb:v0603p00F2*
++ ID_MODEL_FROM_DATABASE=Keyboard (Labtec Ultra Flat Keyboard)
++
+ usb:v0603p6871*
+  ID_MODEL_FROM_DATABASE=Mouse
+@@ -21491,6 +21839,9 @@ usb:v060Bp2231*
+ usb:v060Bp2270*
+  ID_MODEL_FROM_DATABASE=Gigabyte K8100 Aivia Gaming Keyboard
++usb:v060Bp5253*
++ ID_MODEL_FROM_DATABASE=Thermaltake MEKA G-Unit Gaming Keyboard
++
+ usb:v060Bp5811*
+  ID_MODEL_FROM_DATABASE=ACK-571U Wireless Keyboard
+@@ -21911,6 +22262,9 @@ usb:v064EpA110*
+ usb:v064EpA114*
+  ID_MODEL_FROM_DATABASE=Lemote Webcam
++usb:v064EpA116*
++ ID_MODEL_FROM_DATABASE=UVC 1.3MPixel WebCam
++
+ usb:v064EpA136*
+  ID_MODEL_FROM_DATABASE=Asus Integrated Webcam [CN031B]
+@@ -22893,7 +23247,7 @@ usb:v068Ep00F4*
+  ID_MODEL_FROM_DATABASE=Combatstick
+ usb:v068Ep00FA*
+- ID_MODEL_FROM_DATABASE=Flight Sim Pedals
++ ID_MODEL_FROM_DATABASE=Ch Throttle Quadrant
+ usb:v068Ep00FF*
+  ID_MODEL_FROM_DATABASE=Flight Sim Yoke
+@@ -22955,6 +23309,9 @@ usb:v0698p9999*
+ usb:v0699*
+  ID_VENDOR_FROM_DATABASE=Tektronix, Inc.
++usb:v0699p0347*
++ ID_MODEL_FROM_DATABASE=AFG 3022B
++
+ usb:v069A*
+  ID_VENDOR_FROM_DATABASE=Askey Computer Corp.
+@@ -23486,6 +23843,9 @@ usb:v06C2*
+ usb:v06C2p0030*
+  ID_MODEL_FROM_DATABASE=PhidgetRFID
++usb:v06C2p0031*
++ ID_MODEL_FROM_DATABASE=RFID reader
++
+ usb:v06C2p0038*
+  ID_MODEL_FROM_DATABASE=4-Motor PhidgetServo v3.0
+@@ -23789,6 +24149,12 @@ usb:v06D3p0394*
+ usb:v06D3p03A1*
+  ID_MODEL_FROM_DATABASE=CP9550D/DW Port
++usb:v06D3p3B30*
++ ID_MODEL_FROM_DATABASE=CP-D70DW / CP-D707DW
++
++usb:v06D3p3B31*
++ ID_MODEL_FROM_DATABASE=CP-K60DW-S
++
+ usb:v06D4*
+  ID_VENDOR_FROM_DATABASE=Cisco Systems
+@@ -24575,6 +24941,9 @@ usb:v072Fp1000*
+ usb:v072Fp1001*
+  ID_MODEL_FROM_DATABASE=PLDT Drive
++usb:v072Fp2200*
++ ID_MODEL_FROM_DATABASE=ACR122U
++
+ usb:v072Fp8002*
+  ID_MODEL_FROM_DATABASE=AET63 BioTRUSTKey
+@@ -25046,6 +25415,12 @@ usb:v0765*
+ usb:v0765p5001*
+  ID_MODEL_FROM_DATABASE=Huey PRO Colorimeter
++usb:v0765p5020*
++ ID_MODEL_FROM_DATABASE=i1 Display Pro
++
++usb:v0765p6003*
++ ID_MODEL_FROM_DATABASE=ColorMunki Smile
++
+ usb:v0765pD094*
+  ID_MODEL_FROM_DATABASE=X-Rite DTP94 [Quato Silver Haze Pro]
+@@ -25325,12 +25700,24 @@ usb:v0781p5530*
+ usb:v0781p5567*
+  ID_MODEL_FROM_DATABASE=Cruzer Blade
++usb:v0781p556C*
++ ID_MODEL_FROM_DATABASE=Ultra
++
++usb:v0781p556D*
++ ID_MODEL_FROM_DATABASE=Memory Vault
++
+ usb:v0781p5571*
+  ID_MODEL_FROM_DATABASE=Cruzer Fit
++usb:v0781p5576*
++ ID_MODEL_FROM_DATABASE=Cruzer Facet
++
+ usb:v0781p5580*
+  ID_MODEL_FROM_DATABASE=SDCZ80 Flash Drive
++usb:v0781p5581*
++ ID_MODEL_FROM_DATABASE=Ultra
++
+ usb:v0781p5E10*
+  ID_MODEL_FROM_DATABASE=Encrypted
+@@ -25830,7 +26217,7 @@ usb:v07AAp001A*
+  ID_MODEL_FROM_DATABASE=ULUSB-11 Key
+ usb:v07AAp001C*
+- ID_MODEL_FROM_DATABASE=CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887]
++ ID_MODEL_FROM_DATABASE=CG-WLUSB2GT 802.11g Wireless Adapter [Intersil ISL3880]
+ usb:v07AAp002E*
+  ID_MODEL_FROM_DATABASE=CG-WLUSB2GPX [Ralink RT2571W]
+@@ -26114,6 +26501,9 @@ usb:v07B4p0114*
+ usb:v07B4p0118*
+  ID_MODEL_FROM_DATABASE=Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW
++usb:v07B4p0125*
++ ID_MODEL_FROM_DATABASE=Tough TG-1 Camera
++
+ usb:v07B4p0184*
+  ID_MODEL_FROM_DATABASE=P-S100 port
+@@ -26441,6 +26831,9 @@ usb:v07C4pA400*
+ usb:v07C4pA600*
+  ID_MODEL_FROM_DATABASE=Card Reader
++usb:v07C4pA604*
++ ID_MODEL_FROM_DATABASE=12-in-1 Card Reader
++
+ usb:v07C4pAD01*
+  ID_MODEL_FROM_DATABASE=Mass Storage Device
+@@ -26474,6 +26867,9 @@ usb:v07C4pC010*
+ usb:v07C5*
+  ID_VENDOR_FROM_DATABASE=APG Cash Drawer
++usb:v07C5p0500*
++ ID_MODEL_FROM_DATABASE=Cash Drawer
++
+ usb:v07C6*
+  ID_VENDOR_FROM_DATABASE=ShareWave, Inc.
+@@ -27140,6 +27536,9 @@ usb:v0803*
+ usb:v0803p1300*
+  ID_MODEL_FROM_DATABASE=V92 Faxmodem
++usb:v0803p3095*
++ ID_MODEL_FROM_DATABASE=V.92 56K Mini External Modem Model 3095
++
+ usb:v0803p4310*
+  ID_MODEL_FROM_DATABASE=4410a Wireless-G Adapter [Intersil ISL3887]
+@@ -27713,6 +28112,9 @@ usb:v0846p9018*
+ usb:v0846p9020*
+  ID_MODEL_FROM_DATABASE=WNA3100(v1) Wireless-N 300 [Broadcom BCM43231]
++usb:v0846p9021*
++ ID_MODEL_FROM_DATABASE=WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU]
++
+ usb:v0846p9030*
+  ID_MODEL_FROM_DATABASE=WNA1100 Wireless-N 150 [Atheros AR9271]
+@@ -27722,9 +28124,21 @@ usb:v0846p9040*
+ usb:v0846p9041*
+  ID_MODEL_FROM_DATABASE=WNA1000M 802.11bgn [Realtek RTL8188CUS]
++usb:v0846p9042*
++ ID_MODEL_FROM_DATABASE=On Networks N150MA 802.11bgn [Realtek RTL8188CUS]
++
++usb:v0846p9050*
++ ID_MODEL_FROM_DATABASE=A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
++
++usb:v0846p9052*
++ ID_MODEL_FROM_DATABASE=A6100 AC600 DB Wireless Adapter [Realtek RTL8811AU]
++
+ usb:v0846pA001*
+  ID_MODEL_FROM_DATABASE=PA101 10 Mbps HPNA Home Phoneline RJ-1
++usb:v0846pF001*
++ ID_MODEL_FROM_DATABASE=On Networks N300MA 802.11bgn [Realtek RTL8192CU]
++
+ usb:v084D*
+  ID_VENDOR_FROM_DATABASE=Minton Optic Industry Co., Inc.
+@@ -27875,8 +28289,17 @@ usb:v085Ap8027*
+ usb:v085C*
+  ID_VENDOR_FROM_DATABASE=ColorVision, Inc.
++usb:v085Cp0100*
++ ID_MODEL_FROM_DATABASE=Spyder 1
++
+ usb:v085Cp0200*
+- ID_MODEL_FROM_DATABASE=Monitor Spyder
++ ID_MODEL_FROM_DATABASE=Spyder 2
++
++usb:v085Cp0300*
++ ID_MODEL_FROM_DATABASE=Spyder 3
++
++usb:v085Cp0400*
++ ID_MODEL_FROM_DATABASE=Spyder 4
+ usb:v0862*
+  ID_VENDOR_FROM_DATABASE=Teletrol Systems, Inc.
+@@ -28127,6 +28550,12 @@ usb:v0892*
+ usb:v0892p0101*
+  ID_MODEL_FROM_DATABASE=Smartdio Reader/Writer
++usb:v0894*
++ ID_VENDOR_FROM_DATABASE=TSI Incorporated
++
++usb:v0894p0010*
++ ID_MODEL_FROM_DATABASE=Remote NDIS Network Device
++
+ usb:v0897*
+  ID_VENDOR_FROM_DATABASE=Lauterbach
+@@ -28181,6 +28610,18 @@ usb:v08A9p0015*
+ usb:v08AE*
+  ID_VENDOR_FROM_DATABASE=Macally (Mace Group, Inc.)
++usb:v08B0*
++ ID_VENDOR_FROM_DATABASE=Metrohm
++
++usb:v08B0p0006*
++ ID_MODEL_FROM_DATABASE=814 Sample Processor
++
++usb:v08B0p0015*
++ ID_MODEL_FROM_DATABASE=857 Titrando
++
++usb:v08B0p001A*
++ ID_MODEL_FROM_DATABASE=852 Titrando
++
+ usb:v08B4*
+  ID_VENDOR_FROM_DATABASE=Sorenson Vision, Inc.
+@@ -29036,6 +29477,12 @@ usb:v0906*
+ usb:v0908*
+  ID_VENDOR_FROM_DATABASE=Siemens AG
++usb:v0908p01F4*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5711
++
++usb:v0908p01FE*
++ ID_MODEL_FROM_DATABASE=SIMATIC NET PC Adapter A2
++
+ usb:v0908p2701*
+  ID_MODEL_FROM_DATABASE=ShenZhen SANZHAI Technology Co.,Ltd Spy Pen VGA
+@@ -29285,12 +29732,18 @@ usb:v091Ep23CC*
+ usb:v091Ep2459*
+  ID_MODEL_FROM_DATABASE=GPSmap 62/78 series
++usb:v091Ep2491*
++ ID_MODEL_FROM_DATABASE=Edge 800
++
+ usb:v091Ep2519*
+  ID_MODEL_FROM_DATABASE=eTrex 30
+ usb:v091Ep2535*
+  ID_MODEL_FROM_DATABASE=Edge 800
++usb:v091Ep253C*
++ ID_MODEL_FROM_DATABASE=GPSmap 62sc
++
+ usb:v091Ep255B*
+  ID_MODEL_FROM_DATABASE=Nuvi 2505LM
+@@ -29315,12 +29768,18 @@ usb:v0922p0007*
+ usb:v0922p0009*
+  ID_MODEL_FROM_DATABASE=LabelWriter 310
++usb:v0922p0019*
++ ID_MODEL_FROM_DATABASE=LabelWriter 400
++
+ usb:v0922p001A*
+  ID_MODEL_FROM_DATABASE=LabelWriter 400 Turbo
+ usb:v0922p0020*
+  ID_MODEL_FROM_DATABASE=LabelWriter 450
++usb:v0922p1001*
++ ID_MODEL_FROM_DATABASE=LabelManager PnP
++
+ usb:v0923*
+  ID_VENDOR_FROM_DATABASE=IC Media Corp.
+@@ -29363,6 +29822,9 @@ usb:v0925*
+ usb:v0925p0005*
+  ID_MODEL_FROM_DATABASE=Gamtec.,Ltd SmartJoy PLUS Adapter
++usb:v0925p03E8*
++ ID_MODEL_FROM_DATABASE=Wii Classic Controller Adapter
++
+ usb:v0925p3881*
+  ID_MODEL_FROM_DATABASE=Saleae Logic
+@@ -29417,6 +29879,9 @@ usb:v0930p000C*
+ usb:v0930p0010*
+  ID_MODEL_FROM_DATABASE=Gigabeat S (mtp)
++usb:v0930p0200*
++ ID_MODEL_FROM_DATABASE=Integrated Bluetooth (Taiyo Yuden)
++
+ usb:v0930p0301*
+  ID_MODEL_FROM_DATABASE=PCX1100U Cable Modem (WDM)
+@@ -29483,6 +29948,9 @@ usb:v0930p070B*
+ usb:v0930p0A07*
+  ID_MODEL_FROM_DATABASE=WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572]
++usb:v0930p0A13*
++ ID_MODEL_FROM_DATABASE=AX88179 Gigabit Ethernet [Toshiba]
++
+ usb:v0930p0B05*
+  ID_MODEL_FROM_DATABASE=PX1220E-1G25 External hard drive
+@@ -29691,7 +30159,7 @@ usb:v0939*
+  ID_VENDOR_FROM_DATABASE=Lumberg, Inc.
+ usb:v0939p0B15*
+- ID_MODEL_FROM_DATABASE=Toshiba Stor.E Alu 2 1TB (PX1710E-1HJ0)
++ ID_MODEL_FROM_DATABASE=Toshiba Stor.E Alu 2
+ usb:v093A*
+  ID_VENDOR_FROM_DATABASE=Pixart Imaging, Inc.
+@@ -29753,6 +30221,9 @@ usb:v093Ap260F*
+ usb:v093Ap2621*
+  ID_MODEL_FROM_DATABASE=PAC731x Trust Webcam
++usb:v093Ap2622*
++ ID_MODEL_FROM_DATABASE=Webcam Genius
++
+ usb:v093Ap2624*
+  ID_MODEL_FROM_DATABASE=Webcam
+@@ -29951,6 +30422,9 @@ usb:v0951p1653*
+ usb:v0951p1656*
+  ID_MODEL_FROM_DATABASE=DataTraveler Ultimate G2
++usb:v0951p1665*
++ ID_MODEL_FROM_DATABASE=Digital DataTraveler SE9 64GB
++
+ usb:v0951p1689*
+  ID_MODEL_FROM_DATABASE=DataTraveler SE9
+@@ -29993,6 +30467,9 @@ usb:v0957p0200*
+ usb:v0957p0202*
+  ID_MODEL_FROM_DATABASE=E-Video DC-350 Camera
++usb:v0957p0407*
++ ID_MODEL_FROM_DATABASE=33220A Waveform Generator
++
+ usb:v0957p0518*
+  ID_MODEL_FROM_DATABASE=82357B GPIB Interface
+@@ -30033,7 +30510,7 @@ usb:v095Dp0001*
+  ID_MODEL_FROM_DATABASE=Polycom ViaVideo
+ usb:v0967*
+- ID_VENDOR_FROM_DATABASE=Acer (??)
++ ID_VENDOR_FROM_DATABASE=Acer NeWeb Corp.
+ usb:v0967p0204*
+  ID_MODEL_FROM_DATABASE=WarpLink 802.11b Adapter
+@@ -30056,6 +30533,12 @@ usb:v096Ep0807*
+ usb:v0971*
+  ID_VENDOR_FROM_DATABASE=Gretag-Macbeth AG
++usb:v0971p2000*
++ ID_MODEL_FROM_DATABASE=i1 Pro
++
++usb:v0971p2001*
++ ID_MODEL_FROM_DATABASE=i1 Monitor
++
+ usb:v0971p2003*
+  ID_MODEL_FROM_DATABASE=Eye-One display
+@@ -30063,7 +30546,7 @@ usb:v0971p2005*
+  ID_MODEL_FROM_DATABASE=Huey
+ usb:v0971p2007*
+- ID_MODEL_FROM_DATABASE=ColorMunki
++ ID_MODEL_FROM_DATABASE=ColorMunki Photo
+ usb:v0973*
+  ID_VENDOR_FROM_DATABASE=Schlumberger
+@@ -30182,6 +30665,9 @@ usb:v099Ap0638*
+ usb:v099Ap610C*
+  ID_MODEL_FROM_DATABASE=EL-610 Super Mini Electron luminescent Keyboard
++usb:v099Ap713A*
++ ID_MODEL_FROM_DATABASE=WK-713 Multimedia Keyboard
++
+ usb:v099Ap7160*
+  ID_MODEL_FROM_DATABASE=Hyper Slim Keyboard
+@@ -30375,7 +30861,10 @@ usb:v09D3*
+  ID_VENDOR_FROM_DATABASE=Com One
+ usb:v09D3p0001*
+- ID_MODEL_FROM_DATABASE=ISDN TA
++ ID_MODEL_FROM_DATABASE=ISDN TA / Light Rider 128K
++
++usb:v09D3p000B*
++ ID_MODEL_FROM_DATABASE=Bluetooth Adapter class 1 [BlueLight]
+ usb:v09D7*
+  ID_VENDOR_FROM_DATABASE=Novatel Wireless
+@@ -30596,6 +31085,12 @@ usb:v0A07p00DA*
+ usb:v0A0B*
+  ID_VENDOR_FROM_DATABASE=Cybex Computer Products Co.
++usb:v0A0D*
++ ID_VENDOR_FROM_DATABASE=Servergy, Inc
++
++usb:v0A0Dp2514*
++ ID_MODEL_FROM_DATABASE=CTS-1000 Internal Hub
++
+ usb:v0A11*
+  ID_VENDOR_FROM_DATABASE=Xentec, Inc.
+@@ -30887,6 +31382,9 @@ usb:v0A48p5024*
+ usb:v0A48p5025*
+  ID_MODEL_FROM_DATABASE=Mass Storage Device
++usb:v0A4A*
++ ID_VENDOR_FROM_DATABASE=Ploytec GmbH
++
+ usb:v0A4B*
+  ID_VENDOR_FROM_DATABASE=Fujitsu Media Devices, Ltd
+@@ -31217,6 +31715,9 @@ usb:v0A5CpBD11*
+ usb:v0A5CpBD13*
+  ID_MODEL_FROM_DATABASE=BCM4323 802.11abgn Wireless Adapter
++usb:v0A5CpBD16*
++ ID_MODEL_FROM_DATABASE=BCM4319 802.11bgn Wireless Adapter
++
+ usb:v0A5CpBD17*
+  ID_MODEL_FROM_DATABASE=BCM43236 802.11abgn Wireless Adapter
+@@ -31775,6 +32276,9 @@ usb:v0AC8pC33F*
+ usb:v0AC8pC429*
+  ID_MODEL_FROM_DATABASE=Lenovo ThinkCentre Web Camera
++usb:v0AC8pC42D*
++ ID_MODEL_FROM_DATABASE=Lenovo IdeaCentre Web Camera
++
+ usb:v0AC9*
+  ID_VENDOR_FROM_DATABASE=Micro Solutions, Inc.
+@@ -31823,6 +32327,9 @@ usb:v0ACDp0630*
+ usb:v0ACDp0810*
+  ID_MODEL_FROM_DATABASE=SecurePIN (IDPA-506100Y) PIN Pad
++usb:v0ACDp2030*
++ ID_MODEL_FROM_DATABASE=ValueMag Magnetic Stripe Reader
++
+ usb:v0ACE*
+  ID_VENDOR_FROM_DATABASE=ZyDAS
+@@ -32024,6 +32531,12 @@ usb:v0AF9p0010*
+ usb:v0AF9p0011*
+  ID_MODEL_FROM_DATABASE=Micro Innovations IC50C Webcam
++usb:v0AFA*
++ ID_VENDOR_FROM_DATABASE=DMC Co., Ltd.
++
++usb:v0AFAp07D2*
++ ID_MODEL_FROM_DATABASE=Controller Board for Projected Capacitive Touch Screen DUS3000
++
+ usb:v0AFC*
+  ID_VENDOR_FROM_DATABASE=Zaptronix Ltd
+@@ -32042,6 +32555,9 @@ usb:v0B00*
+ usb:v0B05*
+  ID_VENDOR_FROM_DATABASE=ASUSTek Computer, Inc.
++usb:v0B05p0001*
++ ID_MODEL_FROM_DATABASE=MeMO Pad HD 7 (CD-ROM mode)
++
+ usb:v0B05p1101*
+  ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC4S)
+@@ -32147,6 +32663,9 @@ usb:v0B05p1784*
+ usb:v0B05p1786*
+  ID_MODEL_FROM_DATABASE=USB-N10 802.11n Network Adapter [Realtek RTL8188SU]
++usb:v0B05p1788*
++ ID_MODEL_FROM_DATABASE=BT-270 Bluetooth Adapter
++
+ usb:v0B05p1791*
+  ID_MODEL_FROM_DATABASE=WL-167G v3 802.11n Adapter [Realtek RTL8188SU]
+@@ -32159,12 +32678,18 @@ usb:v0B05p179E*
+ usb:v0B05p179F*
+  ID_MODEL_FROM_DATABASE=Eee Note EA800 (tablet mode)
++usb:v0B05p17A0*
++ ID_MODEL_FROM_DATABASE=Xonar U3 sound card
++
+ usb:v0B05p17A1*
+  ID_MODEL_FROM_DATABASE=Eee Note EA800 (mass storage mode)
+ usb:v0B05p17AB*
+  ID_MODEL_FROM_DATABASE=USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU]
++usb:v0B05p17C9*
++ ID_MODEL_FROM_DATABASE=USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
++
+ usb:v0B05p4C80*
+  ID_MODEL_FROM_DATABASE=Transformer Pad TF300TG
+@@ -32183,6 +32708,12 @@ usb:v0B05p4D01*
+ usb:v0B05p4DAF*
+  ID_MODEL_FROM_DATABASE=Transformer Pad Infinity TF700 (Fastboot)
++usb:v0B05p5410*
++ ID_MODEL_FROM_DATABASE=MeMO Pad HD 7 (MTP mode)
++
++usb:v0B05p5412*
++ ID_MODEL_FROM_DATABASE=MeMO Pad HD 7 (PTP mode)
++
+ usb:v0B05p6101*
+  ID_MODEL_FROM_DATABASE=Cable Modem
+@@ -32228,9 +32759,15 @@ usb:v0B0E*
+ usb:v0B0Ep0420*
+  ID_MODEL_FROM_DATABASE=Jabra SPEAK 510
++usb:v0B0Ep094D*
++ ID_MODEL_FROM_DATABASE=GN Netcom / Jabra REVO Wireless
++
+ usb:v0B0Ep1022*
+  ID_MODEL_FROM_DATABASE=Jabra PRO 9450, Type 9400BS (DECT Headset)
++usb:v0B0Ep2007*
++ ID_MODEL_FROM_DATABASE=GN 2000 Stereo Corded Headset
++
+ usb:v0B0Ep620C*
+  ID_MODEL_FROM_DATABASE=Jabra BT620s
+@@ -32291,6 +32828,9 @@ usb:v0B33*
+ usb:v0B33p0020*
+  ID_MODEL_FROM_DATABASE=ShuttleXpress
++usb:v0B33p0700*
++ ID_MODEL_FROM_DATABASE=RollerMouse Pro
++
+ usb:v0B37*
+  ID_VENDOR_FROM_DATABASE=Hitachi ULSI Systems Co., Ltd
+@@ -32687,6 +33227,9 @@ usb:v0B95p1720*
+ usb:v0B95p1780*
+  ID_MODEL_FROM_DATABASE=AX88178
++usb:v0B95p1790*
++ ID_MODEL_FROM_DATABASE=AX88179 Gigabit Ethernet
++
+ usb:v0B95p7720*
+  ID_MODEL_FROM_DATABASE=AX88772
+@@ -32786,6 +33329,9 @@ usb:v0BAFp011B*
+ usb:v0BAFp0121*
+  ID_MODEL_FROM_DATABASE=USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B]
++usb:v0BAFp0303*
++ ID_MODEL_FROM_DATABASE=USR5637 56K Faxmodem
++
+ usb:v0BAFp6112*
+  ID_MODEL_FROM_DATABASE=FaxModem Model 5633
+@@ -33332,6 +33878,9 @@ usb:v0BB4p0C01*
+ usb:v0BB4p0C02*
+  ID_MODEL_FROM_DATABASE=Dream / ADP1 / G1 / Magic / Tattoo (Debug)
++usb:v0BB4p0C03*
++ ID_MODEL_FROM_DATABASE=Android Phone [Fairphone First Edition (FP1)]
++
+ usb:v0BB4p0C13*
+  ID_MODEL_FROM_DATABASE=Diamond
+@@ -33371,6 +33920,12 @@ usb:v0BB4p0CA2*
+ usb:v0BB4p0CA5*
+  ID_MODEL_FROM_DATABASE=Android Phone [Evo Shift 4G]
++usb:v0BB4p0CAE*
++ ID_MODEL_FROM_DATABASE=T-Mobile MyTouch 4G Slide [Doubleshot]
++
++usb:v0BB4p0DEA*
++ ID_MODEL_FROM_DATABASE=M7_UL [HTC One]
++
+ usb:v0BB4p0FF8*
+  ID_MODEL_FROM_DATABASE=Desire HD (Tethering Mode)
+@@ -33443,18 +33998,33 @@ usb:v0BC2p2320*
+ usb:v0BC2p3008*
+  ID_MODEL_FROM_DATABASE=FreeAgent Desk 1TB
++usb:v0BC2p3101*
++ ID_MODEL_FROM_DATABASE=FreeAgent XTreme 640GB
++
++usb:v0BC2p3312*
++ ID_MODEL_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive 2TB]
++
+ usb:v0BC2p3320*
+  ID_MODEL_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive]
+ usb:v0BC2p3332*
+  ID_MODEL_FROM_DATABASE=Expansion
++usb:v0BC2p5020*
++ ID_MODEL_FROM_DATABASE=FreeAgent GoFlex
++
+ usb:v0BC2p5021*
+  ID_MODEL_FROM_DATABASE=FreeAgent GoFlex USB 2.0
++usb:v0BC2p5030*
++ ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Upgrade Cable STAE104
++
+ usb:v0BC2p5031*
+  ID_MODEL_FROM_DATABASE=FreeAgent GoFlex USB 3.0
++usb:v0BC2p5070*
++ ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk
++
+ usb:v0BC2p50A1*
+  ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk
+@@ -33476,6 +34046,9 @@ usb:v0BC2pA0A1*
+ usb:v0BC2pA0A4*
+  ID_MODEL_FROM_DATABASE=Backup Plus Desktop Drive
++usb:v0BC2pAB00*
++ ID_MODEL_FROM_DATABASE=Slim Portable Drive
++
+ usb:v0BC3*
+  ID_VENDOR_FROM_DATABASE=IPWireless, Inc.
+@@ -33650,6 +34223,12 @@ usb:v0BDAp0184*
+ usb:v0BDAp0186*
+  ID_MODEL_FROM_DATABASE=Card Reader
++usb:v0BDAp0301*
++ ID_MODEL_FROM_DATABASE=multicard reader
++
++usb:v0BDAp1724*
++ ID_MODEL_FROM_DATABASE=RTL8723AU 802.11n WLAN Adapter
++
+ usb:v0BDAp2831*
+  ID_MODEL_FROM_DATABASE=RTL2831U DVB-T
+@@ -33707,6 +34286,9 @@ usb:v0BDAp8198*
+ usb:v0BDAp8199*
+  ID_MODEL_FROM_DATABASE=RTL8187SU 802.11g WLAN Adapter
++usb:v0BDAp8812*
++ ID_MODEL_FROM_DATABASE=RTL8812AU 802.11a/b/g/n/ac WLAN Adapter
++
+ usb:v0BDB*
+  ID_VENDOR_FROM_DATABASE=Ericsson Business Mobile Networks BV
+@@ -34038,7 +34620,7 @@ usb:v0C24p0019*
+  ID_MODEL_FROM_DATABASE=Bluetooth Device
+ usb:v0C24p0021*
+- ID_MODEL_FROM_DATABASE=Bluetooth Device
++ ID_MODEL_FROM_DATABASE=Bluetooth Device (V2.1+EDR)
+ usb:v0C24p0C24*
+  ID_MODEL_FROM_DATABASE=Bluetooth Device(SAMPLE)
+@@ -34142,6 +34724,9 @@ usb:v0C45*
+ usb:v0C45p0011*
+  ID_MODEL_FROM_DATABASE=EBUDDY
++usb:v0C45p0520*
++ ID_MODEL_FROM_DATABASE=MaxTrack Wireless Mouse
++
+ usb:v0C45p1018*
+  ID_MODEL_FROM_DATABASE=Compact Flash storage memory card reader
+@@ -34496,9 +35081,15 @@ usb:v0C45p62C0*
+ usb:v0C45p62E0*
+  ID_MODEL_FROM_DATABASE=MSI Starcam Racer
++usb:v0C45p6300*
++ ID_MODEL_FROM_DATABASE=PC Microscope camera
++
+ usb:v0C45p6310*
+  ID_MODEL_FROM_DATABASE=Sonix USB 2.0 Camera
++usb:v0C45p6340*
++ ID_MODEL_FROM_DATABASE=Camera
++
+ usb:v0C45p6341*
+  ID_MODEL_FROM_DATABASE=Defender G-Lens 2577 HD720p Camera
+@@ -34526,6 +35117,12 @@ usb:v0C45p6419*
+ usb:v0C45p641D*
+  ID_MODEL_FROM_DATABASE=1.3 MPixel Integrated Webcam
++usb:v0C45p643F*
++ ID_MODEL_FROM_DATABASE=Dell Integrated HD Webcam
++
++usb:v0C45p644D*
++ ID_MODEL_FROM_DATABASE=1.3 MPixel Integrated Webcam
++
+ usb:v0C45p6480*
+  ID_MODEL_FROM_DATABASE=Sonix 1.3 MP Laptop Integrated Webcam
+@@ -34535,6 +35132,9 @@ usb:v0C45p648B*
+ usb:v0C45p64BD*
+  ID_MODEL_FROM_DATABASE=Sony Visual Communication Camera
++usb:v0C45p7401*
++ ID_MODEL_FROM_DATABASE=TEMPer Temperature Sensor
++
+ usb:v0C45p7402*
+  ID_MODEL_FROM_DATABASE=TEMPerHUM Temperature & Humidity Sensor
+@@ -35390,6 +35990,9 @@ usb:v0CF3p3000*
+ usb:v0CF3p3002*
+  ID_MODEL_FROM_DATABASE=AR3011 Bluetooth
++usb:v0CF3p3004*
++ ID_MODEL_FROM_DATABASE=AR3012 Bluetooth 4.0
++
+ usb:v0CF3p3005*
+  ID_MODEL_FROM_DATABASE=AR3011 Bluetooth
+@@ -35564,6 +36167,15 @@ usb:v0D35*
+ usb:v0D3A*
+  ID_VENDOR_FROM_DATABASE=Posiflex Technologies, Inc.
++usb:v0D3Ap0206*
++ ID_MODEL_FROM_DATABASE=Series 3xxx Cash Drawer
++
++usb:v0D3Ap0207*
++ ID_MODEL_FROM_DATABASE=Series 3xxx Cash Drawer
++
++usb:v0D3Ap0500*
++ ID_MODEL_FROM_DATABASE=Magnetic Stripe Reader
++
+ usb:v0D3C*
+  ID_VENDOR_FROM_DATABASE=Sri Cable Technology, Ltd
+@@ -35573,6 +36185,9 @@ usb:v0D3D*
+ usb:v0D3Dp0001*
+  ID_MODEL_FROM_DATABASE=HID Keyboard
++usb:v0D3Dp0040*
++ ID_MODEL_FROM_DATABASE=PS/2 Adapter
++
+ usb:v0D3E*
+  ID_VENDOR_FROM_DATABASE=Fitcom, inc.
+@@ -35651,6 +36266,9 @@ usb:v0D49p7010*
+ usb:v0D49p7100*
+  ID_MODEL_FROM_DATABASE=OneTouch II 300GB External Hard Disk
++usb:v0D49p7310*
++ ID_MODEL_FROM_DATABASE=OneTouch 4
++
+ usb:v0D49p7410*
+  ID_MODEL_FROM_DATABASE=Mobile Hard Disk Drive (1TB)
+@@ -35858,6 +36476,9 @@ usb:v0D78*
+ usb:v0D7A*
+  ID_VENDOR_FROM_DATABASE=MARX Datentechnik GmbH
++usb:v0D7Ap0001*
++ ID_MODEL_FROM_DATABASE=CrypToken
++
+ usb:v0D7B*
+  ID_VENDOR_FROM_DATABASE=Wellco Technology Co., Ltd
+@@ -36404,6 +37025,12 @@ usb:v0DB7*
+ usb:v0DB7p0002*
+  ID_MODEL_FROM_DATABASE=Goldpfeil P-LAN
++usb:v0DBA*
++ ID_VENDOR_FROM_DATABASE=Digidesign
++
++usb:v0DBAp3000*
++ ID_MODEL_FROM_DATABASE=Mbox 2
++
+ usb:v0DBC*
+  ID_VENDOR_FROM_DATABASE=A&D Medical
+@@ -36776,6 +37403,9 @@ usb:v0DF6p0060*
+ usb:v0DF6p0062*
+  ID_MODEL_FROM_DATABASE=WLA-5000 802.11abgn [Ralink RT3572]
++usb:v0DF6p0072*
++ ID_MODEL_FROM_DATABASE=AX88179 Gigabit Ethernet [Sitecom]
++
+ usb:v0DF6p061C*
+  ID_MODEL_FROM_DATABASE=LN-028 Network USB 2.0 Adapter
+@@ -37253,6 +37883,9 @@ usb:v0E79p14AD*
+ usb:v0E79p150E*
+  ID_MODEL_FROM_DATABASE=80 G9
++usb:v0E79p3001*
++ ID_MODEL_FROM_DATABASE=40 Titanium
++
+ usb:v0E7B*
+  ID_VENDOR_FROM_DATABASE=On-Tech Industry Co., Ltd
+@@ -37292,9 +37925,15 @@ usb:v0E8Dp1806*
+ usb:v0E8Dp1836*
+  ID_MODEL_FROM_DATABASE=Samsung SE-S084 Super WriteMaster Slim External DVD writer
++usb:v0E8Dp2000*
++ ID_MODEL_FROM_DATABASE=MT65xx Preloader
++
+ usb:v0E8Dp3329*
+  ID_MODEL_FROM_DATABASE=Qstarz BT-Q1000XT
++usb:v0E8Dp763E*
++ ID_MODEL_FROM_DATABASE=MT7630e Bluetooth Adapter
++
+ usb:v0E8F*
+  ID_VENDOR_FROM_DATABASE=GreenAsia Inc.
+@@ -37302,7 +37941,7 @@ usb:v0E8Fp0003*
+  ID_MODEL_FROM_DATABASE=MaxFire Blaze2
+ usb:v0E8Fp0012*
+- ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Gamepad
++ ID_MODEL_FROM_DATABASE=Joystick/Gamepad
+ usb:v0E8Fp0016*
+  ID_MODEL_FROM_DATABASE=4 port USB 1.1 hub UH-174
+@@ -37436,9 +38075,18 @@ usb:v0EB7*
+ usb:v0EB8*
+  ID_VENDOR_FROM_DATABASE=Mettler Toledo
++usb:v0EB8p2200*
++ ID_MODEL_FROM_DATABASE=Ariva Scale
++
+ usb:v0EB8pF000*
+  ID_MODEL_FROM_DATABASE=PS60 Scale
++usb:v0EBB*
++ ID_VENDOR_FROM_DATABASE=Thermo Fisher Scientific
++
++usb:v0EBBp0002*
++ ID_MODEL_FROM_DATABASE=FT-IR Spectrometer
++
+ usb:v0EBE*
+  ID_VENDOR_FROM_DATABASE=VWeb Corp.
+@@ -37559,6 +38207,12 @@ usb:v0EEFp0001*
+ usb:v0EEFp0002*
+  ID_MODEL_FROM_DATABASE=Touchscreen Controller(Professional)
++usb:v0EEFp7200*
++ ID_MODEL_FROM_DATABASE=Touchscreen Controller
++
++usb:v0EEFpA802*
++ ID_MODEL_FROM_DATABASE=eGalaxTouch EXC7920
++
+ usb:v0EF0*
+  ID_VENDOR_FROM_DATABASE=Hitachi Cable, Ltd
+@@ -37670,6 +38324,12 @@ usb:v0F12*
+ usb:v0F13*
+  ID_VENDOR_FROM_DATABASE=Acetek Technology Co., Ltd
++usb:v0F14*
++ ID_VENDOR_FROM_DATABASE=Ingenico
++
++usb:v0F14p0012*
++ ID_MODEL_FROM_DATABASE=Vital'Act 3S
++
+ usb:v0F18*
+  ID_VENDOR_FROM_DATABASE=Finger Lakes Instrumentation
+@@ -37754,6 +38414,12 @@ usb:v0F37*
+ usb:v0F38*
+  ID_VENDOR_FROM_DATABASE=Nien-Yi Industrial Corp.
++usb:v0F39*
++ ID_VENDOR_FROM_DATABASE=TG3 Electronics
++
++usb:v0F39p0876*
++ ID_MODEL_FROM_DATABASE=Keyboard [87 Francium Pro]
++
+ usb:v0F3D*
+  ID_VENDOR_FROM_DATABASE=Airprime, Incorporated
+@@ -37841,6 +38507,9 @@ usb:v0F63*
+ usb:v0F63p0010*
+  ID_MODEL_FROM_DATABASE=Leapster Explorer
++usb:v0F63p0022*
++ ID_MODEL_FROM_DATABASE=Leap Reader
++
+ usb:v0F63p0500*
+  ID_MODEL_FROM_DATABASE=Fly Fusion
+@@ -37928,6 +38597,9 @@ usb:v0F6Ep0404*
+ usb:v0F73*
+  ID_VENDOR_FROM_DATABASE=DFI
++usb:v0F78*
++ ID_VENDOR_FROM_DATABASE=Guntermann & Drunck GmbH
++
+ usb:v0F7C*
+  ID_VENDOR_FROM_DATABASE=DQ Technology, Inc.
+@@ -38064,7 +38736,7 @@ usb:v0FCAp8001*
+  ID_MODEL_FROM_DATABASE=Blackberry Handheld
+ usb:v0FCAp8004*
+- ID_MODEL_FROM_DATABASE=Blackberry Handheld
++ ID_MODEL_FROM_DATABASE=Blackberry
+ usb:v0FCAp8007*
+  ID_MODEL_FROM_DATABASE=Blackberry Handheld
+@@ -38147,6 +38819,12 @@ usb:v0FCEp3138*
+ usb:v0FCEp3149*
+  ID_MODEL_FROM_DATABASE=Xperia X8
++usb:v0FCEp514F*
++ ID_MODEL_FROM_DATABASE=Xperia arc S [Adb-Enable Mode]
++
++usb:v0FCEp5169*
++ ID_MODEL_FROM_DATABASE=Xperia S [Adb-Enable Mode]
++
+ usb:v0FCEp5177*
+  ID_MODEL_FROM_DATABASE=Xperia Ion [Debug Mode]
+@@ -38309,6 +38987,9 @@ usb:v0FCEpE166*
+ usb:v0FCEpE167*
+  ID_MODEL_FROM_DATABASE=XPERIA mini
++usb:v0FCEpF0FA*
++ ID_MODEL_FROM_DATABASE=Liveview micro display MN800 in DFU mode
++
+ usb:v0FCF*
+  ID_VENDOR_FROM_DATABASE=Dynastream Innovations, Inc.
+@@ -38316,13 +38997,16 @@ usb:v0FCFp1003*
+  ID_MODEL_FROM_DATABASE=ANT Development Board
+ usb:v0FCFp1004*
+- ID_MODEL_FROM_DATABASE=ANT2USB
++ ID_MODEL_FROM_DATABASE=ANTUSB Stick
+ usb:v0FCFp1006*
+  ID_MODEL_FROM_DATABASE=ANT Development Board
+ usb:v0FCFp1008*
+- ID_MODEL_FROM_DATABASE=Mini stick Suunto
++ ID_MODEL_FROM_DATABASE=ANTUSB2 Stick
++
++usb:v0FCFp1009*
++ ID_MODEL_FROM_DATABASE=ANTUSB-m Stick
+ usb:v0FD0*
+  ID_VENDOR_FROM_DATABASE=Tulip Computers B.V.
+@@ -38378,6 +39062,12 @@ usb:v0FDAp0100*
+ usb:v0FDC*
+  ID_VENDOR_FROM_DATABASE=Micro Plus
++usb:v0FDE*
++ ID_VENDOR_FROM_DATABASE=Oregon Scientific
++
++usb:v0FDEpCA01*
++ ID_MODEL_FROM_DATABASE=WMRS200 weather station
++
+ usb:v0FE0*
+  ID_VENDOR_FROM_DATABASE=Osterhout Design Group
+@@ -38471,6 +39161,9 @@ usb:v0FFF*
+ usb:v1000*
+  ID_VENDOR_FROM_DATABASE=Speed Tech Corp.
++usb:v1000p153B*
++ ID_MODEL_FROM_DATABASE=TerraTec Electronic GmbH
++
+ usb:v1001*
+  ID_VENDOR_FROM_DATABASE=Ritronics Components (S) Pte., Ltd
+@@ -38504,6 +39197,9 @@ usb:v1004p618E*
+ usb:v1004p618F*
+  ID_MODEL_FROM_DATABASE=Ally/Optimus One
++usb:v1004p61C5*
++ ID_MODEL_FROM_DATABASE=P880 / Charge only
++
+ usb:v1004p61C6*
+  ID_MODEL_FROM_DATABASE=Vortex (msc)
+@@ -38514,7 +39210,7 @@ usb:v1004p61F1*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone [LG Software mode]
+ usb:v1004p61F9*
+- ID_MODEL_FROM_DATABASE=V909 G-Slate
++ ID_MODEL_FROM_DATABASE=Optimus (Various Models) MTP Mode
+ usb:v1004p61FC*
+  ID_MODEL_FROM_DATABASE=Optimus 3
+@@ -38528,9 +39224,15 @@ usb:v1004p6300*
+ usb:v1004p631C*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone [MTP mode]
++usb:v1004p631D*
++ ID_MODEL_FROM_DATABASE=Optimus Android Phone (Camera/PTP Mode)
++
+ usb:v1004p631E*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone [Camera/PTP mode]
++usb:v1004p631F*
++ ID_MODEL_FROM_DATABASE=Optimus Android Phone (Charge Mode)
++
+ usb:v1004p6356*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone [Virtual CD mode]
+@@ -38540,6 +39242,9 @@ usb:v1004p6800*
+ usb:v1004p7000*
+  ID_MODEL_FROM_DATABASE=LG LDP-7024D(LD)USB
++usb:v1004p91C8*
++ ID_MODEL_FROM_DATABASE=P880 / USB tethering
++
+ usb:v1004pA400*
+  ID_MODEL_FROM_DATABASE=Renoir (KC910)
+@@ -38742,13 +39447,13 @@ usb:v1033p0068*
+  ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231
+ usb:v1038*
+- ID_VENDOR_FROM_DATABASE=Ideazon, Inc.
++ ID_VENDOR_FROM_DATABASE=SteelSeries ApS
+ usb:v1038p0100*
+- ID_MODEL_FROM_DATABASE=Zboard
++ ID_MODEL_FROM_DATABASE=Ideazon Zboard
+ usb:v1038p1361*
+- ID_MODEL_FROM_DATABASE=Sensei
++ ID_MODEL_FROM_DATABASE=Ideazon Sensei
+ usb:v1039*
+  ID_VENDOR_FROM_DATABASE=devolo AG
+@@ -38946,28 +39651,37 @@ usb:v1058p0704*
+  ID_MODEL_FROM_DATABASE=Passport External HDD
+ usb:v1058p070A*
+- ID_MODEL_FROM_DATABASE=My Passport Essential SE
++ ID_MODEL_FROM_DATABASE=My Passport Essential SE, My Passport for Mac (WDBAAB)
+ usb:v1058p071A*
+  ID_MODEL_FROM_DATABASE=My Passport
+ usb:v1058p0730*
+- ID_MODEL_FROM_DATABASE=My Passport
++ ID_MODEL_FROM_DATABASE=My Passport Essential (WDBACY)
+ usb:v1058p0740*
+  ID_MODEL_FROM_DATABASE=My Passport
++usb:v1058p0741*
++ ID_MODEL_FROM_DATABASE=My Passport Ultra
++
+ usb:v1058p0742*
+  ID_MODEL_FROM_DATABASE=My Passport Essential SE
+ usb:v1058p0748*
+- ID_MODEL_FROM_DATABASE=My Passport 1TB USB 3.0
++ ID_MODEL_FROM_DATABASE=My Passport (WDBKXH)
++
++usb:v1058p0810*
++ ID_MODEL_FROM_DATABASE=My Passport Ultra
+ usb:v1058p0900*
+  ID_MODEL_FROM_DATABASE=MyBook Essential External HDD
+ usb:v1058p0901*
+- ID_MODEL_FROM_DATABASE=MyBook External HDD
++ ID_MODEL_FROM_DATABASE=My Book Essential Edition (Green Ring)
++
++usb:v1058p0902*
++ ID_MODEL_FROM_DATABASE=My Book Pro Edition
+ usb:v1058p0903*
+  ID_MODEL_FROM_DATABASE=My Book Premium Edition
+@@ -38976,20 +39690,32 @@ usb:v1058p0910*
+  ID_MODEL_FROM_DATABASE=MyBook Essential External HDD
+ usb:v1058p1001*
+- ID_MODEL_FROM_DATABASE=External Hard Disk [Elements]
++ ID_MODEL_FROM_DATABASE=Elements Desktop (WDE1U)
+ usb:v1058p1003*
+  ID_MODEL_FROM_DATABASE=Elements 1000 GB
+ usb:v1058p1010*
+- ID_MODEL_FROM_DATABASE=Elements External HDD
++ ID_MODEL_FROM_DATABASE=Elements Portable (WDBAAR)
+ usb:v1058p1021*
+- ID_MODEL_FROM_DATABASE=Elements 2TB
++ ID_MODEL_FROM_DATABASE=Elements Desktop (WDBAAU)
+ usb:v1058p1023*
+  ID_MODEL_FROM_DATABASE=Elements SE
++usb:v1058p1048*
++ ID_MODEL_FROM_DATABASE=Elements Portable (WDBU6Y)
++
++usb:v1058p10A2*
++ ID_MODEL_FROM_DATABASE=Elements SE Portable (WDBPCK)
++
++usb:v1058p10A8*
++ ID_MODEL_FROM_DATABASE=Elements Portable (WDBUZG)
++
++usb:v1058p1100*
++ ID_MODEL_FROM_DATABASE=My Book Essential Edition 2.0 (WDH1U)
++
+ usb:v1058p1103*
+  ID_MODEL_FROM_DATABASE=My Book Studio
+@@ -39272,6 +39998,9 @@ usb:v106Fp0009*
+ usb:v106Fp000A*
+  ID_MODEL_FROM_DATABASE=CR10x Coin Recycler
++usb:v106Fp000C*
++ ID_MODEL_FROM_DATABASE=Xchange
++
+ usb:v1076*
+  ID_VENDOR_FROM_DATABASE=GCT Semiconductor, Inc.
+@@ -39335,6 +40064,12 @@ usb:v1099*
+ usb:v109A*
+  ID_VENDOR_FROM_DATABASE=DATASOFT Systems GmbH
++usb:v109B*
++ ID_VENDOR_FROM_DATABASE=Hisense
++
++usb:v109Bp9118*
++ ID_MODEL_FROM_DATABASE=Medion P4013 Mobile
++
+ usb:v109F*
+  ID_VENDOR_FROM_DATABASE=eSOL Co., Ltd
+@@ -39458,6 +40193,15 @@ usb:v10BF*
+ usb:v10BFp0001*
+  ID_MODEL_FROM_DATABASE=SmartHome PowerLinc
++usb:v10C3*
++ ID_VENDOR_FROM_DATABASE=Universal Laser Systems, Inc.
++
++usb:v10C3p00A4*
++ ID_MODEL_FROM_DATABASE=ULS PLS Series Laser Engraver Firmware Loader
++
++usb:v10C3p00A5*
++ ID_MODEL_FROM_DATABASE=ULS Print Support
++
+ usb:v10C4*
+  ID_VENDOR_FROM_DATABASE=Cygnal Integrated Products, Inc.
+@@ -39509,6 +40253,12 @@ usb:v10C4p8461*
+ usb:v10C4p8477*
+  ID_MODEL_FROM_DATABASE=Balluff RFID Reader
++usb:v10C4p8496*
++ ID_MODEL_FROM_DATABASE=SiLabs Cypress FW downloader
++
++usb:v10C4p8497*
++ ID_MODEL_FROM_DATABASE=SiLabs Cypress EVB
++
+ usb:v10C4p8605*
+  ID_MODEL_FROM_DATABASE=dilitronics ESoLUX solar lighting controller
+@@ -39527,6 +40277,9 @@ usb:v10C4p8863*
+ usb:v10C4p8897*
+  ID_MODEL_FROM_DATABASE=C8051F38x HDMI Splitter [UHBX]
++usb:v10C4p8918*
++ ID_MODEL_FROM_DATABASE=C8051F38x HDMI Audio Extractor [VSA-HA-DP]
++
+ usb:v10C4pEA60*
+  ID_MODEL_FROM_DATABASE=CP210x UART Bridge / myAVR mySmartUSB light
+@@ -39908,6 +40661,9 @@ usb:v1141*
+ usb:v1142*
+  ID_VENDOR_FROM_DATABASE=CyberScan Technologies, Inc.
++usb:v1142p0709*
++ ID_MODEL_FROM_DATABASE=Cyberview High Speed Scanner
++
+ usb:v1145*
+  ID_VENDOR_FROM_DATABASE=Japan Radio Company
+@@ -39938,6 +40694,9 @@ usb:v114D*
+ usb:v114F*
+  ID_VENDOR_FROM_DATABASE=Wavecom
++usb:v114Fp1234*
++ ID_MODEL_FROM_DATABASE=Fastrack Xtend FXT001 Modem
++
+ usb:v115B*
+  ID_VENDOR_FROM_DATABASE=Salix Technology Co., Ltd.
+@@ -40128,7 +40887,7 @@ usb:v1199p683A*
+  ID_MODEL_FROM_DATABASE=MC8785 Device
+ usb:v1199p683C*
+- ID_MODEL_FROM_DATABASE=MC8790 Device
++ ID_MODEL_FROM_DATABASE=Mobile Broadband 3G/UMTS (MC8790 Device)
+ usb:v1199p6850*
+  ID_MODEL_FROM_DATABASE=AirCard 880 Device
+@@ -40196,6 +40955,12 @@ usb:v1199p9009*
+ usb:v1199p900A*
+  ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem
++usb:v1199p9055*
++ ID_MODEL_FROM_DATABASE=Gobi 9x15 Multimode 3G/4G LTE Modem (NAT mode)
++
++usb:v1199p9057*
++ ID_MODEL_FROM_DATABASE=Gobi 9x15 Multimode 3G/4G LTE Modem (IP passthrough mode)
++
+ usb:v119A*
+  ID_VENDOR_FROM_DATABASE=ZHAN QI Technology Co., Ltd
+@@ -40238,12 +41003,30 @@ usb:v11ACp6565*
+ usb:v11B0*
+  ID_VENDOR_FROM_DATABASE=ATECH FLASH TECHNOLOGY
++usb:v11B0p6208*
++ ID_MODEL_FROM_DATABASE=PRO-28U
++
++usb:v11BE*
++ ID_VENDOR_FROM_DATABASE=R&D International NV
++
++usb:v11BEpF0A0*
++ ID_MODEL_FROM_DATABASE=Martin Maxxyz DMX
++
+ usb:v11C5*
+  ID_VENDOR_FROM_DATABASE=Inmax
+ usb:v11C5p0521*
+  ID_MODEL_FROM_DATABASE=IMT-0521 Smartcard Reader
++usb:v11CA*
++ ID_VENDOR_FROM_DATABASE=VeriFone Inc
++
++usb:v11CAp0207*
++ ID_MODEL_FROM_DATABASE=PIN Pad VX 810
++
++usb:v11CAp0220*
++ ID_MODEL_FROM_DATABASE=PIN Pad VX 805
++
+ usb:v11DB*
+  ID_VENDOR_FROM_DATABASE=Topfield Co., Ltd.
+@@ -40274,6 +41057,9 @@ usb:v11F5p0005*
+ usb:v11F5p0008*
+  ID_MODEL_FROM_DATABASE=UMTS/HSDPA Data Card
++usb:v11F5p0101*
++ ID_MODEL_FROM_DATABASE=RCU Connect
++
+ usb:v11F6*
+  ID_VENDOR_FROM_DATABASE=Prolific
+@@ -40284,7 +41070,7 @@ usb:v11F7*
+  ID_VENDOR_FROM_DATABASE=Alcatel (?)
+ usb:v11F7p02DF*
+- ID_MODEL_FROM_DATABASE=TD10 Mobile phone USB cable
++ ID_MODEL_FROM_DATABASE=Serial cable (v2) for TD-10 Mobile Phone
+ usb:v1203*
+  ID_VENDOR_FROM_DATABASE=TSC Auto ID Technology Co., Ltd
+@@ -40352,6 +41138,9 @@ usb:v1228p0012*
+ usb:v1228p0015*
+  ID_MODEL_FROM_DATABASE=TPaq21/MPaq21 Datalogger
++usb:v1228p584C*
++ ID_MODEL_FROM_DATABASE=XL2 Logger
++
+ usb:v1230*
+  ID_VENDOR_FROM_DATABASE=Chipidea-Microelectronica, S.A.
+@@ -40377,20 +41166,110 @@ usb:v1235*
+  ID_VENDOR_FROM_DATABASE=Novation EMS
+ usb:v1235p0001*
+- ID_MODEL_FROM_DATABASE=ReMOTE Audio/XStation
++ ID_MODEL_FROM_DATABASE=ReMOTE Audio/XStation First Edition
+ usb:v1235p0002*
+  ID_MODEL_FROM_DATABASE=Speedio
+ usb:v1235p0003*
+- ID_MODEL_FROM_DATABASE=ReMOTE ZeRO SL
++ ID_MODEL_FROM_DATABASE=RemoteSL + ZeroSL
++
++usb:v1235p0004*
++ ID_MODEL_FROM_DATABASE=ReMOTE LE
++
++usb:v1235p0005*
++ ID_MODEL_FROM_DATABASE=XIOSynth [First Edition]
++
++usb:v1235p0006*
++ ID_MODEL_FROM_DATABASE=XStation
++
++usb:v1235p0007*
++ ID_MODEL_FROM_DATABASE=XIOSynth
++
++usb:v1235p0008*
++ ID_MODEL_FROM_DATABASE=ReMOTE SL Compact
++
++usb:v1235p0009*
++ ID_MODEL_FROM_DATABASE=nIO
++
++usb:v1235p000A*
++ ID_MODEL_FROM_DATABASE=Nocturn
++
++usb:v1235p000B*
++ ID_MODEL_FROM_DATABASE=ReMOTE SL MkII
++
++usb:v1235p000C*
++ ID_MODEL_FROM_DATABASE=ZeRO MkII
++
++usb:v1235p000E*
++ ID_MODEL_FROM_DATABASE=Launchpad
++
++usb:v1235p0010*
++ ID_MODEL_FROM_DATABASE=Saffire 6
++
++usb:v1235p0011*
++ ID_MODEL_FROM_DATABASE=Ultranova
++
++usb:v1235p0012*
++ ID_MODEL_FROM_DATABASE=Nocturn Keyboard
++
++usb:v1235p0013*
++ ID_MODEL_FROM_DATABASE=VRM Box
++
++usb:v1235p0014*
++ ID_MODEL_FROM_DATABASE=VRM Box Audio Class (2-out)
++
++usb:v1235p0015*
++ ID_MODEL_FROM_DATABASE=Dicer
++
++usb:v1235p0016*
++ ID_MODEL_FROM_DATABASE=Ultranova
++
++usb:v1235p0018*
++ ID_MODEL_FROM_DATABASE=Twitch
++
++usb:v1235p0019*
++ ID_MODEL_FROM_DATABASE=Impulse 25
++
++usb:v1235p001A*
++ ID_MODEL_FROM_DATABASE=Impulse 49
++
++usb:v1235p001B*
++ ID_MODEL_FROM_DATABASE=Impulse 61
+ usb:v1235p4661*
+  ID_MODEL_FROM_DATABASE=ReMOTE25
++usb:v1235p8000*
++ ID_MODEL_FROM_DATABASE=Scarlett 18i6
++
++usb:v1235p8002*
++ ID_MODEL_FROM_DATABASE=Scarlett 8i6
++
+ usb:v1235p8006*
+  ID_MODEL_FROM_DATABASE=Focusrite Scarlett 2i2
++usb:v1235p8008*
++ ID_MODEL_FROM_DATABASE=Saffire 6
++
++usb:v1235p800A*
++ ID_MODEL_FROM_DATABASE=Scarlett 2i4
++
++usb:v1235p800C*
++ ID_MODEL_FROM_DATABASE=Scarlett 18i20
++
++usb:v1235p800E*
++ ID_MODEL_FROM_DATABASE=iTrack Solo
++
++usb:v1235p8010*
++ ID_MODEL_FROM_DATABASE=Forte
++
++usb:v1235p8012*
++ ID_MODEL_FROM_DATABASE=Scarlett 6i6
++
++usb:v1235p8014*
++ ID_MODEL_FROM_DATABASE=Scarlett 18i8
++
+ usb:v1241*
+  ID_VENDOR_FROM_DATABASE=Belkin
+@@ -40410,7 +41289,7 @@ usb:v1241p1166*
+  ID_MODEL_FROM_DATABASE=MI-2150 Trust Mouse
+ usb:v1241p1177*
+- ID_MODEL_FROM_DATABASE=F8E842-DL Mouse
++ ID_MODEL_FROM_DATABASE=Mouse [HT82M21A]
+ usb:v1241p1503*
+  ID_MODEL_FROM_DATABASE=Keyboard
+@@ -40463,6 +41342,9 @@ usb:v125Fp312A*
+ usb:v125Fp312B*
+  ID_MODEL_FROM_DATABASE=Superior S102 Pro
++usb:v125FpA22A*
++ ID_MODEL_FROM_DATABASE=DashDrive Elite HE720 500GB
++
+ usb:v125FpA91A*
+  ID_MODEL_FROM_DATABASE=Portable HDD CH91
+@@ -40478,6 +41360,9 @@ usb:v125FpC93A*
+ usb:v125FpC96A*
+  ID_MODEL_FROM_DATABASE=C906 Flash Drive
++usb:v125FpCB10*
++ ID_MODEL_FROM_DATABASE=Dash Drive UV100
++
+ usb:v1260*
+  ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp.
+@@ -40637,6 +41522,9 @@ usb:v1283p0150*
+ usb:v1286*
+  ID_VENDOR_FROM_DATABASE=Marvell Semiconductor, Inc.
++usb:v1286p00BC*
++ ID_MODEL_FROM_DATABASE=Marvell JTAG Probe
++
+ usb:v1286p1FAB*
+  ID_MODEL_FROM_DATABASE=88W8338 [Libertas] 802.11g
+@@ -40733,6 +41621,12 @@ usb:v12C4p0006*
+ usb:v12C4p0008*
+  ID_MODEL_FROM_DATABASE=Teleprompter Foot Control (v1)
++usb:v12CF*
++ ID_VENDOR_FROM_DATABASE=DEXIN
++
++usb:v12CFp0170*
++ ID_MODEL_FROM_DATABASE=Tt eSPORTS BLACK Gaming mouse
++
+ usb:v12D1*
+  ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd.
+@@ -40802,9 +41696,15 @@ usb:v12D1p14CF*
+ usb:v12D1p14D1*
+  ID_MODEL_FROM_DATABASE=K3770 3G Modem (Mass Storage Mode)
++usb:v12D1p14DB*
++ ID_MODEL_FROM_DATABASE=E353/E3131
++
+ usb:v12D1p14F1*
+  ID_MODEL_FROM_DATABASE=Gobi 3000 HSPA+ Modem
++usb:v12D1p14FE*
++ ID_MODEL_FROM_DATABASE=Modem (Mass Storage Mode)
++
+ usb:v12D1p1501*
+  ID_MODEL_FROM_DATABASE=Pulse
+@@ -40826,6 +41726,9 @@ usb:v12D1p1521*
+ usb:v12D1p155A*
+  ID_MODEL_FROM_DATABASE=R205 Mobile WiFi (CD-ROM mode)
++usb:v12D1p1575*
++ ID_MODEL_FROM_DATABASE=K5150 LTE modem
++
+ usb:v12D1p1805*
+  ID_MODEL_FROM_DATABASE=AT&T Go Phone U2800A phone
+@@ -41376,7 +42279,7 @@ usb:v13BA*
+  ID_VENDOR_FROM_DATABASE=PCPlay
+ usb:v13BAp0001*
+- ID_MODEL_FROM_DATABASE=König Electronic CMP-KEYPAD12 Numeric Keypad
++ ID_MODEL_FROM_DATABASE=Konig Electronic CMP-KEYPAD12 Numeric Keypad
+ usb:v13BAp0017*
+  ID_MODEL_FROM_DATABASE=PS/2 Keyboard+Mouse Adapter
+@@ -44096,6 +44999,9 @@ usb:v1740p9801*
+ usb:v1743*
+  ID_VENDOR_FROM_DATABASE=General Atomics
++usb:v1748*
++ ID_VENDOR_FROM_DATABASE=MQP Electronics
++
+ usb:v174C*
+  ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc.
+@@ -46569,7 +47475,7 @@ usb:v1C7B*
+  ID_VENDOR_FROM_DATABASE=LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD.
+ usb:v1C83*
+- ID_VENDOR_FROM_DATABASE=Schomäcker GmbH
++ ID_VENDOR_FROM_DATABASE=Schomaecker GmbH
+ usb:v1C83p0001*
+  ID_MODEL_FROM_DATABASE=RS150 V2
+@@ -47678,6 +48584,12 @@ usb:v2047*
+ usb:v2047p0200*
+  ID_MODEL_FROM_DATABASE=MSP430 USB HID Bootstrap Loader
++usb:v2047p0855*
++ ID_MODEL_FROM_DATABASE=Invensense Embedded MotionApp HID Sensor
++
++usb:v2047p0964*
++ ID_MODEL_FROM_DATABASE=Inventio Software MSP430
++
+ usb:v2080*
+  ID_VENDOR_FROM_DATABASE=Barnes & Noble
diff --git a/debian/patches/hwdb-update-419.patch b/debian/patches/hwdb-update-419.patch
new file mode 100644 (file)
index 0000000..7361f1f
--- /dev/null
@@ -0,0 +1,1558 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 21 May 2014 18:19:24 +0900
+Subject: hwdb: update
+
+(cherry picked from commit 7ba52a1283a0864b56947fa091048e8fe31a5899)
+(cherry picked from commit 5e608afd723b1d0d7d2b15bf661a7628994e4e18)
+---
+ hwdb/20-OUI.hwdb              | 155 +++++++++++++++++++++-
+ hwdb/20-pci-vendor-model.hwdb | 141 +++++++++++++++++---
+ hwdb/20-usb-vendor-model.hwdb | 302 +++++++++++++++++++++++++++++++++++++++++-
+ 3 files changed, 572 insertions(+), 26 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index afc0d90..6188bfc 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -52915,6 +52915,9 @@ OUI:0CA42A*
+ OUI:0CA694*
+  ID_OUI_FROM_DATABASE=Sunitec Enterprise Co.,Ltd
++OUI:0CAC05*
++ ID_OUI_FROM_DATABASE=Unitend Technologies Inc.
++
+ OUI:0CAF5A*
+  ID_OUI_FROM_DATABASE=GENUS POWER INFRASTRUCTURES LIMITED
+@@ -53164,6 +53167,9 @@ OUI:1048B1*
+ OUI:104D77*
+  ID_OUI_FROM_DATABASE=Innovative Computer Engineering
++OUI:105172*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:1056CA*
+  ID_OUI_FROM_DATABASE=Peplink International Ltd.
+@@ -53488,6 +53494,9 @@ OUI:147373*
+ OUI:147411*
+  ID_OUI_FROM_DATABASE=RIM
++OUI:147590*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:147DB3*
+  ID_OUI_FROM_DATABASE=JOA TELECOM.CO.,LTD
+@@ -53899,6 +53908,9 @@ OUI:18C8E7*
+ OUI:18CC23*
+  ID_OUI_FROM_DATABASE=Philio Technology Corporation
++OUI:18CF5E*
++ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
++
+ OUI:18D071*
+  ID_OUI_FROM_DATABASE=DASAN SMC, Inc.
+@@ -54517,6 +54529,9 @@ OUI:20E791*
+ OUI:20EAC7*
+  ID_OUI_FROM_DATABASE=SHENZHEN RIOPINE ELECTRONICS CO., LTD
++OUI:20ED74*
++ ID_OUI_FROM_DATABASE=Ability enterprise co.,Ltd.
++
+ OUI:20EEC6*
+  ID_OUI_FROM_DATABASE=Elefirst Science & Tech Co ., ltd
+@@ -54742,6 +54757,9 @@ OUI:24CBE7*
+ OUI:24CF21*
+  ID_OUI_FROM_DATABASE=Shenzhen State Micro Technology Co., Ltd
++OUI:24D13F*
++ ID_OUI_FROM_DATABASE=MEXUS CO.,LTD
++
+ OUI:24D2CC*
+  ID_OUI_FROM_DATABASE=SmartDrive Systems Inc.
+@@ -55438,6 +55456,9 @@ OUI:2CF203*
+ OUI:2CF4C5*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:2CFAA2*
++ ID_OUI_FROM_DATABASE=Alcatel-Lucent
++
+ OUI:30055C*
+  ID_OUI_FROM_DATABASE=Brother industries, LTD.
+@@ -55708,6 +55729,9 @@ OUI:30F9ED*
+ OUI:30FD11*
+  ID_OUI_FROM_DATABASE=MACROTECH (USA) INC.
++OUI:3400A3*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:340286*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -56077,6 +56101,9 @@ OUI:38229D*
+ OUI:3822D6*
+  ID_OUI_FROM_DATABASE=H3C Technologies Co., Limited
++OUI:38262B*
++ ID_OUI_FROM_DATABASE=UTran Technology
++
+ OUI:3826CD*
+  ID_OUI_FROM_DATABASE=ANDTEK
+@@ -56395,6 +56422,9 @@ OUI:3C404F*
+ OUI:3C438E*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++OUI:3C46D8*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:3C4A92*
+  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
+@@ -56710,6 +56740,9 @@ OUI:404A18*
+ OUI:404D8E*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
++OUI:404EEB*
++ ID_OUI_FROM_DATABASE=Higher Way Electronic Co., Ltd.
++
+ OUI:4050E0*
+  ID_OUI_FROM_DATABASE=Milton Security Group LLC
+@@ -57709,6 +57742,9 @@ OUI:4CB9C8*
+ OUI:4CBAA3*
+  ID_OUI_FROM_DATABASE=Bison Electronics Inc.
++OUI:4CBB58*
++ ID_OUI_FROM_DATABASE=Chicony Electronics Co., Ltd.
++
+ OUI:4CBCA5*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -57757,6 +57793,9 @@ OUI:4CEDDE*
+ OUI:4CF02E*
+  ID_OUI_FROM_DATABASE=Vifa Denmark A/S
++OUI:4CF2BF*
++ ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd.
++
+ OUI:4CF45B*
+  ID_OUI_FROM_DATABASE=Blue Clover Devices
+@@ -57994,6 +58033,9 @@ OUI:50B888*
+ OUI:50B8A2*
+  ID_OUI_FROM_DATABASE=ImTech Technologies LLC,
++OUI:50BD5F*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:50C006*
+  ID_OUI_FROM_DATABASE=Carmanah Signs
+@@ -58285,6 +58327,9 @@ OUI:54D1B0*
+ OUI:54D46F*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
++OUI:54DF00*
++ ID_OUI_FROM_DATABASE=Ulterius Technologies, LLC
++
+ OUI:54DF63*
+  ID_OUI_FROM_DATABASE=Intrakey technologies GmbH
+@@ -58597,6 +58642,9 @@ OUI:58F6BF*
+ OUI:58F98E*
+  ID_OUI_FROM_DATABASE=SECUDOS GmbH
++OUI:58FCDB*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:58FD20*
+  ID_OUI_FROM_DATABASE=Bravida Sakerhet AB
+@@ -58621,6 +58669,9 @@ OUI:5C1193*
+ OUI:5C1437*
+  ID_OUI_FROM_DATABASE=Thyssenkrupp Aufzugswerke GmbH
++OUI:5C1515*
++ ID_OUI_FROM_DATABASE=ADVAN
++
+ OUI:5C15E1*
+  ID_OUI_FROM_DATABASE=AIDC TECHNOLOGY (S) PTE LTD
+@@ -58891,12 +58942,18 @@ OUI:5CF96A*
+ OUI:5CF9DD*
+  ID_OUI_FROM_DATABASE=Dell Inc
++OUI:5CF9F0*
++ ID_OUI_FROM_DATABASE=Atomos Engineering P/L
++
+ OUI:5CFF35*
+  ID_OUI_FROM_DATABASE=Wistron Corporation
+ OUI:5CFFFF*
+  ID_OUI_FROM_DATABASE=Shenzhen Kezhonglong Optoelectronic Technology Co., Ltd
++OUI:600292*
++ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++
+ OUI:6002B4*
+  ID_OUI_FROM_DATABASE=Wistron NeWeb Corp.
+@@ -59323,6 +59380,9 @@ OUI:644F74*
+ OUI:644FB0*
+  ID_OUI_FROM_DATABASE=Hyunjin.com
++OUI:645106*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:64517E*
+  ID_OUI_FROM_DATABASE=LONG BEN (DONGGUAN) ELECTRONIC TECHNOLOGY CO.,LTD.
+@@ -59902,6 +59962,9 @@ OUI:68FB95*
+ OUI:68FCB3*
+  ID_OUI_FROM_DATABASE=Next Level Security Systems, Inc.
++OUI:6C0273*
++ ID_OUI_FROM_DATABASE=Shenzhen Jin Yun Video Equipment Co., Ltd.
++
+ OUI:6C0460*
+  ID_OUI_FROM_DATABASE=RBH Access Technologies Inc.
+@@ -60874,6 +60937,9 @@ OUI:781FDB*
+ OUI:78223D*
+  ID_OUI_FROM_DATABASE=Affirmed Networks
++OUI:7824AF*
++ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++
+ OUI:782544*
+  ID_OUI_FROM_DATABASE=Omnima Limited
+@@ -60919,6 +60985,9 @@ OUI:784405*
+ OUI:784476*
+  ID_OUI_FROM_DATABASE=Zioncom technology co.,ltd
++OUI:784561*
++ ID_OUI_FROM_DATABASE=CyberTAN Technology Inc.
++
+ OUI:7845C4*
+  ID_OUI_FROM_DATABASE=Dell Inc
+@@ -61024,6 +61093,9 @@ OUI:789966*
+ OUI:78998F*
+  ID_OUI_FROM_DATABASE=MEDILINE ITALIA SRL
++OUI:789CE7*
++ ID_OUI_FROM_DATABASE=Shenzhen Aikede Technology Co., Ltd
++
+ OUI:789ED0*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+@@ -61480,6 +61552,9 @@ OUI:7CC8D7*
+ OUI:7CCB0D*
+  ID_OUI_FROM_DATABASE=Antaira Technologies, LLC
++OUI:7CCCB8*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:7CCD11*
+  ID_OUI_FROM_DATABASE=MS-Magnet
+@@ -61945,6 +62020,9 @@ OUI:842F75*
+ OUI:8430E5*
+  ID_OUI_FROM_DATABASE=SkyHawke Technologies, LLC
++OUI:8432EA*
++ ID_OUI_FROM_DATABASE=ANHUI WANZTEN P&T CO., LTD
++
+ OUI:843497*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+@@ -63295,6 +63373,9 @@ OUI:94CDAC*
+ OUI:94CE2C*
+  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
++OUI:94CE31*
++ ID_OUI_FROM_DATABASE=CTS Limited
++
+ OUI:94D019*
+  ID_OUI_FROM_DATABASE=Cydle Corp.
+@@ -63409,6 +63490,9 @@ OUI:982CBE*
+ OUI:982D56*
+  ID_OUI_FROM_DATABASE=Resolution Audio
++OUI:982F3C*
++ ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
++
+ OUI:983000*
+  ID_OUI_FROM_DATABASE=Beijing KEMACOM Technologies Co., Ltd.
+@@ -63508,6 +63592,9 @@ OUI:9876B6*
+ OUI:987770*
+  ID_OUI_FROM_DATABASE=Pep Digital Technology (Guangzhou) Co., Ltd
++OUI:987E46*
++ ID_OUI_FROM_DATABASE=Emizon Networks Limited
++
+ OUI:988217*
+  ID_OUI_FROM_DATABASE=Disruptive Ltd
+@@ -64303,6 +64390,9 @@ OUI:A40BED*
+ OUI:A40CC3*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:A41242*
++ ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd.
++
+ OUI:A4134E*
+  ID_OUI_FROM_DATABASE=Luxul
+@@ -65740,6 +65830,9 @@ OUI:B4B5AF*
+ OUI:B4B676*
+  ID_OUI_FROM_DATABASE=Intel Corporate
++OUI:B4B859*
++ ID_OUI_FROM_DATABASE=Texa Spa
++
+ OUI:B4B88D*
+  ID_OUI_FROM_DATABASE=Thuh Company
+@@ -65815,6 +65908,9 @@ OUI:B80305*
+ OUI:B80415*
+  ID_OUI_FROM_DATABASE=Bayan Audio
++OUI:B808CF*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:B80B9D*
+  ID_OUI_FROM_DATABASE=ROPEX Industrie-Elektronik GmbH
+@@ -66277,6 +66373,9 @@ OUI:BC5FF4*
+ OUI:BC629F*
+  ID_OUI_FROM_DATABASE=Telenet Systems P. Ltd.
++OUI:BC671C*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:BC6778*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -66412,6 +66511,9 @@ OUI:BCCFCC*
+ OUI:BCD177*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++OUI:BCD1D3*
++ ID_OUI_FROM_DATABASE=Tinno Mobile Technology Corp
++
+ OUI:BCD5B6*
+  ID_OUI_FROM_DATABASE=d2d technologies
+@@ -66706,6 +66808,9 @@ OUI:C0E54E*
+ OUI:C0EAE4*
+  ID_OUI_FROM_DATABASE=Sonicwall
++OUI:C0EEFB*
++ ID_OUI_FROM_DATABASE=OnePlus Tech (Shenzhen) Ltd
++
+ OUI:C0F1C4*
+  ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd.
+@@ -66721,6 +66826,9 @@ OUI:C0F8DA*
+ OUI:C0F991*
+  ID_OUI_FROM_DATABASE=GME Standard Communications P/L
++OUI:C40006*
++ ID_OUI_FROM_DATABASE=Lipi Data Systems Ltd.
++
+ OUI:C40142*
+  ID_OUI_FROM_DATABASE=MaxMedia Technology Limited
+@@ -67885,6 +67993,9 @@ OUI:D09C30*
+ OUI:D09D0A*
+  ID_OUI_FROM_DATABASE=LINKCOM
++OUI:D0A0D6*
++ ID_OUI_FROM_DATABASE=Chengdu TD Tech Ltd.
++
+ OUI:D0A311*
+  ID_OUI_FROM_DATABASE=Neuberger Gebäudeautomation GmbH
+@@ -68126,7 +68237,7 @@ OUI:D45AB2*
+  ID_OUI_FROM_DATABASE=Galleon Systems
+ OUI:D45C70*
+- ID_OUI_FROM_DATABASE=Wireless Gigabit Alliance
++ ID_OUI_FROM_DATABASE=Wi-Fi Alliance
+ OUI:D45D42*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -68359,6 +68470,9 @@ OUI:D808F5*
+ OUI:D809C3*
+  ID_OUI_FROM_DATABASE=Cercacor Labs
++OUI:D80CCF*
++ ID_OUI_FROM_DATABASE=C.G.V. S.A.S.
++
+ OUI:D80DE3*
+  ID_OUI_FROM_DATABASE=FXI TECHNOLOGIES AS
+@@ -68386,6 +68500,9 @@ OUI:D81EDE*
+ OUI:D824BD*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:D82522*
++ ID_OUI_FROM_DATABASE=Pace plc
++
+ OUI:D826B9*
+  ID_OUI_FROM_DATABASE=Guangdong Coagent Electronics S &T Co., Ltd.
+@@ -68521,6 +68638,9 @@ OUI:D89685*
+ OUI:D89695*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:D896E0*
++ ID_OUI_FROM_DATABASE=Alibaba Cloud Computing Ltd.
++
+ OUI:D8973B*
+  ID_OUI_FROM_DATABASE=Artesyn Embedded Technologies
+@@ -68941,6 +69061,9 @@ OUI:E01C41*
+ OUI:E01CEE*
+  ID_OUI_FROM_DATABASE=Bravo Tech, Inc.
++OUI:E01D38*
++ ID_OUI_FROM_DATABASE=Beijing HuaqinWorld Technology Co.,Ltd
++
+ OUI:E01D3B*
+  ID_OUI_FROM_DATABASE=Cambridge Industries(Group) Co.,Ltd
+@@ -69373,6 +69496,9 @@ OUI:E47CF9*
+ OUI:E47D5A*
+  ID_OUI_FROM_DATABASE=Beijing Hanbang Technology Corp.
++OUI:E47FB2*
++ ID_OUI_FROM_DATABASE=Fujitsu Limited
++
+ OUI:E48184*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent
+@@ -69829,6 +69955,9 @@ OUI:EC219F*
+ OUI:EC2257*
+  ID_OUI_FROM_DATABASE=JiangSu NanJing University Electronic Information Technology Co.,Ltd
++OUI:EC2280*
++ ID_OUI_FROM_DATABASE=D-Link International
++
+ OUI:EC233D*
+  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
+@@ -69970,6 +70099,9 @@ OUI:ECB106*
+ OUI:ECB541*
+  ID_OUI_FROM_DATABASE=SHINANO E and E Co.Ltd.
++OUI:ECB907*
++ ID_OUI_FROM_DATABASE=CloudGenix Inc
++
+ OUI:ECBBAE*
+  ID_OUI_FROM_DATABASE=Digivoice Tecnologia em Eletronica Ltda
+@@ -70189,6 +70321,9 @@ OUI:F0728C*
+ OUI:F073AE*
+  ID_OUI_FROM_DATABASE=PEAK-System Technik
++OUI:F0761C*
++ ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
++
+ OUI:F07765*
+  ID_OUI_FROM_DATABASE=Sourcefire, Inc
+@@ -70378,6 +70513,9 @@ OUI:F40321*
+ OUI:F4044C*
+  ID_OUI_FROM_DATABASE=ValenceTech Limited
++OUI:F40669*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:F4068D*
+  ID_OUI_FROM_DATABASE=devolo AG
+@@ -70642,6 +70780,9 @@ OUI:F4EC38*
+ OUI:F4F15A*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:F4F26D*
++ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
++
+ OUI:F4F5A5*
+  ID_OUI_FROM_DATABASE=Nokia corporation
+@@ -70825,6 +70966,9 @@ OUI:F871FE*
+ OUI:F872EA*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:F87394*
++ ID_OUI_FROM_DATABASE=NETGEAR INC.,
++
+ OUI:F8769B*
+  ID_OUI_FROM_DATABASE=Neopis Co., Ltd.
+@@ -70915,6 +71059,9 @@ OUI:F8C001*
+ OUI:F8C091*
+  ID_OUI_FROM_DATABASE=Highgates Technology
++OUI:F8C288*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:F8C678*
+  ID_OUI_FROM_DATABASE=Carefusion
+@@ -71167,6 +71314,9 @@ OUI:FC683E*
+ OUI:FC6C31*
+  ID_OUI_FROM_DATABASE=LXinstruments GmbH
++OUI:FC6DC0*
++ ID_OUI_FROM_DATABASE=BME CORPORATION
++
+ OUI:FC7516*
+  ID_OUI_FROM_DATABASE=D-Link International
+@@ -71319,3 +71469,6 @@ OUI:FCFBFB*
+ OUI:FCFE77*
+  ID_OUI_FROM_DATABASE=Hitachi Reftechno, Inc.
++
++OUI:FCFFAA*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAL public listing for more information.
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 2957774..62941b9 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -4205,6 +4205,9 @@ pci:v00001002d00005F57*
+ pci:v00001002d00006600*
+  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8670M/8750M]
++pci:v00001002d00006600sv0000103Csd00001952*
++ ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8670M/8750M] (ProBook 455 G1)
++
+ pci:v00001002d00006601*
+  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M]
+@@ -4292,6 +4295,12 @@ pci:v00001002d00006640*
+ pci:v00001002d00006641*
+  ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M]
++pci:v00001002d00006646*
++ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon R9 M280X]
++
++pci:v00001002d00006647*
++ ID_MODEL_FROM_DATABASE=Bonaire PRO [Radeon R9 M270X]
++
+ pci:v00001002d00006649*
+  ID_MODEL_FROM_DATABASE=Bonaire [FirePro W5100]
+@@ -6137,6 +6146,9 @@ pci:v00001002d0000683Dsv0000103Csd00006890*
+ pci:v00001002d0000683Dsv00001043sd00008760*
+  ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
++pci:v00001002d0000683Dsv00001462sd00002710*
++ ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (R7770-PMD1GD5)
++
+ pci:v00001002d0000683Dsv0000174Bsd00008304*
+  ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770/8760 / R7 250X] (Radeon HD 8760 OEM)
+@@ -7856,6 +7868,15 @@ pci:v00001002d00006901*
+ pci:v00001002d00006920*
+  ID_MODEL_FROM_DATABASE=Tonga
++pci:v00001002d00006921*
++ ID_MODEL_FROM_DATABASE=Amethyst XT [Radeon R9 M295X]
++
++pci:v00001002d0000692B*
++ ID_MODEL_FROM_DATABASE=Tonga XT GL [FirePro W8100]
++
++pci:v00001002d0000692F*
++ ID_MODEL_FROM_DATABASE=Tonga XT GL [FirePro W8100]
++
+ pci:v00001002d0000700F*
+  ID_MODEL_FROM_DATABASE=RS100 AGP Bridge
+@@ -24470,6 +24491,9 @@ pci:v000010DEd00000640*
+ pci:v000010DEd00000641*
+  ID_MODEL_FROM_DATABASE=G96 [GeForce 9400 GT]
++pci:v000010DEd00000641sv00001682sd00004009*
++ ID_MODEL_FROM_DATABASE=G96 [GeForce 9400 GT] (PV-T94G-ZAFG)
++
+ pci:v000010DEd00000643*
+  ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GT]
+@@ -26306,6 +26330,9 @@ pci:v000010DEd00000FD8*
+ pci:v000010DEd00000FD9*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 645M]
++pci:v000010DEd00000FDB*
++ ID_MODEL_FROM_DATABASE=GK107M
++
+ pci:v000010DEd00000FDF*
+  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 740M]
+@@ -26861,6 +26888,12 @@ pci:v000010DEd00001140sv00001028sd000005E8*
+ pci:v000010DEd00001140sv00001028sd000005F4*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++pci:v000010DEd00001140sv00001028sd0000064E*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv00001028sd0000068D*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
+ pci:v000010DEd00001140sv0000103Csd000018EF*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+@@ -27185,6 +27218,36 @@ pci:v000010DEd00001140sv000017AAsd00003803*
+ pci:v000010DEd00001140sv000017AAsd00003804*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++pci:v000010DEd00001140sv000017AAsd00003806*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++
++pci:v000010DEd00001140sv000017AAsd00003808*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++
++pci:v000010DEd00001140sv000017AAsd0000380D*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd0000380E*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd0000380F*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd00003811*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd00003812*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd00003813*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd00003816*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd00003818*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
+ pci:v000010DEd00001140sv000017AAsd00003901*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M / GT 620M)
+@@ -27260,12 +27323,27 @@ pci:v000010DEd00001140sv000017AAsd0000502E*
+ pci:v000010DEd00001140sv000017AAsd0000502F*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++pci:v000010DEd00001140sv000017AAsd00005030*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
++
++pci:v000010DEd00001140sv000017AAsd00005031*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
++
++pci:v000010DEd00001140sv000017AAsd00005032*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
++pci:v000010DEd00001140sv000017AAsd00005033*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
+ pci:v000010DEd00001140sv000017AAsd0000503E*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ pci:v000010DEd00001140sv000017AAsd0000503F*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++pci:v000010DEd00001140sv000017AAsd00005040*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++
+ pci:v000010DEd00001140sv00001854sd00000177*
+  ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+@@ -28443,7 +28521,7 @@ pci:v000010ECd00008168sv00001043sd00008432*
+  ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P8P67 and other motherboards)
+ pci:v000010ECd00008168sv00001043sd00008505*
+- ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (P8 series motherboard)
+ pci:v000010ECd00008168sv0000105Bsd00000D7C*
+  ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (D270S/D250S Motherboard)
+@@ -35300,6 +35378,9 @@ pci:v000011ABd00007810*
+ pci:v000011ABd00007820*
+  ID_MODEL_FROM_DATABASE=MV78200 [Discovery Innovation] ARM SoC
++pci:v000011ABd00007823*
++ ID_MODEL_FROM_DATABASE=MV78230 [Armada XP] ARM SoC
++
+ pci:v000011ABd0000F003*
+  ID_MODEL_FROM_DATABASE=GT-64010 Primary Image Piranha Image Generator
+@@ -36602,17 +36683,20 @@ pci:v00001217d00008120*
+ pci:v00001217d00008130*
+  ID_MODEL_FROM_DATABASE=Integrated MS/MSPRO/xD Controller
++pci:v00001217d00008220*
++ ID_MODEL_FROM_DATABASE=OZ600FJ1/OZ900FJ1 SD/MMC Card Reader Controller
++
+ pci:v00001217d00008221*
+- ID_MODEL_FROM_DATABASE=SD/MMC Card Reader Controller
++ ID_MODEL_FROM_DATABASE=OZ600FJ0/OZ900FJ0/OZ600FJS SD/MMC Card Reader Controller
+ pci:v00001217d00008320*
+- ID_MODEL_FROM_DATABASE=OZ600 MMC/SD Controller
++ ID_MODEL_FROM_DATABASE=OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller
+ pci:v00001217d00008320sv00001028sd000004A3*
+- ID_MODEL_FROM_DATABASE=OZ600 MMC/SD Controller (Precision M4600)
++ ID_MODEL_FROM_DATABASE=OZ600RJ1/OZ900RJ1 SD/MMC Card Reader Controller (Precision M4600)
+ pci:v00001217d00008321*
+- ID_MODEL_FROM_DATABASE=Integrated MMC/SD controller
++ ID_MODEL_FROM_DATABASE=OZ600RJ0/OZ900RJ0/OZ600RJS SD/MMC Card Reader Controller
+ pci:v00001217d00008330*
+  ID_MODEL_FROM_DATABASE=OZ600 MS/xD Controller
+@@ -46403,6 +46487,9 @@ pci:v000014F1d00008800sv00000070sd00009802*
+ pci:v000014F1d00008800sv00001002sd000000F8*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (ATI TV Wonder Pro)
++pci:v000014F1d00008800sv00001002sd000000F9*
++ ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (ATI TV Wonder)
++
+ pci:v000014F1d00008800sv00001002sd0000A101*
+  ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder (HDTV Wonder)
+@@ -50978,6 +51065,12 @@ pci:v000018F4d00000125*
+ pci:v000018F4d00000135*
+  ID_MODEL_FROM_DATABASE=NT20E2-PTP Network Adapter 2x10Gb
++pci:v000018F4d00000145*
++ ID_MODEL_FROM_DATABASE=NT40E3-4-PTP Network Adapter 4x10Gb
++
++pci:v000018F4d00000155*
++ ID_MODEL_FROM_DATABASE=NT100E3-1-PTP Network Adapter 1x100Gb
++
+ pci:v000018F6*
+  ID_VENDOR_FROM_DATABASE=NextIO
+@@ -55143,7 +55236,7 @@ pci:v00008086d00000150*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller
+ pci:v00008086d00000150sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (P8 series motherboard)
+ pci:v00008086d00000150sv00001849sd00000150*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (Motherboard)
+@@ -55229,6 +55322,9 @@ pci:v00008086d0000015E*
+ pci:v00008086d00000162*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller
++pci:v00008086d00000162sv00001043sd000084CA*
++ ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (P8 series motherboard)
++
+ pci:v00008086d00000162sv00001849sd00000162*
+  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (Motherboard)
+@@ -59061,10 +59157,10 @@ pci:v00008086d00001521sv00001028sd00000602*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 2P I350-t LOM)
+ pci:v00008086d00001521sv00001028sd00001F60*
+- ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Intel GbE 4P I350crNDC)
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P I350-t rNDC)
+ pci:v00008086d00001521sv00001028sd00001F62*
+- ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Intel GbE 2P I350crNDC)
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X540/I350 rNDC)
+ pci:v00008086d00001521sv00001028sd0000FF9A*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Gigabit 4P X710/I350 rNDC)
+@@ -59250,7 +59346,10 @@ pci:v00008086d00001533*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+ pci:v00008086d00001533sv0000103Csd00000003*
+- ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet Server Adapter I210-T1)
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet I210-T1 GbE NIC)
++
++pci:v00008086d00001533sv000010A9sd0000802C*
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (UV300 BaseIO single-port GbE)
+ pci:v00008086d00001533sv000017AAsd00001100*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (ThinkServer Ethernet Server Adapter)
+@@ -59261,15 +59360,15 @@ pci:v00008086d00001533sv00008086sd00000001*
+ pci:v00008086d00001533sv00008086sd00000002*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection (Ethernet Server Adapter I210-T1)
+-pci:v00008086d00001534*
+- ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
+-
+ pci:v00008086d00001536*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Fiber Network Connection
+ pci:v00008086d00001537*
+  ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection
++pci:v00008086d00001538*
++ ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
++
+ pci:v00008086d00001539*
+  ID_MODEL_FROM_DATABASE=I211 Gigabit Network Connection
+@@ -60267,7 +60366,7 @@ pci:v00008086d00001E02*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode]
+ pci:v00008086d00001E02sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (P8 series motherboard)
+ pci:v00008086d00001E02sv00001849sd00001E02*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (Motherboard)
+@@ -60374,6 +60473,9 @@ pci:v00008086d00001E20sv00001043sd00001517*
+ pci:v00008086d00001E20sv00001043sd00008415*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (P8H77-I Motherboard)
++pci:v00008086d00001E20sv00001043sd00008445*
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (ASUS P8Z77-V LX Motherboard)
++
+ pci:v00008086d00001E20sv00001849sd00001898*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller (Z77 Extreme4 motherboard)
+@@ -60387,7 +60489,7 @@ pci:v00008086d00001E22sv00001043sd00001517*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E22sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (P8 series motherboard)
+ pci:v00008086d00001E22sv00001849sd00001E22*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller (Motherboard)
+@@ -60411,7 +60513,7 @@ pci:v00008086d00001E26sv00001043sd00001517*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (Zenbook Prime UX31A)
+ pci:v00008086d00001E26sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (P8 series motherboard)
+ pci:v00008086d00001E26sv00001849sd00001E26*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (Motherboard)
+@@ -60426,7 +60528,7 @@ pci:v00008086d00001E2Dsv00001043sd00001517*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (Zenbook Prime UX31A)
+ pci:v00008086d00001E2Dsv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (P8 series motherboard)
+ pci:v00008086d00001E2Dsv00001849sd00001E2D*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (Motherboard)
+@@ -60444,7 +60546,7 @@ pci:v00008086d00001E31sv00001043sd00001517*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (Zenbook Prime UX31A)
+ pci:v00008086d00001E31sv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (P8 series motherboard)
+ pci:v00008086d00001E31sv00001849sd00001E31*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller (Motherboard)
+@@ -60462,7 +60564,7 @@ pci:v00008086d00001E3Asv00001043sd00001517*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (Zenbook Prime UX31A)
+ pci:v00008086d00001E3Asv00001043sd000084CA*
+- ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (P8H77-I Motherboard)
++ ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (P8 series motherboard)
+ pci:v00008086d00001E3Asv00001849sd00001E3A*
+  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 (Motherboard)
+@@ -60488,6 +60590,9 @@ pci:v00008086d00001E43*
+ pci:v00008086d00001E44*
+  ID_MODEL_FROM_DATABASE=Z77 Express Chipset LPC Controller
++pci:v00008086d00001E44sv00001043sd000084CA*
++ ID_MODEL_FROM_DATABASE=Z77 Express Chipset LPC Controller (P8 series motherboard)
++
+ pci:v00008086d00001E44sv00001849sd00001E44*
+  ID_MODEL_FROM_DATABASE=Z77 Express Chipset LPC Controller (Motherboard)
+diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
+index 52586bc..05f267d 100644
+--- a/hwdb/20-usb-vendor-model.hwdb
++++ b/hwdb/20-usb-vendor-model.hwdb
+@@ -41163,7 +41163,7 @@ usb:v1234pED02*
+  ID_MODEL_FROM_DATABASE=Emotiv EPOC Developer Headset Wireless Dongle
+ usb:v1235*
+- ID_VENDOR_FROM_DATABASE=Novation EMS
++ ID_VENDOR_FROM_DATABASE=Focusrite-Novation
+ usb:v1235p0001*
+  ID_MODEL_FROM_DATABASE=ReMOTE Audio/XStation First Edition
+@@ -41729,6 +41729,9 @@ usb:v12D1p155A*
+ usb:v12D1p1575*
+  ID_MODEL_FROM_DATABASE=K5150 LTE modem
++usb:v12D1p15CA*
++ ID_MODEL_FROM_DATABASE=E3131 3G/UMTS/HSPA+ Modem (Mass Storage Mode)
++
+ usb:v12D1p1805*
+  ID_MODEL_FROM_DATABASE=AT&T Go Phone U2800A phone
+@@ -41744,6 +41747,12 @@ usb:v12D1p1C20*
+ usb:v12D1p1D50*
+  ID_MODEL_FROM_DATABASE=ET302s TD-SCDMA/TD-HSDPA Mobile Broadband
++usb:v12D1p1F01*
++ ID_MODEL_FROM_DATABASE=E353/E3131 (Mass storage mode)
++
++usb:v12D1p1F16*
++ ID_MODEL_FROM_DATABASE=K5150 LTE modem (Mass Storage Mode)
++
+ usb:v12D1p380B*
+  ID_MODEL_FROM_DATABASE=WiMAX USB modem(s)
+@@ -41762,6 +41771,12 @@ usb:v12D6p0888*
+ usb:v12D7*
+  ID_VENDOR_FROM_DATABASE=BETTER WIRE FACTORY CO., LTD.
++usb:v12D8*
++ ID_VENDOR_FROM_DATABASE=Araneus Information Systems Oy
++
++usb:v12D8p0001*
++ ID_MODEL_FROM_DATABASE=Alea I True Random Number Generator
++
+ usb:v12E6*
+  ID_VENDOR_FROM_DATABASE=Waldorf Music GmbH
+@@ -41805,7 +41820,7 @@ usb:v1307p0163*
+  ID_MODEL_FROM_DATABASE=256MB/512MB/1GB Flash Drive
+ usb:v1307p0165*
+- ID_MODEL_FROM_DATABASE=2GB/4GB Flash Drive
++ ID_MODEL_FROM_DATABASE=2GB/4GB/8GB Flash Drive
+ usb:v1307p0190*
+  ID_MODEL_FROM_DATABASE=Ut190 8 GB Flash Drive with MicroSD reader
+@@ -41846,6 +41861,51 @@ usb:v1312*
+ usb:v1313*
+  ID_VENDOR_FROM_DATABASE=ThorLabs
++usb:v1313p0010*
++ ID_MODEL_FROM_DATABASE=LC1 Linear Camera (Jungo)
++
++usb:v1313p0011*
++ ID_MODEL_FROM_DATABASE=SP1 Spectrometer (Jungo)
++
++usb:v1313p0012*
++ ID_MODEL_FROM_DATABASE=SP2 Spectrometer (Jungo)
++
++usb:v1313p0110*
++ ID_MODEL_FROM_DATABASE=LC1 Linear Camera (VISA)
++
++usb:v1313p0111*
++ ID_MODEL_FROM_DATABASE=SP1 Spectrometer (VISA)
++
++usb:v1313p0112*
++ ID_MODEL_FROM_DATABASE=SP2 Spectrometer (VISA)
++
++usb:v1313p8001*
++ ID_MODEL_FROM_DATABASE=TXP-Series Slot (TXP5001, TXP5004)
++
++usb:v1313p8012*
++ ID_MODEL_FROM_DATABASE=BC106 Camera Beam Profiler
++
++usb:v1313p8013*
++ ID_MODEL_FROM_DATABASE=WFS10 Wavefront Sensor
++
++usb:v1313p8017*
++ ID_MODEL_FROM_DATABASE=BC206 Camera Beam Profiler
++
++usb:v1313p8019*
++ ID_MODEL_FROM_DATABASE=BP2 Multi Slit Beam Profiler
++
++usb:v1313p8020*
++ ID_MODEL_FROM_DATABASE=PM300 Optical Power Meter
++
++usb:v1313p8021*
++ ID_MODEL_FROM_DATABASE=PM300E Optical Power and Energy Meter
++
++usb:v1313p8022*
++ ID_MODEL_FROM_DATABASE=PM320E Optical Power and Energy Meter
++
++usb:v1313p8030*
++ ID_MODEL_FROM_DATABASE=ER100 Extinction Ratio Meter
++
+ usb:v1313p8070*
+  ID_MODEL_FROM_DATABASE=PM100D
+@@ -41975,6 +42035,18 @@ usb:v1342p0204*
+ usb:v1342p0304*
+  ID_MODEL_FROM_DATABASE=EasiDock Ethernet
++usb:v1343*
++ ID_VENDOR_FROM_DATABASE=Citizen Systems
++
++usb:v1343p0003*
++ ID_MODEL_FROM_DATABASE=CX / DNP DS40
++
++usb:v1343p0004*
++ ID_MODEL_FROM_DATABASE=CX-W / DNP DS80
++
++usb:v1343p0005*
++ ID_MODEL_FROM_DATABASE=CY / DNP DSRX
++
+ usb:v1345*
+  ID_VENDOR_FROM_DATABASE=Sino Lite Technology Corp.
+@@ -42002,6 +42074,12 @@ usb:v1347p0403*
+ usb:v1347p0404*
+  ID_MODEL_FROM_DATABASE=G2/G3/G4 CCD-F KAF CCD
++usb:v1347p0405*
++ ID_MODEL_FROM_DATABASE=Gx CCD-I CCD
++
++usb:v1347p0406*
++ ID_MODEL_FROM_DATABASE=Gx CCD-F CCD
++
+ usb:v1347p0410*
+  ID_MODEL_FROM_DATABASE=G1-0400 CCD
+@@ -42149,6 +42227,9 @@ usb:v138Ap003C*
+ usb:v138Ap003D*
+  ID_MODEL_FROM_DATABASE=VFS491
++usb:v138Ap0050*
++ ID_MODEL_FROM_DATABASE=Swipe Fingerprint Sensor
++
+ usb:v138E*
+  ID_VENDOR_FROM_DATABASE=Jungo LTD
+@@ -42161,6 +42242,9 @@ usb:v1390*
+ usb:v1390p0001*
+  ID_MODEL_FROM_DATABASE=GO 520 T/GO 630/ONE XL (v9)
++usb:v1390p5454*
++ ID_MODEL_FROM_DATABASE=Blue & Me 2
++
+ usb:v1391*
+  ID_VENDOR_FROM_DATABASE=IdealTEK, Inc.
+@@ -42263,6 +42347,15 @@ usb:v13B1p0039*
+ usb:v13B1p003A*
+  ID_MODEL_FROM_DATABASE=AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236]
++usb:v13B1p003B*
++ ID_MODEL_FROM_DATABASE=AE3000 802.11abgn (3x3) Wireless Adapter [Ralink RT3573]
++
++usb:v13B1p003E*
++ ID_MODEL_FROM_DATABASE=AE6000 802.11a/b/g/n/ac Wireless Adapter [MediaTek MT7610U]
++
++usb:v13B1p003F*
++ ID_MODEL_FROM_DATABASE=WUSB6300 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
++
+ usb:v13B1p13B1*
+  ID_MODEL_FROM_DATABASE=WUSB200: Wireless-G Business Network Adapter with Rangebooster
+@@ -42446,6 +42539,12 @@ usb:v13D3p3315*
+ usb:v13D3p3375*
+  ID_MODEL_FROM_DATABASE=Atheros AR3012 Bluetooth 4.0 Adapter
++usb:v13D3p3392*
++ ID_MODEL_FROM_DATABASE=Azurewave 43228+20702
++
++usb:v13D3p3394*
++ ID_MODEL_FROM_DATABASE=Bluetooth
++
+ usb:v13D3p5070*
+  ID_MODEL_FROM_DATABASE=Webcam
+@@ -42458,6 +42557,9 @@ usb:v13D3p5115*
+ usb:v13D3p5116*
+  ID_MODEL_FROM_DATABASE=Integrated Webcam
++usb:v13D3p5122*
++ ID_MODEL_FROM_DATABASE=2M Integrated Webcam
++
+ usb:v13D3p5126*
+  ID_MODEL_FROM_DATABASE=PC Cam
+@@ -42524,6 +42626,9 @@ usb:v13FDp0840*
+ usb:v13FDp0841*
+  ID_MODEL_FROM_DATABASE=Samsung SE-T084M DVD-RW
++usb:v13FDp1040*
++ ID_MODEL_FROM_DATABASE=INIC-1511L PATA Bridge
++
+ usb:v13FDp1340*
+  ID_MODEL_FROM_DATABASE=Hi-Speed USB to SATA Bridge
+@@ -42533,9 +42638,15 @@ usb:v13FDp160F*
+ usb:v13FDp1640*
+  ID_MODEL_FROM_DATABASE=INIC-1610L SATA Bridge
++usb:v13FDp1669*
++ ID_MODEL_FROM_DATABASE=INIC-1609PN
++
+ usb:v13FDp1840*
+  ID_MODEL_FROM_DATABASE=INIC-1608 SATA bridge
++usb:v13FDp1E40*
++ ID_MODEL_FROM_DATABASE=INIC-1610P SATA bridge
++
+ usb:v13FE*
+  ID_VENDOR_FROM_DATABASE=Kingston Technology Company Inc.
+@@ -42555,10 +42666,10 @@ usb:v13FEp1E50*
+  ID_MODEL_FROM_DATABASE=U3 Smart Drive
+ usb:v13FEp1F00*
+- ID_MODEL_FROM_DATABASE=DataTraveler 2.0 4GB Flash Drive / Patriot Xporter 32GB (PEF32GUSB) Flash Drive
++ ID_MODEL_FROM_DATABASE=Kingston DataTraveler / Patriot Xporter
+ usb:v13FEp1F23*
+- ID_MODEL_FROM_DATABASE=2Gb
++ ID_MODEL_FROM_DATABASE=PS2232 flash drive controller
+ usb:v13FEp2240*
+  ID_MODEL_FROM_DATABASE=microSD card reader
+@@ -42569,12 +42680,18 @@ usb:v13FEp3100*
+ usb:v13FEp3123*
+  ID_MODEL_FROM_DATABASE=Verbatim STORE N GO 4GB
++usb:v13FEp3600*
++ ID_MODEL_FROM_DATABASE=flash drive (4GB, EMTEC)
++
+ usb:v13FEp3800*
+  ID_MODEL_FROM_DATABASE=Rage XT Flash Drive
+ usb:v13FEp3E00*
+  ID_MODEL_FROM_DATABASE=Flash Drive
++usb:v13FEp5000*
++ ID_MODEL_FROM_DATABASE=USB flash drive (32 GB SHARKOON Accelerate)
++
+ usb:v13FEp5100*
+  ID_MODEL_FROM_DATABASE=Flash Drive
+@@ -42674,6 +42791,12 @@ usb:v1415p2000*
+ usb:v1419*
+  ID_VENDOR_FROM_DATABASE=ABILITY ENTERPRISE CO., LTD.
++usb:v1421*
++ ID_VENDOR_FROM_DATABASE=Sensor Technology
++
++usb:v1421p0605*
++ ID_MODEL_FROM_DATABASE=Sentech Camera
++
+ usb:v1429*
+  ID_VENDOR_FROM_DATABASE=Vega Technologies Industrial (Austria) Co.
+@@ -42776,6 +42899,18 @@ usb:v1457p5118*
+ usb:v1457p5119*
+  ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 u-boot cdc_acm serial port
++usb:v1457p511A*
++ ID_MODEL_FROM_DATABASE=HXD8 u-boot usbtty CDC ACM Mode
++
++usb:v1457p511B*
++ ID_MODEL_FROM_DATABASE=SMDK2440 u-boot usbtty CDC ACM mode
++
++usb:v1457p511C*
++ ID_MODEL_FROM_DATABASE=SMDK2443 u-boot usbtty CDC ACM mode
++
++usb:v1457p511D*
++ ID_MODEL_FROM_DATABASE=QT2410 u-boot usbtty CDC ACM mode
++
+ usb:v1457p5120*
+  ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 u-boot usbtty generic serial
+@@ -42935,6 +43070,9 @@ usb:v148E*
+ usb:v148F*
+  ID_VENDOR_FROM_DATABASE=Ralink Technology, Corp.
++usb:v148Fp1000*
++ ID_MODEL_FROM_DATABASE=Motorola BC4 Bluetooth 3.0+HS Adapter
++
+ usb:v148Fp1706*
+  ID_MODEL_FROM_DATABASE=RT2500USB Wireless Adapter
+@@ -42983,6 +43121,9 @@ usb:v148Fp5372*
+ usb:v148Fp5572*
+  ID_MODEL_FROM_DATABASE=RT5572 Wireless Adapter
++usb:v148Fp7601*
++ ID_MODEL_FROM_DATABASE=MT7601U Wireless Adapter
++
+ usb:v148Fp9020*
+  ID_MODEL_FROM_DATABASE=RT2500USB Wireless Adapter
+@@ -42998,6 +43139,15 @@ usb:v1491p0020*
+ usb:v1493*
+  ID_VENDOR_FROM_DATABASE=Suunto
++usb:v1493p0010*
++ ID_MODEL_FROM_DATABASE=Bluebird [Ambit]
++
++usb:v1493p0019*
++ ID_MODEL_FROM_DATABASE=Duck [Ambit2]
++
++usb:v1493p001A*
++ ID_MODEL_FROM_DATABASE=Colibri [Ambit2 S]
++
+ usb:v1497*
+  ID_VENDOR_FROM_DATABASE=Panstrong Company Ltd.
+@@ -43118,6 +43268,9 @@ usb:v14CD*
+ usb:v14CDp121C*
+  ID_MODEL_FROM_DATABASE=microSD card reader
++usb:v14CDp121F*
++ ID_MODEL_FROM_DATABASE=microSD CardReader SY-T18
++
+ usb:v14CDp123A*
+  ID_MODEL_FROM_DATABASE=SD/MMC/RS-MMC Card Reader
+@@ -43131,7 +43284,7 @@ usb:v14CDp6116*
+  ID_MODEL_FROM_DATABASE=M6116 SATA Bridge
+ usb:v14CDp6600*
+- ID_MODEL_FROM_DATABASE=USB 2.0 IDE DEVICE
++ ID_MODEL_FROM_DATABASE=M110E PATA bridge
+ usb:v14CDp6700*
+  ID_MODEL_FROM_DATABASE=Card Reader
+@@ -43166,6 +43319,9 @@ usb:v14E1*
+ usb:v14E1p5000*
+  ID_MODEL_FROM_DATABASE=PenMount 5000 Touch Controller
++usb:v14E4*
++ ID_VENDOR_FROM_DATABASE=Broadcom Corp.
++
+ usb:v14E5*
+  ID_VENDOR_FROM_DATABASE=SAIN Information & Communications Co., Ltd.
+@@ -43214,6 +43370,15 @@ usb:v1501*
+ usb:v1509*
+  ID_VENDOR_FROM_DATABASE=First International Computer, Inc.
++usb:v1509p0A01*
++ ID_MODEL_FROM_DATABASE=LI-3100 Area Meter
++
++usb:v1509p0A02*
++ ID_MODEL_FROM_DATABASE=LI-7000 CO2/H2O Gas Analyzer
++
++usb:v1509p0A03*
++ ID_MODEL_FROM_DATABASE=C-DiGit Blot Scanner
++
+ usb:v1509p9242*
+  ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver
+@@ -43253,6 +43418,12 @@ usb:v1518p0001*
+ usb:v1518p0002*
+  ID_MODEL_FROM_DATABASE=HDReye (before firmware loads)
++usb:v1519*
++ ID_VENDOR_FROM_DATABASE=Comneon
++
++usb:v1519p0020*
++ ID_MODEL_FROM_DATABASE=HSIC Device
++
+ usb:v1520*
+  ID_VENDOR_FROM_DATABASE=Bitwire Corp.
+@@ -43280,6 +43451,15 @@ usb:v1529p3100*
+ usb:v152A*
+  ID_VENDOR_FROM_DATABASE=Thesycon Systemsoftware & Consulting GmbH
++usb:v152Ap8400*
++ ID_MODEL_FROM_DATABASE=INI DVS128
++
++usb:v152Ap840D*
++ ID_MODEL_FROM_DATABASE=INI DAViS
++
++usb:v152Ap841A*
++ ID_MODEL_FROM_DATABASE=INI DAViS FX3
++
+ usb:v152D*
+  ID_VENDOR_FROM_DATABASE=JMicron Technology Corp. / JMicron USA Technology Corp.
+@@ -43337,6 +43517,9 @@ usb:v1532p0007*
+ usb:v1532p0013*
+  ID_MODEL_FROM_DATABASE=Orochi mouse
++usb:v1532p0015*
++ ID_MODEL_FROM_DATABASE=Naga Mouse
++
+ usb:v1532p0016*
+  ID_MODEL_FROM_DATABASE=DeathAdder Mouse
+@@ -43364,9 +43547,21 @@ usb:v1532p0102*
+ usb:v1532p0109*
+  ID_MODEL_FROM_DATABASE=Lycosa Keyboard
++usb:v1532p0113*
++ ID_MODEL_FROM_DATABASE=RZ07-0074 Gaming Keypad [Orbweaver]
++
+ usb:v1532p0300*
+  ID_MODEL_FROM_DATABASE=RZ06-0063 Motion Sensing Controllers [Hydra]
++usb:v153B*
++ ID_VENDOR_FROM_DATABASE=TerraTec Electronic GmbH
++
++usb:v153Bp1181*
++ ID_MODEL_FROM_DATABASE=Cinergy S2 PCIe Dual Port 1
++
++usb:v153Bp1182*
++ ID_MODEL_FROM_DATABASE=Cinergy S2 PCIe Dual Port 2
++
+ usb:v1546*
+  ID_VENDOR_FROM_DATABASE=U-Blox AG
+@@ -43388,12 +43583,18 @@ usb:v154B*
+ usb:v154Bp0010*
+  ID_MODEL_FROM_DATABASE=USB 2.0 Flash Drive
++usb:v154Bp0048*
++ ID_MODEL_FROM_DATABASE=Flash Drive
++
+ usb:v154Bp004D*
+  ID_MODEL_FROM_DATABASE=8 GB Flash Drive
+ usb:v154Bp0057*
+  ID_MODEL_FROM_DATABASE=32GB Micro Slide Attache Flash Drive
++usb:v154Bp007A*
++ ID_MODEL_FROM_DATABASE=8GB Classic Attache Flash Drive
++
+ usb:v154Bp6545*
+  ID_MODEL_FROM_DATABASE=FD Device
+@@ -43530,7 +43731,10 @@ usb:v15A2p0052*
+  ID_MODEL_FROM_DATABASE=i.MX50 SystemOnChip in RecoveryMode
+ usb:v15A2p0054*
+- ID_MODEL_FROM_DATABASE=i.MX6Q SystemOnChip in RecoveryMode
++ ID_MODEL_FROM_DATABASE=i.MX 6Dual/6Quad SystemOnChip in RecoveryMode
++
++usb:v15A2p0061*
++ ID_MODEL_FROM_DATABASE=i.MX 6Solo/6DualLite SystemOnChip in RecoveryMode
+ usb:v15A4*
+  ID_VENDOR_FROM_DATABASE=Afatech Technologies, Inc.
+@@ -43640,6 +43844,9 @@ usb:v15C2p0036*
+ usb:v15C2p0038*
+  ID_MODEL_FROM_DATABASE=GD01 MX LCD Display/IR Receiver
++usb:v15C2p0042*
++ ID_MODEL_FROM_DATABASE=Antec Veris Multimedia Station E-Z IR Receiver
++
+ usb:v15C2pFFDA*
+  ID_MODEL_FROM_DATABASE=iMON PAD Remote Controller
+@@ -43724,6 +43931,9 @@ usb:v15D9p0A4C*
+ usb:v15D9p0A4D*
+  ID_MODEL_FROM_DATABASE=Optical Mouse
++usb:v15D9p0A4F*
++ ID_MODEL_FROM_DATABASE=Optical Mouse
++
+ usb:v15DC*
+  ID_VENDOR_FROM_DATABASE=Hynix Semiconductor Inc.
+@@ -44507,6 +44717,15 @@ usb:v1690p0740*
+ usb:v1690p0901*
+  ID_MODEL_FROM_DATABASE=Voyager 205 ADSL Router
++usb:v1690p2000*
++ ID_MODEL_FROM_DATABASE=naturaSign Pad Standard
++
++usb:v1690p2001*
++ ID_MODEL_FROM_DATABASE=naturaSign Pad Standard
++
++usb:v1690pFE12*
++ ID_MODEL_FROM_DATABASE=Bootloader
++
+ usb:v1696*
+  ID_VENDOR_FROM_DATABASE=Hitachi Video and Information System, Inc.
+@@ -44669,6 +44888,9 @@ usb:v16C0p06B4*
+ usb:v16C0p06B5*
+  ID_MODEL_FROM_DATABASE=USB2LPT with 3 interfaces (native, HID, printer)
++usb:v16C0p0762*
++ ID_MODEL_FROM_DATABASE=Osmocom SIMtrace
++
+ usb:v16C0p076B*
+  ID_MODEL_FROM_DATABASE=OpenPCD 13.56MHz RFID Reader
+@@ -44759,6 +44981,15 @@ usb:v16D0p075D*
+ usb:v16D0p080A*
+  ID_MODEL_FROM_DATABASE=S2E1 Interface
++usb:v16D0p0870*
++ ID_MODEL_FROM_DATABASE=Kaufmann Automotive GmbH, RKS+CAN Interface
++
++usb:v16D1*
++ ID_VENDOR_FROM_DATABASE=Suprema Inc.
++
++usb:v16D1p0401*
++ ID_MODEL_FROM_DATABASE=SUP-SFR400(A) BioMini Fingerprint Reader
++
+ usb:v16D3*
+  ID_VENDOR_FROM_DATABASE=Frontline Test Equipment, Inc.
+@@ -44774,6 +45005,9 @@ usb:v16D5p6501*
+ usb:v16D5p6502*
+  ID_MODEL_FROM_DATABASE=CDMA/UMTS/GPRS modem
++usb:v16D5p6603*
++ ID_MODEL_FROM_DATABASE=ADU-890WH modem
++
+ usb:v16D6*
+  ID_VENDOR_FROM_DATABASE=JABLOCOM s.r.o.
+@@ -44870,6 +45104,18 @@ usb:v170Bp0011*
+ usb:v170D*
+  ID_VENDOR_FROM_DATABASE=Avnera
++usb:v1711*
++ ID_VENDOR_FROM_DATABASE=Leica Microsystems
++
++usb:v1711p3020*
++ ID_MODEL_FROM_DATABASE=IC80 HD Camera
++
++usb:v1724*
++ ID_VENDOR_FROM_DATABASE=Meyer Instruments (MIS)
++
++usb:v1724p0115*
++ ID_MODEL_FROM_DATABASE=PAXcam5
++
+ usb:v1725*
+  ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor
+@@ -44957,9 +45203,21 @@ usb:v1737p0078*
+ usb:v1737p0079*
+  ID_MODEL_FROM_DATABASE=WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572]
++usb:v173D*
++ ID_VENDOR_FROM_DATABASE=QSENN
++
++usb:v173Dp0002*
++ ID_MODEL_FROM_DATABASE=GP-K7000 keyboard
++
+ usb:v1740*
+  ID_VENDOR_FROM_DATABASE=Senao
++usb:v1740p0100*
++ ID_MODEL_FROM_DATABASE=EUB1200AC AC1200 DB Wireless Adapter [Realtek RTL8812AU]
++
++usb:v1740p0600*
++ ID_MODEL_FROM_DATABASE=EUB600v1 802.11abgn Wireless Adapter [Ralink RT3572]
++
+ usb:v1740p0605*
+  ID_MODEL_FROM_DATABASE=LevelOne WUA-0605 N_Max Wireless USB Adapter
+@@ -45002,14 +45260,20 @@ usb:v1743*
+ usb:v1748*
+  ID_VENDOR_FROM_DATABASE=MQP Electronics
++usb:v1748p0101*
++ ID_MODEL_FROM_DATABASE=Packet-Master USB12
++
+ usb:v174C*
+  ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc.
+ usb:v174Cp5106*
+  ID_MODEL_FROM_DATABASE=Transcend StoreJet 25M3
++usb:v174Cp5136*
++ ID_MODEL_FROM_DATABASE=ASM1053 SATA 6Gb/s bridge
++
+ usb:v174Cp55AA*
+- ID_MODEL_FROM_DATABASE=ASMedia 2105 SATA bridge
++ ID_MODEL_FROM_DATABASE=ASM1051 SATA 3Gb/s bridge
+ usb:v174F*
+  ID_VENDOR_FROM_DATABASE=Syntek
+@@ -45137,6 +45401,9 @@ usb:v1781p0C31*
+ usb:v1781p0C9F*
+  ID_MODEL_FROM_DATABASE=USBtiny
++usb:v1781p1EEF*
++ ID_MODEL_FROM_DATABASE=OpenAPC SecuKey
++
+ usb:v1782*
+  ID_VENDOR_FROM_DATABASE=Spreadtrum Communications Inc.
+@@ -45206,6 +45473,9 @@ usb:v17A0p0100*
+ usb:v17A0p0101*
+  ID_MODEL_FROM_DATABASE=UB1 boundary microphone
++usb:v17A0p0120*
++ ID_MODEL_FROM_DATABASE=Meteorite condenser microphone
++
+ usb:v17A0p0200*
+  ID_MODEL_FROM_DATABASE=StudioDock monitors (internal hub)
+@@ -45221,6 +45491,9 @@ usb:v17A0p0301*
+ usb:v17A0p0302*
+  ID_MODEL_FROM_DATABASE=GoMic compact condenser microphone
++usb:v17A0p0303*
++ ID_MODEL_FROM_DATABASE=C01U Pro condenser microphone
++
+ usb:v17A0p0304*
+  ID_MODEL_FROM_DATABASE=Q2U handheld mic with XLR
+@@ -45371,6 +45644,9 @@ usb:v17E9p037C*
+ usb:v17E9p037D*
+  ID_MODEL_FROM_DATABASE=Plugable USB2-HDMI-165
++usb:v17E9p410A*
++ ID_MODEL_FROM_DATABASE=HDMI Adapter
++
+ usb:v17E9p430A*
+  ID_MODEL_FROM_DATABASE=HP Port Replicator (Composite Device)
+@@ -45383,6 +45659,9 @@ usb:v17EB*
+ usb:v17EF*
+  ID_VENDOR_FROM_DATABASE=Lenovo
++usb:v17EFp1000*
++ ID_MODEL_FROM_DATABASE=Hub
++
+ usb:v17EFp1003*
+  ID_MODEL_FROM_DATABASE=Integrated Smart Card Reader
+@@ -45395,6 +45674,9 @@ usb:v17EFp1008*
+ usb:v17EFp100A*
+  ID_MODEL_FROM_DATABASE=ThinkPad Mini Dock Plus Series 3
++usb:v17EFp304B*
++ ID_MODEL_FROM_DATABASE=AX88179 Gigabit Ethernet [ThinkPad OneLink GigaLAN]
++
+ usb:v17EFp3815*
+  ID_MODEL_FROM_DATABASE=ChipsBnk 2GB USB Stick
+@@ -45455,6 +45737,12 @@ usb:v17EFp6009*
+ usb:v17EFp6014*
+  ID_MODEL_FROM_DATABASE=Mini Wireless Keyboard N5901
++usb:v17EFp6025*
++ ID_MODEL_FROM_DATABASE=ThinkPad Travel Mouse
++
++usb:v17EFp7203*
++ ID_MODEL_FROM_DATABASE=Ethernet adapter [U2L 100P-Y1]
++
+ usb:v17EFp7423*
+  ID_MODEL_FROM_DATABASE=IdeaPad A1 Tablet
diff --git a/debian/patches/hwdb-update.patch b/debian/patches/hwdb-update.patch
new file mode 100644 (file)
index 0000000..e1522a8
--- /dev/null
@@ -0,0 +1,1628 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Sun, 20 Oct 2013 01:12:29 +0200
+Subject: hwdb: update
+
+---
+ hwdb/20-OUI.hwdb              | 391 +++++++++++++++++++++++++++++++++++++++++-
+ hwdb/20-pci-vendor-model.hwdb | 216 ++++++++++++++++++++---
+ 2 files changed, 578 insertions(+), 29 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index e913b28..5067167 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -12278,7 +12278,7 @@ OUI:40D85501B*
+  ID_OUI_FROM_DATABASE=Audio Enhancement
+ OUI:40D85501C*
+- ID_OUI_FROM_DATABASE=BERG
++ ID_OUI_FROM_DATABASE=BERG Cloud Limited
+ OUI:40D85501D*
+  ID_OUI_FROM_DATABASE=Scharco Elektronik GmbH
+@@ -13324,6 +13324,93 @@ OUI:40D85517B*
+ OUI:40D85517C*
+  ID_OUI_FROM_DATABASE=Critical Link
++OUI:40D85517D*
++ ID_OUI_FROM_DATABASE=Kiwigrid GmbH
++
++OUI:40D85517E*
++ ID_OUI_FROM_DATABASE=TOKHATEC
++
++OUI:40D85517F*
++ ID_OUI_FROM_DATABASE=Telvent
++
++OUI:40D855180*
++ ID_OUI_FROM_DATABASE=BroadSoft Inc
++
++OUI:40D855181*
++ ID_OUI_FROM_DATABASE=eROCCA
++
++OUI:40D855182*
++ ID_OUI_FROM_DATABASE=Georg Neumann GmbH
++
++OUI:40D855183*
++ ID_OUI_FROM_DATABASE=EMAC, Inc.
++
++OUI:40D855184*
++ ID_OUI_FROM_DATABASE=Satkirit Ltd
++
++OUI:40D855185*
++ ID_OUI_FROM_DATABASE=Standard Change Makers
++
++OUI:40D855186*
++ ID_OUI_FROM_DATABASE=KST technology
++
++OUI:40D855187*
++ ID_OUI_FROM_DATABASE=CDEX Corp.
++
++OUI:40D855188*
++ ID_OUI_FROM_DATABASE=Array Corporation
++
++OUI:40D855189*
++ ID_OUI_FROM_DATABASE=Yoozma Corporation
++
++OUI:40D85518A*
++ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
++
++OUI:40D85518B*
++ ID_OUI_FROM_DATABASE=Diagnosys Test Systems Ltd
++
++OUI:40D85518C*
++ ID_OUI_FROM_DATABASE=EOS S.r.l.
++
++OUI:40D85518D*
++ ID_OUI_FROM_DATABASE=Zoe Medical
++
++OUI:40D85518E*
++ ID_OUI_FROM_DATABASE=Kerun Visual Technology Co., Ltd.(Shenzhen)
++
++OUI:40D85518F*
++ ID_OUI_FROM_DATABASE=Beat Sensing co. , ltd.
++
++OUI:40D855190*
++ ID_OUI_FROM_DATABASE=Spider Tecnologia Ind. e Com Ltda
++
++OUI:40D855191*
++ ID_OUI_FROM_DATABASE=Soukai Electric
++
++OUI:40D855192*
++ ID_OUI_FROM_DATABASE=GENERAL DYNAMICS C4 SYSTEMS
++
++OUI:40D855193*
++ ID_OUI_FROM_DATABASE=FORZA SILICON CORP.
++
++OUI:40D855194*
++ ID_OUI_FROM_DATABASE=RF Code
++
++OUI:40D855195*
++ ID_OUI_FROM_DATABASE=TONNA ELECTRONIQUE
++
++OUI:40D855196*
++ ID_OUI_FROM_DATABASE=Advanced Micro Controls Inc.
++
++OUI:40D855197*
++ ID_OUI_FROM_DATABASE=Berg Cloud Limited
++
++OUI:40D855198*
++ ID_OUI_FROM_DATABASE=devboards GmbH
++
++OUI:40D855199*
++ ID_OUI_FROM_DATABASE=PRESSOL Schmiergeraete GmbH
++
+ OUI:000000*
+  ID_OUI_FROM_DATABASE=XEROX CORPORATION
+@@ -46883,7 +46970,7 @@ OUI:0080B7*
+  ID_OUI_FROM_DATABASE=STELLAR COMPUTER
+ OUI:0080B8*
+- ID_OUI_FROM_DATABASE=BUG, INCORPORATED
++ ID_OUI_FROM_DATABASE=B.U.G. MORISEIKI, INCORPORATED
+ OUI:0080B9*
+  ID_OUI_FROM_DATABASE=ARCHE TECHNOLIGIES INC.
+@@ -51589,6 +51676,9 @@ OUI:04F7E4*
+ OUI:04F8C2*
+  ID_OUI_FROM_DATABASE=Flaircomm Microelectronics, Inc.
++OUI:04F938*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:04FE31*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -52132,6 +52222,9 @@ OUI:08512E*
+ OUI:085240*
+  ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH
++OUI:085AE0*
++ ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd.
++
+ OUI:085B0E*
+  ID_OUI_FROM_DATABASE=Fortinet, Inc.
+@@ -52297,6 +52390,9 @@ OUI:08FC52*
+ OUI:08FC88*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:08FD0E*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:0C0400*
+  ID_OUI_FROM_DATABASE=Jantar d.o.o.
+@@ -52306,6 +52402,9 @@ OUI:0C0535*
+ OUI:0C1105*
+  ID_OUI_FROM_DATABASE=Ringslink (Xiamen) Network Communication Technologies Co., Ltd
++OUI:0C1262*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:0C130B*
+  ID_OUI_FROM_DATABASE=Uniqoteq Ltd.
+@@ -52366,6 +52465,9 @@ OUI:0C4DE9*
+ OUI:0C51F7*
+  ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX
++OUI:0C54A5*
++ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++
+ OUI:0C5521*
+  ID_OUI_FROM_DATABASE=Axiros GmbH
+@@ -52627,6 +52729,9 @@ OUI:100D7F*
+ OUI:100E2B*
+  ID_OUI_FROM_DATABASE=NEC CASIO Mobile Communications
++OUI:100E7E*
++ ID_OUI_FROM_DATABASE=Juniper networks
++
+ OUI:1010B6*
+  ID_OUI_FROM_DATABASE=McCain Inc
+@@ -53023,6 +53128,9 @@ OUI:149090*
+ OUI:149448*
+  ID_OUI_FROM_DATABASE=BLU CASTLE S.A.
++OUI:1499E2*
++ ID_OUI_FROM_DATABASE=Apple, Inc
++
+ OUI:149FE8*
+  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
+@@ -53095,6 +53203,9 @@ OUI:14EE9D*
+ OUI:14F0C5*
+  ID_OUI_FROM_DATABASE=Xtremio Ltd.
++OUI:14F28E*
++ ID_OUI_FROM_DATABASE=ShenYang ZhongKe-Allwin Technology Co.LTD
++
+ OUI:14F42A*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+@@ -53257,6 +53368,9 @@ OUI:1867B0*
+ OUI:186D99*
+  ID_OUI_FROM_DATABASE=Adanis Inc.
++OUI:1879A2*
++ ID_OUI_FROM_DATABASE=GMJ ELECTRIC LIMITED
++
+ OUI:187A93*
+  ID_OUI_FROM_DATABASE=AMICCOM Electronics Corporation
+@@ -53440,6 +53554,9 @@ OUI:1C19DE*
+ OUI:1C1D67*
+  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
++OUI:1C1D86*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:1C334D*
+  ID_OUI_FROM_DATABASE=ITS Telecom
+@@ -53803,6 +53920,9 @@ OUI:20858C*
+ OUI:208984*
+  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD
++OUI:208986*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:20918A*
+  ID_OUI_FROM_DATABASE=PROFALUX
+@@ -53929,6 +54049,9 @@ OUI:20FEDB*
+ OUI:2401C7*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:24050F*
++ ID_OUI_FROM_DATABASE=MTN Electronic Co. Ltd
++
+ OUI:240917*
+  ID_OUI_FROM_DATABASE=Devlin Electronics Limited
+@@ -54034,6 +54157,9 @@ OUI:249442*
+ OUI:249504*
+  ID_OUI_FROM_DATABASE=SFR
++OUI:24A2E1*
++ ID_OUI_FROM_DATABASE=Apple, Inc
++
+ OUI:24A42C*
+  ID_OUI_FROM_DATABASE=KOUKAAM a.s.
+@@ -54043,6 +54169,9 @@ OUI:24A43C*
+ OUI:24A495*
+  ID_OUI_FROM_DATABASE=Thales Canada Inc.
++OUI:24A87D*
++ ID_OUI_FROM_DATABASE=Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd.
++
+ OUI:24A937*
+  ID_OUI_FROM_DATABASE=PURE Storage
+@@ -54121,6 +54250,9 @@ OUI:24DBAC*
+ OUI:24DBAD*
+  ID_OUI_FROM_DATABASE=ShopperTrak RCT Corporation
++OUI:24DBED*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:24DEC6*
+  ID_OUI_FROM_DATABASE=Aruba Networks
+@@ -54130,6 +54262,9 @@ OUI:24E271*
+ OUI:24E6BA*
+  ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky
++OUI:24E9B3*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:24EA40*
+  ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH
+@@ -54547,6 +54682,9 @@ OUI:2C553C*
+ OUI:2C59E5*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:2C5A05*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:2C5AA3*
+  ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD
+@@ -54940,6 +55078,9 @@ OUI:3407FB*
+ OUI:340804*
+  ID_OUI_FROM_DATABASE=D-Link Corporation
++OUI:3413A8*
++ ID_OUI_FROM_DATABASE=Mediplan Limited
++
+ OUI:3413E8*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -55321,6 +55462,9 @@ OUI:386E21*
+ OUI:3872C0*
+  ID_OUI_FROM_DATABASE=COMTREND
++OUI:387B47*
++ ID_OUI_FROM_DATABASE=AKELA, Inc.
++
+ OUI:388345*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
+@@ -55390,6 +55534,9 @@ OUI:38C7BA*
+ OUI:38C85C*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
++OUI:38C9A9*
++ ID_OUI_FROM_DATABASE=SMART High Reliability Solutions, Inc.
++
+ OUI:38CA97*
+  ID_OUI_FROM_DATABASE=Contour Design LLC
+@@ -55459,6 +55606,9 @@ OUI:3C081E*
+ OUI:3C096D*
+  ID_OUI_FROM_DATABASE=Powerhouse Dynamics
++OUI:3C0E23*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:3C0FC1*
+  ID_OUI_FROM_DATABASE=KBC Networks
+@@ -55507,6 +55657,9 @@ OUI:3C300C*
+ OUI:3C363D*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
++OUI:3C36E4*
++ ID_OUI_FROM_DATABASE=Arris Group, Inc.
++
+ OUI:3C3888*
+  ID_OUI_FROM_DATABASE=ConnectQuest, llc
+@@ -55672,6 +55825,9 @@ OUI:3CD0F8*
+ OUI:3CD16E*
+  ID_OUI_FROM_DATABASE=Telepower Communication Co., Ltd
++OUI:3CD4D6*
++ ID_OUI_FROM_DATABASE=WirelessWERX, Inc
++
+ OUI:3CD7DA*
+  ID_OUI_FROM_DATABASE=SK Mtek microelectronics(shenzhen)limited
+@@ -55771,6 +55927,9 @@ OUI:402CF4*
+ OUI:403004*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:403067*
++ ID_OUI_FROM_DATABASE=Conlog (Pty) Ltd
++
+ OUI:40336C*
+  ID_OUI_FROM_DATABASE=Godrej & Boyce Mfg. co. ltd
+@@ -55918,6 +56077,9 @@ OUI:40B3FC*
+ OUI:40B4F0*
+  ID_OUI_FROM_DATABASE=Juniper Networks
++OUI:40B6B1*
++ ID_OUI_FROM_DATABASE=SUNGSAM CO,.Ltd
++
+ OUI:40B7F3*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -55972,6 +56134,9 @@ OUI:40ECF8*
+ OUI:40EF4C*
+  ID_OUI_FROM_DATABASE=Fihonest communication co.,Ltd
++OUI:40F02F*
++ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
++
+ OUI:40F14C*
+  ID_OUI_FROM_DATABASE=ISE Europe SPRL
+@@ -56203,6 +56368,12 @@ OUI:44C233*
+ OUI:44C39B*
+  ID_OUI_FROM_DATABASE=OOO RUBEZH NPO
++OUI:44C4A9*
++ ID_OUI_FROM_DATABASE=Opticom Communication, LLC
++
++OUI:44C56F*
++ ID_OUI_FROM_DATABASE=NGN Easy Satfinder (Tianjin) Electronic Co., Ltd
++
+ OUI:44C9A2*
+  ID_OUI_FROM_DATABASE=Greenwald Industries
+@@ -56362,6 +56533,9 @@ OUI:48B253*
+ OUI:48B8DE*
+  ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD.
++OUI:48B977*
++ ID_OUI_FROM_DATABASE=PulseOn Oy
++
+ OUI:48B9C2*
+  ID_OUI_FROM_DATABASE=Teletics Inc.
+@@ -56659,9 +56833,15 @@ OUI:4CCC34*
+ OUI:4CD637*
+  ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd
++OUI:4CD9C4*
++ ID_OUI_FROM_DATABASE=Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd
++
+ OUI:4CDF3D*
+  ID_OUI_FROM_DATABASE=TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD
++OUI:4CE1BB*
++ ID_OUI_FROM_DATABASE=Zhuhai HiFocus Technology Co., Ltd.
++
+ OUI:4CE676*
+  ID_OUI_FROM_DATABASE=Buffalo Inc.
+@@ -56701,6 +56881,9 @@ OUI:5011EB*
+ OUI:5017FF*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:501AC5*
++ ID_OUI_FROM_DATABASE=Microsoft
++
+ OUI:50206B*
+  ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions
+@@ -56812,6 +56995,9 @@ OUI:507D02*
+ OUI:507E5D*
+  ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
++OUI:508569*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
++
+ OUI:5087B8*
+  ID_OUI_FROM_DATABASE=Nuvyyo Inc
+@@ -56995,6 +57181,9 @@ OUI:5435DF*
+ OUI:543968*
+  ID_OUI_FROM_DATABASE=Edgewater Networks Inc
++OUI:5439DF*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:543D37*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
+@@ -57055,6 +57244,9 @@ OUI:5481AD*
+ OUI:54847B*
+  ID_OUI_FROM_DATABASE=Digital Devices GmbH
++OUI:54880E*
++ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD.
++
+ OUI:548922*
+  ID_OUI_FROM_DATABASE=Zelfy Inc
+@@ -57439,6 +57631,9 @@ OUI:5C2479*
+ OUI:5C260A*
+  ID_OUI_FROM_DATABASE=Dell Inc.
++OUI:5C2AEF*
++ ID_OUI_FROM_DATABASE=Open Access Pty Ltd
++
+ OUI:5C3327*
+  ID_OUI_FROM_DATABASE=Spazio Italia srl
+@@ -57547,6 +57742,9 @@ OUI:5CA39D*
+ OUI:5CA3EB*
+  ID_OUI_FROM_DATABASE=Lokel s.r.o.
++OUI:5CA48A*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:5CAC4C*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -58228,6 +58426,9 @@ OUI:64E161*
+ OUI:64E599*
+  ID_OUI_FROM_DATABASE=EFM Networks
++OUI:64E625*
++ ID_OUI_FROM_DATABASE=Woxu Wireless Co., Ltd
++
+ OUI:64E682*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -58318,6 +58519,9 @@ OUI:683EEC*
+ OUI:684352*
+  ID_OUI_FROM_DATABASE=Bhuu Limited
++OUI:684898*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:684B88*
+  ID_OUI_FROM_DATABASE=Galtronics Telemetry Inc.
+@@ -58573,6 +58777,9 @@ OUI:6C3A84*
+ OUI:6C3BE5*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
++OUI:6C3C53*
++ ID_OUI_FROM_DATABASE=SoundHawk Corp
++
+ OUI:6C3E6D*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -58912,6 +59119,9 @@ OUI:706582*
+ OUI:70704C*
+  ID_OUI_FROM_DATABASE=Purple Communications, Inc
++OUI:7071B3*
++ ID_OUI_FROM_DATABASE=Brain Corporation
++
+ OUI:7071BC*
+  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+@@ -58936,6 +59146,9 @@ OUI:7076F0*
+ OUI:707BE8*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:707C18*
++ ID_OUI_FROM_DATABASE=ADATA Technology Co., Ltd
++
+ OUI:707E43*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+@@ -59128,6 +59341,9 @@ OUI:74372F*
+ OUI:743889*
+  ID_OUI_FROM_DATABASE=ANNAX Anzeigesysteme GmbH
++OUI:743ECB*
++ ID_OUI_FROM_DATABASE=Gentrice tech
++
+ OUI:744401*
+  ID_OUI_FROM_DATABASE=NETGEAR
+@@ -59533,6 +59749,9 @@ OUI:78A6BD*
+ OUI:78A714*
+  ID_OUI_FROM_DATABASE=Amphenol
++OUI:78A873*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:78AB60*
+  ID_OUI_FROM_DATABASE=ABB Australia
+@@ -59644,6 +59863,9 @@ OUI:78E8B6*
+ OUI:78EC22*
+  ID_OUI_FROM_DATABASE=Shanghai Qihui Telecom Technology Co., LTD
++OUI:78EC74*
++ ID_OUI_FROM_DATABASE=Kyland-USA
++
+ OUI:78EF4C*
+  ID_OUI_FROM_DATABASE=Unetconvergence Co., Ltd.
+@@ -59749,6 +59971,9 @@ OUI:7C3E9D*
+ OUI:7C438F*
+  ID_OUI_FROM_DATABASE=E-Band Communications Corp.
++OUI:7C444C*
++ ID_OUI_FROM_DATABASE=Entertainment Solutions, S.L.
++
+ OUI:7C49B9*
+  ID_OUI_FROM_DATABASE=Plexus Manufacturing Sdn Bhd
+@@ -59911,6 +60136,9 @@ OUI:7CC8D7*
+ OUI:7CCB0D*
+  ID_OUI_FROM_DATABASE=Antaira Technologies, LLC
++OUI:7CCD11*
++ ID_OUI_FROM_DATABASE=MS-Magnet
++
+ OUI:7CCD3C*
+  ID_OUI_FROM_DATABASE=Guangzhou Juzing Technology Co., Ltd
+@@ -60181,6 +60409,9 @@ OUI:80B95C*
+ OUI:80BAAC*
+  ID_OUI_FROM_DATABASE=TeleAdapt Ltd
++OUI:80BAE6*
++ ID_OUI_FROM_DATABASE=Neets
++
+ OUI:80BBEB*
+  ID_OUI_FROM_DATABASE=Satmap Systems Ltd
+@@ -60373,6 +60604,9 @@ OUI:847E40*
+ OUI:8482F4*
+  ID_OUI_FROM_DATABASE=Beijing Huasun Unicreate Technology Co., Ltd
++OUI:848336*
++ ID_OUI_FROM_DATABASE=Newrun
++
+ OUI:848371*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
+@@ -60475,6 +60709,9 @@ OUI:84F64C*
+ OUI:84FCFE*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:84FE9E*
++ ID_OUI_FROM_DATABASE=RTC Industries, Inc.
++
+ OUI:880355*
+  ID_OUI_FROM_DATABASE=Arcadyan Technology Corp.
+@@ -60634,6 +60871,9 @@ OUI:889821*
+ OUI:889B39*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:889CA6*
++ ID_OUI_FROM_DATABASE=BTB Korea INC
++
+ OUI:889FFA*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -60664,6 +60904,9 @@ OUI:88BFD5*
+ OUI:88C36E*
+  ID_OUI_FROM_DATABASE=Beijing Ereneben lnformation Technology Limited
++OUI:88C626*
++ ID_OUI_FROM_DATABASE=Logitech - Ultimate Ears
++
+ OUI:88C663*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -60760,6 +61003,9 @@ OUI:8C2F39*
+ OUI:8C3330*
+  ID_OUI_FROM_DATABASE=EmFirst Co., Ltd.
++OUI:8C3AE3*
++ ID_OUI_FROM_DATABASE=LG Electronics
++
+ OUI:8C3C07*
+  ID_OUI_FROM_DATABASE=Skiva Technologies, Inc.
+@@ -60778,6 +61024,9 @@ OUI:8C4B59*
+ OUI:8C4CDC*
+  ID_OUI_FROM_DATABASE=PLANEX COMMUNICATIONS INC.
++OUI:8C4DB9*
++ ID_OUI_FROM_DATABASE=Unmonday Ltd
++
+ OUI:8C4DEA*
+  ID_OUI_FROM_DATABASE=Cerio Corporation
+@@ -60790,6 +61039,9 @@ OUI:8C53F7*
+ OUI:8C541D*
+  ID_OUI_FROM_DATABASE=LGE
++OUI:8C569D*
++ ID_OUI_FROM_DATABASE=Imaging Solutions Group
++
+ OUI:8C56C5*
+  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
+@@ -60943,6 +61195,9 @@ OUI:8CDD8D*
+ OUI:8CDE52*
+  ID_OUI_FROM_DATABASE=ISSC Technologies Corp.
++OUI:8CDE99*
++ ID_OUI_FROM_DATABASE=Comlab Inc.
++
+ OUI:8CE081*
+  ID_OUI_FROM_DATABASE=zte corporation
+@@ -61138,6 +61393,9 @@ OUI:907F61*
+ OUI:908260*
+  ID_OUI_FROM_DATABASE=IEEE 1904.1 Working Group
++OUI:90837A*
++ ID_OUI_FROM_DATABASE=General Electric Water & Process Technologies
++
+ OUI:90840D*
+  ID_OUI_FROM_DATABASE=Apple
+@@ -61204,6 +61462,9 @@ OUI:90B21F*
+ OUI:90B8D0*
+  ID_OUI_FROM_DATABASE=Joyent, Inc.
++OUI:90B931*
++ ID_OUI_FROM_DATABASE=Apple, Inc
++
+ OUI:90B97D*
+  ID_OUI_FROM_DATABASE=Johnson Outdoors Marine Electronics d/b/a Minnkota
+@@ -61543,6 +61804,9 @@ OUI:94F720*
+ OUI:94FAE8*
+  ID_OUI_FROM_DATABASE=Shenzhen Eycom Technology Co., Ltd
++OUI:94FBB2*
++ ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
++
+ OUI:94FD1D*
+  ID_OUI_FROM_DATABASE=WhereWhen Corp
+@@ -61747,6 +62011,9 @@ OUI:98D6F7*
+ OUI:98D88C*
+  ID_OUI_FROM_DATABASE=Nortel Networks
++OUI:98DA92*
++ ID_OUI_FROM_DATABASE=Vuzix Corporation
++
+ OUI:98DCD9*
+  ID_OUI_FROM_DATABASE=UNITEC Co., Ltd.
+@@ -61780,6 +62047,9 @@ OUI:98FE03*
+ OUI:98FE94*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:98FF6A*
++ ID_OUI_FROM_DATABASE=OTEC(Shanghai)Technology Co.,Ltd.
++
+ OUI:98FFD0*
+  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
+@@ -61849,6 +62119,9 @@ OUI:9C417C*
+ OUI:9C443D*
+  ID_OUI_FROM_DATABASE=CHENGDU XUGUANG TECHNOLOGY CO, LTD
++OUI:9C44A6*
++ ID_OUI_FROM_DATABASE=SwiftTest, Inc.
++
+ OUI:9C4563*
+  ID_OUI_FROM_DATABASE=DIMEP Sistemas
+@@ -61927,6 +62200,9 @@ OUI:9C7BD2*
+ OUI:9C807D*
+  ID_OUI_FROM_DATABASE=SYSCABLE Korea Inc.
++OUI:9C80DF*
++ ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
++
+ OUI:9C8888*
+  ID_OUI_FROM_DATABASE=Simac Techniek NV
+@@ -62098,6 +62374,9 @@ OUI:A01917*
+ OUI:A01C05*
+  ID_OUI_FROM_DATABASE=NIMAX TELECOM CO.,LTD.
++OUI:A01D48*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:A02195*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Digital Imaging
+@@ -62416,6 +62695,9 @@ OUI:A433D1*
+ OUI:A438FC*
+  ID_OUI_FROM_DATABASE=Plastic Logic
++OUI:A43A69*
++ ID_OUI_FROM_DATABASE=Vers Inc
++
+ OUI:A4466B*
+  ID_OUI_FROM_DATABASE=EOC Technology
+@@ -62461,6 +62743,9 @@ OUI:A46706*
+ OUI:A46E79*
+  ID_OUI_FROM_DATABASE=DFT System Co.Ltd
++OUI:A47733*
++ ID_OUI_FROM_DATABASE=Google
++
+ OUI:A47760*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -62911,6 +63196,9 @@ OUI:AC20AA*
+ OUI:AC220B*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++OUI:AC2DA3*
++ ID_OUI_FROM_DATABASE=TXTR GmbH
++
+ OUI:AC2FA8*
+  ID_OUI_FROM_DATABASE=Humannix Co.,Ltd.
+@@ -62986,6 +63274,9 @@ OUI:AC6123*
+ OUI:AC6706*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
++OUI:AC6BAC*
++ ID_OUI_FROM_DATABASE=Jenny Science AG
++
+ OUI:AC6E1A*
+  ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
+@@ -63085,6 +63376,9 @@ OUI:ACBEB6*
+ OUI:ACC2EC*
+  ID_OUI_FROM_DATABASE=CLT INT'L IND. CORP.
++OUI:ACC595*
++ ID_OUI_FROM_DATABASE=Graphite Systems
++
+ OUI:ACC698*
+  ID_OUI_FROM_DATABASE=Kohzu Precision Co., Ltd.
+@@ -63172,6 +63466,9 @@ OUI:ACF7F3*
+ OUI:ACF97E*
+  ID_OUI_FROM_DATABASE=ELESYS INC.
++OUI:ACFDEC*
++ ID_OUI_FROM_DATABASE=Apple, Inc
++
+ OUI:B00594*
+  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
+@@ -63193,6 +63490,9 @@ OUI:B01B7C*
+ OUI:B01C91*
+  ID_OUI_FROM_DATABASE=Elim Co
++OUI:B024F3*
++ ID_OUI_FROM_DATABASE=Progeny Systems
++
+ OUI:B0358D*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+@@ -63286,6 +63586,9 @@ OUI:B09134*
+ OUI:B0973A*
+  ID_OUI_FROM_DATABASE=E-Fuel Corporation
++OUI:B0989F*
++ ID_OUI_FROM_DATABASE=LG CNS
++
+ OUI:B09928*
+  ID_OUI_FROM_DATABASE=Fujitsu Limited
+@@ -63313,6 +63616,9 @@ OUI:B0AA36*
+ OUI:B0ACFA*
+  ID_OUI_FROM_DATABASE=Fujitsu Limited
++OUI:B0ADAA*
++ ID_OUI_FROM_DATABASE=Avaya, Inc
++
+ OUI:B0B2DC*
+  ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
+@@ -63364,6 +63670,9 @@ OUI:B0D09C*
+ OUI:B0D2F5*
+  ID_OUI_FROM_DATABASE=Vello Systems, Inc.
++OUI:B0D7C5*
++ ID_OUI_FROM_DATABASE=STP KFT
++
+ OUI:B0DF3A*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -63466,6 +63775,9 @@ OUI:B43741*
+ OUI:B439D6*
+  ID_OUI_FROM_DATABASE=ProCurve Networking by HP
++OUI:B43A28*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:B43DB2*
+  ID_OUI_FROM_DATABASE=Degreane Horizon
+@@ -63784,6 +64096,9 @@ OUI:B8782E*
+ OUI:B8797E*
+  ID_OUI_FROM_DATABASE=Secure Meters (UK) Limited
++OUI:B87AC9*
++ ID_OUI_FROM_DATABASE=Siemens Ltd.
++
+ OUI:B8871E*
+  ID_OUI_FROM_DATABASE=Good Mind Industries Co., Ltd.
+@@ -63823,6 +64138,9 @@ OUI:B8975A*
+ OUI:B898B0*
+  ID_OUI_FROM_DATABASE=Atlona Inc.
++OUI:B898F7*
++ ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen
++
+ OUI:B89AED*
+  ID_OUI_FROM_DATABASE=OceanServer Technology, Inc
+@@ -63985,12 +64303,18 @@ OUI:BC125E*
+ OUI:BC1401*
+  ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
++OUI:BC14EF*
++ ID_OUI_FROM_DATABASE=ITON Technology Limited
++
+ OUI:BC15A6*
+  ID_OUI_FROM_DATABASE=Taiwan Jantek Electronics,Ltd.
+ OUI:BC1665*
+  ID_OUI_FROM_DATABASE=Cisco
++OUI:BC1A67*
++ ID_OUI_FROM_DATABASE=YF Technology Co., Ltd
++
+ OUI:BC20A4*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+@@ -64021,6 +64345,9 @@ OUI:BC2D98*
+ OUI:BC305B*
+  ID_OUI_FROM_DATABASE=Dell Inc.
++OUI:BC307D*
++ ID_OUI_FROM_DATABASE=Wistron Neweb Corp.
++
+ OUI:BC35E5*
+  ID_OUI_FROM_DATABASE=Hydro Systems Company
+@@ -64207,6 +64534,9 @@ OUI:BCE59F*
+ OUI:BCEA2B*
+  ID_OUI_FROM_DATABASE=CityCom GmbH
++OUI:BCEE7B*
++ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
++
+ OUI:BCF2AF*
+  ID_OUI_FROM_DATABASE=devolo AG
+@@ -64324,6 +64654,9 @@ OUI:C0626B*
+ OUI:C06394*
+  ID_OUI_FROM_DATABASE=Apple
++OUI:C064C6*
++ ID_OUI_FROM_DATABASE=Nokia Corporation
++
+ OUI:C06599*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+@@ -64462,6 +64795,9 @@ OUI:C0E54E*
+ OUI:C0EAE4*
+  ID_OUI_FROM_DATABASE=Sonicwall
++OUI:C0F1C4*
++ ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd.
++
+ OUI:C0F8DA*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+@@ -64642,6 +64978,9 @@ OUI:C47F51*
+ OUI:C4823F*
+  ID_OUI_FROM_DATABASE=Fujian Newland Auto-ID Tech. Co,.Ltd.
++OUI:C4824E*
++ ID_OUI_FROM_DATABASE=Changzhou Uchip Electronics Co., LTD.
++
+ OUI:C48508*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+@@ -65005,6 +65344,9 @@ OUI:C8F386*
+ OUI:C8F406*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
++OUI:C8F68D*
++ ID_OUI_FROM_DATABASE=S.E.TECHNOLOGIES LIMITED
++
+ OUI:C8F704*
+  ID_OUI_FROM_DATABASE=Building Block Video
+@@ -65143,6 +65485,9 @@ OUI:CC5D57*
+ OUI:CC60BB*
+  ID_OUI_FROM_DATABASE=Empower RF Systems
++OUI:CC65AD*
++ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
++
+ OUI:CC69B0*
+  ID_OUI_FROM_DATABASE=Global Traffic Technologies, LLC
+@@ -65533,6 +65878,9 @@ OUI:D0DFB2*
+ OUI:D0DFC7*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++OUI:D0E140*
++ ID_OUI_FROM_DATABASE=Apple, Inc
++
+ OUI:D0E347*
+  ID_OUI_FROM_DATABASE=Yoga
+@@ -65716,6 +66064,9 @@ OUI:D479C3*
+ OUI:D47B75*
+  ID_OUI_FROM_DATABASE=HARTING Electronics GmbH
++OUI:D481CA*
++ ID_OUI_FROM_DATABASE=iDevices, LLC
++
+ OUI:D4823E*
+  ID_OUI_FROM_DATABASE=Argosy Technologies, Ltd.
+@@ -65965,6 +66316,9 @@ OUI:D8543A*
+ OUI:D857EF*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
++OUI:D858D7*
++ ID_OUI_FROM_DATABASE=CZ.NIC, z.s.p.o.
++
+ OUI:D85D4C*
+  ID_OUI_FROM_DATABASE=TP-LINK Technologies Co.,Ltd.
+@@ -66004,6 +66358,9 @@ OUI:D878E5*
+ OUI:D87988*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
++OUI:D87CDD*
++ ID_OUI_FROM_DATABASE=SANIX INCORPORATED
++
+ OUI:D88A3B*
+  ID_OUI_FROM_DATABASE=UNIT-EM
+@@ -66475,6 +66832,9 @@ OUI:E067B3*
+ OUI:E06995*
+  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++OUI:E0750A*
++ ID_OUI_FROM_DATABASE=ALPS ERECTORIC CO.,LTD.
++
+ OUI:E0757D*
+  ID_OUI_FROM_DATABASE=Motorola Mobility LLC
+@@ -66577,6 +66937,9 @@ OUI:E0C6B3*
+ OUI:E0C79D*
+  ID_OUI_FROM_DATABASE=Texas Instruments
++OUI:E0C86A*
++ ID_OUI_FROM_DATABASE=SHENZHEN TW-SCIE Co., Ltd
++
+ OUI:E0C922*
+  ID_OUI_FROM_DATABASE=Jireh Energy Tech., Ltd.
+@@ -66661,6 +67024,9 @@ OUI:E0F9BE*
+ OUI:E0FAEC*
+  ID_OUI_FROM_DATABASE=Platan sp. z o.o. sp. k.
++OUI:E40439*
++ ID_OUI_FROM_DATABASE=TomTom Software Ltd
++
+ OUI:E4115B*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+@@ -66997,6 +67363,9 @@ OUI:E85E53*
+ OUI:E8611F*
+  ID_OUI_FROM_DATABASE=Dawning Information Industry Co.,Ltd
++OUI:E86183*
++ ID_OUI_FROM_DATABASE=Black Diamond Advanced Technology, LLC
++
+ OUI:E86CDA*
+  ID_OUI_FROM_DATABASE=Supercomputers and Neurocomputers Research Center
+@@ -67435,6 +67804,9 @@ OUI:F02408*
+ OUI:F02572*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
++OUI:F025B7*
++ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD.
++
+ OUI:F0264C*
+  ID_OUI_FROM_DATABASE=Dr. Sigrist AG
+@@ -67486,6 +67858,9 @@ OUI:F05DC8*
+ OUI:F05F5A*
+  ID_OUI_FROM_DATABASE=Getriebebau NORD GmbH and Co. KG
++OUI:F06130*
++ ID_OUI_FROM_DATABASE=Advantage Pharmacy Services, LLC
++
+ OUI:F0620D*
+  ID_OUI_FROM_DATABASE=Shenzhen Egreat Tech Corp.,Ltd
+@@ -67681,6 +68056,9 @@ OUI:F40321*
+ OUI:F4044C*
+  ID_OUI_FROM_DATABASE=ValenceTech Limited
++OUI:F4068D*
++ ID_OUI_FROM_DATABASE=devolo AG
++
+ OUI:F40B93*
+  ID_OUI_FROM_DATABASE=Research In Motion
+@@ -68107,6 +68485,9 @@ OUI:F89FB8*
+ OUI:F8A03D*
+  ID_OUI_FROM_DATABASE=Dinstar Technologies Co., Ltd.
++OUI:F8A2B4*
++ ID_OUI_FROM_DATABASE=RHEWA-WAAGENFABRIK August Freudewald GmbH &amp;Co. KG
++
+ OUI:F8A45F*
+  ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
+@@ -68245,6 +68626,9 @@ OUI:FC0647*
+ OUI:FC0877*
+  ID_OUI_FROM_DATABASE=Prentke Romich Company
++OUI:FC09D8*
++ ID_OUI_FROM_DATABASE=ACTEON Group
++
+ OUI:FC0A81*
+  ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
+@@ -68314,6 +68698,9 @@ OUI:FC455F*
+ OUI:FC48EF*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++OUI:FC4B1C*
++ ID_OUI_FROM_DATABASE=INTERSENSOR S.R.L.
++
+ OUI:FC4BBC*
+  ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd.
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index fdb534d..289f81c 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -4158,7 +4158,7 @@ pci:v00001002d00005F57*
+  ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT]
+ pci:v00001002d00006600*
+- ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8750M]
++ ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8670M/8750M]
+ pci:v00001002d00006601*
+  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M]
+@@ -4169,6 +4169,12 @@ pci:v00001002d00006602*
+ pci:v00001002d00006603*
+  ID_MODEL_FROM_DATABASE=Mars
++pci:v00001002d00006604*
++ ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M265]
++
++pci:v00001002d00006605*
++ ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M260]
++
+ pci:v00001002d00006606*
+  ID_MODEL_FROM_DATABASE=Mars XTX [Radeon HD 8790M]
+@@ -4176,13 +4182,13 @@ pci:v00001002d00006607*
+  ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M]
+ pci:v00001002d00006610*
+- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8600 Series]
++ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670/R7 250]
+ pci:v00001002d00006611*
+  ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570]
+ pci:v00001002d00006613*
+- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8500 Series]
++ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240]
+ pci:v00001002d00006620*
+  ID_MODEL_FROM_DATABASE=Mars
+@@ -4197,10 +4203,10 @@ pci:v00001002d00006631*
+  ID_MODEL_FROM_DATABASE=Oland
+ pci:v00001002d00006640*
+- ID_MODEL_FROM_DATABASE=Saturn [Radeon HD 8950]
++ ID_MODEL_FROM_DATABASE=Saturn XT [Radeon HD 8950M]
+ pci:v00001002d00006641*
+- ID_MODEL_FROM_DATABASE=Saturn PRO
++ ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M]
+ pci:v00001002d00006649*
+  ID_MODEL_FROM_DATABASE=Bonaire
+@@ -4236,13 +4242,13 @@ pci:v00001002d0000665Csv00001787sd00002329*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo
+ pci:v00001002d0000665D*
+- ID_MODEL_FROM_DATABASE=Bonaire
++ ID_MODEL_FROM_DATABASE=Bonaire [Radeon R7 200 Series]
+ pci:v00001002d00006660*
+- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A]
++ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M]
+ pci:v00001002d00006663*
+- ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8500M Series]
++ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570M]
+ pci:v00001002d00006664*
+  ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series]
+@@ -4254,7 +4260,7 @@ pci:v00001002d00006667*
+  ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M200 Series]
+ pci:v00001002d0000666F*
+- ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8500M]
++ ID_MODEL_FROM_DATABASE=Sun LE [Radeon HD 8550M]
+ pci:v00001002d00006670*
+  ID_MODEL_FROM_DATABASE=Hainan
+@@ -5675,6 +5681,15 @@ pci:v00001002d0000678Asv00001002sd0000030C*
+ pci:v00001002d0000678Asv00001002sd00000310*
+  ID_MODEL_FROM_DATABASE=FirePro S9000
++pci:v00001002d0000678Asv00001002sd00000420*
++ ID_MODEL_FROM_DATABASE=Radeon Sky 700
++
++pci:v00001002d0000678Asv00001002sd00000422*
++ ID_MODEL_FROM_DATABASE=Radeon Sky 900
++
++pci:v00001002d0000678Asv00001002sd00000B0E*
++ ID_MODEL_FROM_DATABASE=FirePro S10000 Passive
++
+ pci:v00001002d0000678Asv00001002sd00000B2A*
+  ID_MODEL_FROM_DATABASE=FirePro S10000
+@@ -5691,11 +5706,14 @@ pci:v00001002d00006792*
+  ID_MODEL_FROM_DATABASE=Tahiti
+ pci:v00001002d00006798*
+- ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970]
++ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/R9 280X]
+ pci:v00001002d00006798sv00001002sd00003000*
+  ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition]
++pci:v00001002d00006798sv00001002sd00003001*
++ ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X]
++
+ pci:v00001002d00006798sv00001002sd00004000*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8970 OEM
+@@ -5717,6 +5735,12 @@ pci:v00001002d00006798sv00001043sd0000044A*
+ pci:v00001002d00006798sv00001043sd0000044C*
+  ID_MODEL_FROM_DATABASE=Tahiti XT2 [Matrix HD 7970 Platinum]
++pci:v00001002d00006798sv00001043sd00003001*
++ ID_MODEL_FROM_DATABASE=Tahiti XTL [ROG Matrix R9 280X]
++
++pci:v00001002d00006798sv00001043sd00003006*
++ ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X DirectCU II TOP]
++
+ pci:v00001002d00006798sv00001043sd00009999*
+  ID_MODEL_FROM_DATABASE=ARES II
+@@ -5771,6 +5795,9 @@ pci:v00001002d0000679Bsv00001002sd00000B2A*
+ pci:v00001002d0000679Bsv00001462sd00008036*
+  ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
++pci:v00001002d0000679Bsv0000148Csd00008990*
++ ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
++
+ pci:v00001002d0000679E*
+  ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT]
+@@ -5834,6 +5861,9 @@ pci:v00001002d00006808*
+ pci:v00001002d00006808sv00001002sd00000310*
+  ID_MODEL_FROM_DATABASE=FirePro S7000
++pci:v00001002d00006808sv00001002sd00000420*
++ ID_MODEL_FROM_DATABASE=Radeon Sky 500
++
+ pci:v00001002d00006809*
+  ID_MODEL_FROM_DATABASE=Pitcairn LE GL [FirePro W5000]
+@@ -5865,19 +5895,22 @@ pci:v00001002d00006819sv0000174Bsd0000E221*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP
+ pci:v00001002d00006820*
+- ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series]
++ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M]
+ pci:v00001002d00006820sv0000103Csd00001851*
+  ID_MODEL_FROM_DATABASE=Radeon HD 7750M
+ pci:v00001002d00006821*
+- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8800M Series]
++ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M]
++
++pci:v00001002d00006821sv00001002sd0000031E*
++ ID_MODEL_FROM_DATABASE=FirePro SX4000
+ pci:v00001002d00006822*
+  ID_MODEL_FROM_DATABASE=Venus PRO
+ pci:v00001002d00006823*
+- ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8800M Series]
++ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M]
+ pci:v00001002d00006825*
+  ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M]
+@@ -5901,7 +5934,7 @@ pci:v00001002d0000682A*
+  ID_MODEL_FROM_DATABASE=Venus PRO
+ pci:v00001002d0000682B*
+- ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8800M Series]
++ ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8830M]
+ pci:v00001002d0000682D*
+  ID_MODEL_FROM_DATABASE=Chelsea XT GL [FirePro M4000]
+@@ -5919,7 +5952,7 @@ pci:v00001002d00006831*
+  ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series]
+ pci:v00001002d00006835*
+- ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 200 Series]
++ ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 260]
+ pci:v00001002d00006837*
+  ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730]
+@@ -16466,6 +16499,12 @@ pci:v00001077d00008031*
+ pci:v00001077d00008032*
+  ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI)
++pci:v00001077d00008430*
++ ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (NIC VF)
++
++pci:v00001077d00008431*
++ ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE VF)
++
+ pci:v00001077d00008432*
+  ID_MODEL_FROM_DATABASE=ISP2432M-based 10GbE Converged Network Adapter (CNA)
+@@ -17090,6 +17129,12 @@ pci:v00001093d00002890*
+ pci:v00001093d000028C0*
+  ID_MODEL_FROM_DATABASE=PCI-6014
++pci:v00001093d000028D0*
++ ID_MODEL_FROM_DATABASE=PCI-5122
++
++pci:v00001093d000028E0*
++ ID_MODEL_FROM_DATABASE=PXI-5122
++
+ pci:v00001093d00002A60*
+  ID_MODEL_FROM_DATABASE=PCI-6023E
+@@ -17174,12 +17219,33 @@ pci:v00001093d000070BF*
+ pci:v00001093d000070C0*
+  ID_MODEL_FROM_DATABASE=PCI-6143
++pci:v00001093d000070F0*
++ ID_MODEL_FROM_DATABASE=PXI-5922
++
++pci:v00001093d000070F1*
++ ID_MODEL_FROM_DATABASE=PCI-5922
++
+ pci:v00001093d000070F2*
+  ID_MODEL_FROM_DATABASE=PCI-6224
++pci:v00001093d00007121*
++ ID_MODEL_FROM_DATABASE=PXI-5122EX
++
++pci:v00001093d00007122*
++ ID_MODEL_FROM_DATABASE=PCI-5122EX
++
+ pci:v00001093d00007144*
+  ID_MODEL_FROM_DATABASE=PXI-5124 (12-bit 200 MS/s Digitizer)
++pci:v00001093d00007145*
++ ID_MODEL_FROM_DATABASE=PCI-5124
++
++pci:v00001093d0000714C*
++ ID_MODEL_FROM_DATABASE=PXI-5114
++
++pci:v00001093d0000714D*
++ ID_MODEL_FROM_DATABASE=PCI-5114
++
+ pci:v00001093d0000716C*
+  ID_MODEL_FROM_DATABASE=PCI-6225
+@@ -17195,6 +17261,60 @@ pci:v00001093d000071BC*
+ pci:v00001093d000071D0*
+  ID_MODEL_FROM_DATABASE=PXI-6143
++pci:v00001093d00007260*
++ ID_MODEL_FROM_DATABASE=PXI-5142
++
++pci:v00001093d00007261*
++ ID_MODEL_FROM_DATABASE=PCI-5142
++
++pci:v00001093d000072A8*
++ ID_MODEL_FROM_DATABASE=PXI-5152
++
++pci:v00001093d000072A9*
++ ID_MODEL_FROM_DATABASE=PCI-5152
++
++pci:v00001093d000072AA*
++ ID_MODEL_FROM_DATABASE=PXI-5105
++
++pci:v00001093d000072AB*
++ ID_MODEL_FROM_DATABASE=PCI-5105
++
++pci:v00001093d0000730F*
++ ID_MODEL_FROM_DATABASE=PXI-5922EX
++
++pci:v00001093d00007310*
++ ID_MODEL_FROM_DATABASE=PCI-5922EX
++
++pci:v00001093d00007333*
++ ID_MODEL_FROM_DATABASE=PXI-5900
++
++pci:v00001093d00007349*
++ ID_MODEL_FROM_DATABASE=PXI-5154
++
++pci:v00001093d0000734A*
++ ID_MODEL_FROM_DATABASE=PCI-5154
++
++pci:v00001093d0000737D*
++ ID_MODEL_FROM_DATABASE=PXI-5124EX
++
++pci:v00001093d000073F0*
++ ID_MODEL_FROM_DATABASE=PXI-5153
++
++pci:v00001093d000073F1*
++ ID_MODEL_FROM_DATABASE=PCI-5153
++
++pci:v00001093d0000745E*
++ ID_MODEL_FROM_DATABASE=PXI-5153EX
++
++pci:v00001093d0000745F*
++ ID_MODEL_FROM_DATABASE=PCI-5153EX
++
++pci:v00001093d00007460*
++ ID_MODEL_FROM_DATABASE=PXI-5154EX
++
++pci:v00001093d00007461*
++ ID_MODEL_FROM_DATABASE=PCI-5154EX
++
+ pci:v00001093d0000B001*
+  ID_MODEL_FROM_DATABASE=IMAQ-PCI-1408
+@@ -17226,7 +17346,10 @@ pci:v00001093d0000B091*
+  ID_MODEL_FROM_DATABASE=IMAQ-PXI-1411
+ pci:v00001093d0000C4C4*
+- ID_MODEL_FROM_DATABASE=PXIe-4353
++ ID_MODEL_FROM_DATABASE=PXIe-4353/5160
++
++pci:v00001093d0000C4C4sv00001093sd000076D0*
++ ID_MODEL_FROM_DATABASE=PXIe-5160
+ pci:v00001093d0000C801*
+  ID_MODEL_FROM_DATABASE=PCI-GPIB
+@@ -25557,10 +25680,10 @@ pci:v000010DEd00000FE5*
+  ID_MODEL_FROM_DATABASE=GK107 [GeForce K340 USM]
+ pci:v000010DEd00000FE6*
+- ID_MODEL_FROM_DATABASE=GK107 [NVS K1 USM]
++ ID_MODEL_FROM_DATABASE=GK107 [GRID K1 NVS USM]
+ pci:v000010DEd00000FE7*
+- ID_MODEL_FROM_DATABASE=GK107GL [GRID K1]
++ ID_MODEL_FROM_DATABASE=GK107GL [GRID K100 vGPU]
+ pci:v000010DEd00000FE7sv000010DEsd0000101E*
+  ID_MODEL_FROM_DATABASE=GRID K100
+@@ -25575,13 +25698,13 @@ pci:v000010DEd00000FF2*
+  ID_MODEL_FROM_DATABASE=GK107GL [GRID K1]
+ pci:v000010DEd00000FF5*
+- ID_MODEL_FROM_DATABASE=GK107GL [Tesla K1 USM]
++ ID_MODEL_FROM_DATABASE=GK107GL [GRID K1 Tesla USM]
+ pci:v000010DEd00000FF6*
+  ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1100M]
+ pci:v000010DEd00000FF7*
+- ID_MODEL_FROM_DATABASE=GK107GL [Quadro K1 USM]
++ ID_MODEL_FROM_DATABASE=GK107GL [GRID K140Q vGPU]
+ pci:v000010DEd00000FF7sv000010DEsd00001037*
+  ID_MODEL_FROM_DATABASE=GRID K140Q
+@@ -25652,6 +25775,9 @@ pci:v000010DEd00001021*
+ pci:v000010DEd00001022*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c]
++pci:v000010DEd00001024*
++ ID_MODEL_FROM_DATABASE=GK110GL [Tesla K40c]
++
+ pci:v000010DEd00001026*
+  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s]
+@@ -26246,6 +26372,9 @@ pci:v000010DEd00001140sv000017AAsd00003983*
+ pci:v000010DEd00001140sv000017AAsd00005003*
+  ID_MODEL_FROM_DATABASE=GeForce GT 720M
++pci:v000010DEd00001140sv000017AAsd00005005*
++ ID_MODEL_FROM_DATABASE=GeForce 705M
++
+ pci:v000010DEd00001140sv000017AAsd0000500D*
+  ID_MODEL_FROM_DATABASE=GeForce GT 620M
+@@ -26334,13 +26463,13 @@ pci:v000010DEd0000118A*
+  ID_MODEL_FROM_DATABASE=GK104GL [GRID K520]
+ pci:v000010DEd0000118B*
+- ID_MODEL_FROM_DATABASE=GK104 [GeForce K2 USM]
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 GeForce USM]
+ pci:v000010DEd0000118C*
+- ID_MODEL_FROM_DATABASE=GK104 [NVS K2 USM]
++ ID_MODEL_FROM_DATABASE=GK104 [GRID K2 NVS USM]
+ pci:v000010DEd0000118D*
+- ID_MODEL_FROM_DATABASE=GK104GL [GRID K2]
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K200 vGPU]
+ pci:v000010DEd0000118Dsv000010DEsd0000101D*
+  ID_MODEL_FROM_DATABASE=GRID K200
+@@ -26351,6 +26480,9 @@ pci:v000010DEd0000118E*
+ pci:v000010DEd0000118F*
+  ID_MODEL_FROM_DATABASE=GK104GL [Tesla K10]
++pci:v000010DEd00001193*
++ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
++
+ pci:v000010DEd0000119D*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M]
+@@ -26379,7 +26511,7 @@ pci:v000010DEd000011A7*
+  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 675MX]
+ pci:v000010DEd000011B0*
+- ID_MODEL_FROM_DATABASE=GK104GL [Quadro K2 USM]
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K240Q\K260Q vGPU]
+ pci:v000010DEd000011B0sv000010DEsd0000101A*
+  ID_MODEL_FROM_DATABASE=GRID K240Q
+@@ -26388,7 +26520,7 @@ pci:v000010DEd000011B0sv000010DEsd0000101B*
+  ID_MODEL_FROM_DATABASE=GRID K260Q
+ pci:v000010DEd000011B1*
+- ID_MODEL_FROM_DATABASE=GK104GL [Tesla K2 USM]
++ ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 Tesla USM]
+ pci:v000010DEd000011B6*
+  ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K3100M]
+@@ -32642,6 +32774,9 @@ pci:v00001179d00000618*
+ pci:v00001179d00000701*
+  ID_MODEL_FROM_DATABASE=FIR Port Type-O
++pci:v00001179d00000803*
++ ID_MODEL_FROM_DATABASE=TC6371AF SD Host Controller
++
+ pci:v00001179d00000804*
+  ID_MODEL_FROM_DATABASE=TC6371AF SmartMedia Controller
+@@ -40046,6 +40181,9 @@ pci:v000013F6d00008788sv000014C3sd00001710*
+ pci:v000013F6d00008788sv000014C3sd00001711*
+  ID_MODEL_FROM_DATABASE=HiFier Serenade
++pci:v000013F6d00008788sv000014C3sd00001713*
++ ID_MODEL_FROM_DATABASE=HiFier Serenade III
++
+ pci:v000013F6d00008788sv00001A58sd00000910*
+  ID_MODEL_FROM_DATABASE=Barracuda AC-1
+@@ -50711,8 +50849,11 @@ pci:v00001A41d00000002*
+ pci:v00001A41d00000200*
+  ID_MODEL_FROM_DATABASE=TILE-Gx processor
++pci:v00001A41d00000201*
++ ID_MODEL_FROM_DATABASE=TILE-Gx Processor Virtual Function
++
+ pci:v00001A41d00002000*
+- ID_MODEL_FROM_DATABASE=TILE-Gx PCI Express Bridge
++ ID_MODEL_FROM_DATABASE=TILE-Gx PCI Express Root Port
+ pci:v00001A4A*
+  ID_VENDOR_FROM_DATABASE=SLAC National Accelerator Lab PPA-REG
+@@ -51353,6 +51494,15 @@ pci:v00001CC5*
+ pci:v00001CC5d00000100*
+  ID_MODEL_FROM_DATABASE=CAN-PCIe-02
++pci:v00001CE4*
++ ID_VENDOR_FROM_DATABASE=Exablaze
++
++pci:v00001CE4d00000001*
++ ID_MODEL_FROM_DATABASE=ExaNIC X4
++
++pci:v00001CE4d00000002*
++ ID_MODEL_FROM_DATABASE=ExaNIC X2
++
+ pci:v00001D44*
+  ID_VENDOR_FROM_DATABASE=DPT
+@@ -54131,6 +54281,9 @@ pci:v00008086d000008B4sv00008086sd00000270*
+ pci:v00008086d000008B4sv00008086sd00008270*
+  ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160
++pci:v00008086d000008CF*
++ ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller
++
+ pci:v00008086d00000960*
+  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge
+@@ -56369,6 +56522,9 @@ pci:v00008086d000010FBsv0000103Csd0000211B*
+ pci:v00008086d000010FBsv0000103Csd00002147*
+  ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter
++pci:v00008086d000010FBsv0000103Csd00002159*
++ ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 562i Adapter
++
+ pci:v00008086d000010FBsv0000108Esd00007B11*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
+@@ -57290,6 +57446,9 @@ pci:v00008086d00001528sv00001028sd00001F61*
+ pci:v00008086d00001528sv0000103Csd0000192D*
+  ID_MODEL_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter
++pci:v00008086d00001528sv0000103Csd00002004*
++ ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561i Adapter
++
+ pci:v00008086d00001528sv0000103Csd0000211A*
+  ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter
+@@ -57416,6 +57575,9 @@ pci:v00008086d0000155D*
+ pci:v00008086d0000155Dsv00008086sd00000001*
+  ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-SR2
++pci:v00008086d0000155Dsv00008086sd00000002*
++ ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-LR2
++
+ pci:v00008086d00001560*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X540
+@@ -69747,7 +69909,7 @@ pci:v00009005d00000285sv0000103Csd00003227*
+  ID_MODEL_FROM_DATABASE=AAR-2610SA
+ pci:v00009005d00000285sv0000108Esd00000286*
+- ID_MODEL_FROM_DATABASE=STK RAID INT
++ ID_MODEL_FROM_DATABASE=Sun StorageTek SAS RAID HBA, Internal
+ pci:v00009005d00000285sv0000108Esd00000287*
+  ID_MODEL_FROM_DATABASE=STK RAID EXT
diff --git a/debian/patches/implement-a-union-to-pad-out-file_handle.patch b/debian/patches/implement-a-union-to-pad-out-file_handle.patch
new file mode 100644 (file)
index 0000000..ba14eb5
--- /dev/null
@@ -0,0 +1,101 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Sat, 19 Apr 2014 13:22:35 -0400
+Subject: implement a union to pad out file_handle
+
+Cases where name_to_handle_at is used allocated the full struct to be
+MAX_HANDLE_SZ, and assigned this size to handle_bytes. This is wrong
+since handle_bytes should describe the length of the flexible array
+member and not the whole struct.
+
+Define a union type which includes sufficient padding to allow
+assignment of MAX_HANDLE_SZ to be correct.
+
+(cherry picked from commit 370c860f748d149097710dc7952a64f627db9de7)
+
+Conflicts:
+       src/shared/util.h
+
+(cherry picked from commit 91795825a093331ef136be1d630c5fcad299dfe8)
+
+Conflicts:
+       src/libudev/libudev-monitor.c
+       src/shared/util.h
+---
+ src/readahead/readahead-common.c |  6 ++----
+ src/shared/util.h                |  6 ++++++
+ src/tmpfiles/tmpfiles.c          | 11 ++++-------
+ 3 files changed, 12 insertions(+), 11 deletions(-)
+
+diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c
+index aea1fbe..1edf9cc 100644
+--- a/src/readahead/readahead-common.c
++++ b/src/readahead/readahead-common.c
+@@ -75,7 +75,7 @@ int fs_on_ssd(const char *p) {
+         if (major(st.st_dev) == 0) {
+                 _cleanup_fclose_ FILE *f = NULL;
+                 int mount_id;
+-                struct file_handle *h;
++                union file_handle_union h = { .handle.handle_bytes = MAX_HANDLE_SZ, };
+                 /* Might be btrfs, which exposes "ssd" as mount flag if it is on ssd.
+                  *
+@@ -83,9 +83,7 @@ int fs_on_ssd(const char *p) {
+                  * and then lookup the mount ID in mountinfo to find
+                  * the mount options. */
+-                h = alloca(MAX_HANDLE_SZ);
+-                h->handle_bytes = MAX_HANDLE_SZ;
+-                r = name_to_handle_at(AT_FDCWD, p, h, &mount_id, AT_SYMLINK_FOLLOW);
++                r = name_to_handle_at(AT_FDCWD, p, &h.handle, &mount_id, AT_SYMLINK_FOLLOW);
+                 if (r < 0)
+                         return false;
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 47a3dc9..a173885 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -22,6 +22,7 @@
+ ***/
+ #include <alloca.h>
++#include <fcntl.h>
+ #include <inttypes.h>
+ #include <time.h>
+ #include <sys/time.h>
+@@ -776,3 +777,8 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size,
+                 qsort(base, nmemb, size, compar);
+         }
+ }
++
++union file_handle_union {
++  struct file_handle handle;
++  char padding[sizeof(struct file_handle) + MAX_HANDLE_SZ];
++};
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index fb88acd..98d01a1 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -215,19 +215,16 @@ static bool unix_socket_alive(const char *fn) {
+ }
+ static int dir_is_mount_point(DIR *d, const char *subdir) {
+-        struct file_handle *h;
++        union file_handle_union h = { .handle.handle_bytes = MAX_HANDLE_SZ };
+         int mount_id_parent, mount_id;
+         int r_p, r;
+-        h = alloca(MAX_HANDLE_SZ);
+-
+-        h->handle_bytes = MAX_HANDLE_SZ;
+-        r_p = name_to_handle_at(dirfd(d), ".", h, &mount_id_parent, 0);
++        r_p = name_to_handle_at(dirfd(d), ".", &h.handle, &mount_id_parent, 0);
+         if (r_p < 0)
+                 r_p = -errno;
+-        h->handle_bytes = MAX_HANDLE_SZ;
+-        r = name_to_handle_at(dirfd(d), subdir, h, &mount_id, 0);
++        h.handle.handle_bytes = MAX_HANDLE_SZ;
++        r = name_to_handle_at(dirfd(d), subdir, &h.handle, &mount_id, 0);
+         if (r < 0)
+                 r = -errno;
diff --git a/debian/patches/input_id-Recognize-buttonless-joystick-types.patch b/debian/patches/input_id-Recognize-buttonless-joystick-types.patch
new file mode 100644 (file)
index 0000000..b166780
--- /dev/null
@@ -0,0 +1,53 @@
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon, 10 Mar 2014 08:54:22 +0100
+Subject: input_id: Recognize buttonless joystick types
+
+Input devices like rudders or pedals are joystick-like; they don't have
+buttons, but axes like RX, THROTTLE, or RUDDER. These don't interfere with
+other device types with absolute axes (touch screens, touchpads, and
+accelerometers), so it's fairly safe to mark them as ID_INPUT_JOYSTICK and thus
+hand out dynamic ACLs to the user.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=70734
+(cherry picked from commit 2658624399b22a9c4a345a22c69886dc9417f801)
+(cherry picked from commit 33fc27712a13b7502804a2a3016ce490a89e000d)
+---
+ src/udev/udev-builtin-input_id.c | 19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
+index 4691fc0..33c8075 100644
+--- a/src/udev/udev-builtin-input_id.c
++++ b/src/udev/udev-builtin-input_id.c
+@@ -116,16 +116,27 @@ static void test_pointers (struct udev_device *dev,
+                         udev_builtin_add_property(dev, test, "ID_INPUT_TABLET", "1");
+                 else if (test_bit (BTN_TOOL_FINGER, bitmask_key) && !test_bit (BTN_TOOL_PEN, bitmask_key))
+                         is_touchpad = 1;
+-                else if (test_bit (BTN_TRIGGER, bitmask_key) ||
+-                         test_bit (BTN_A, bitmask_key) ||
+-                         test_bit (BTN_1, bitmask_key))
+-                        udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1");
+                 else if (test_bit (BTN_MOUSE, bitmask_key))
+                         /* This path is taken by VMware's USB mouse, which has
+                          * absolute axes, but no touch/pressure button. */
+                         is_mouse = 1;
+                 else if (test_bit (BTN_TOUCH, bitmask_key))
+                         udev_builtin_add_property(dev, test, "ID_INPUT_TOUCHSCREEN", "1");
++                /* joysticks don't necessarily have to have buttons; e. g.
++                 * rudders/pedals are joystick-like, but buttonless; they have
++                 * other fancy axes */
++                else if (test_bit (BTN_TRIGGER, bitmask_key) ||
++                         test_bit (BTN_A, bitmask_key) ||
++                         test_bit (BTN_1, bitmask_key) ||
++                         test_bit (ABS_RX, bitmask_abs) ||
++                         test_bit (ABS_RY, bitmask_abs) ||
++                         test_bit (ABS_RZ, bitmask_abs) ||
++                         test_bit (ABS_THROTTLE, bitmask_abs) ||
++                         test_bit (ABS_RUDDER, bitmask_abs) ||
++                         test_bit (ABS_WHEEL, bitmask_abs) ||
++                         test_bit (ABS_GAS, bitmask_abs) ||
++                         test_bit (ABS_BRAKE, bitmask_abs))
++                        udev_builtin_add_property(dev, test, "ID_INPUT_JOYSTICK", "1");
+         }
+         if (test_bit (EV_REL, bitmask_ev) &&
diff --git a/debian/patches/install-create_symlink-check-unlink-return-value.patch b/debian/patches/install-create_symlink-check-unlink-return-value.patch
new file mode 100644 (file)
index 0000000..bde7d63
--- /dev/null
@@ -0,0 +1,45 @@
+From: Djalal Harouni <tixxdz@opendz.org>
+Date: Thu, 17 Apr 2014 01:47:11 +0100
+Subject: install: create_symlink() check unlink() return value
+
+create_symlink() do not check the return value of unlink(), this may
+confuse the user.
+
+Before the unlink() call we check the 'force' argument. If it is not set
+we fail with -EEXIST, otherwise we unlink() the file, therefore the next
+symlink() should not fail with -EEXIST (do not count races...).
+
+However since callers may not have appropriate privileges to unlink()
+the file we lose the -EPERM or any other errno code of unlink(), and
+return the -EEXIST of the next symlink(). Fix this by checking unlink()
+results.
+
+Before:
+$ systemctl --force --root=~/container-03 set-default multi-user.target
+Failed to set default target: File exists
+
+After:
+$ systemctl --force --root=~/container-03 set-default multi-user.target
+Failed to set default target: Permission denied
+
+(cherry picked from commit af7fce1cdb6c0d6ce56bcddccbc31dd3d64a8cd8)
+(cherry picked from commit ac19aafa62b4dd47e26b368b54c17e6e1c71d8fb)
+---
+ src/shared/install.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index b9c85b7..e6a61fa 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -1172,7 +1172,9 @@ static int create_symlink(
+         if (!force)
+                 return -EEXIST;
+-        unlink(new_path);
++        r = unlink(new_path);
++        if (r < 0 && errno != ENOENT)
++                return -errno;
+         if (symlink(old_path, new_path) >= 0) {
+                 add_file_change(changes, n_changes, UNIT_FILE_UNLINK, new_path, NULL);
diff --git a/debian/patches/install-fix-invalid-free-in-unit_file_mask.patch b/debian/patches/install-fix-invalid-free-in-unit_file_mask.patch
new file mode 100644 (file)
index 0000000..9846b01
--- /dev/null
@@ -0,0 +1,29 @@
+From: Andreas Henriksson <andreas@fatal.se>
+Date: Fri, 13 Jun 2014 18:48:18 +0200
+Subject: install: fix invalid free() in unit_file_mask()
+
+int unit_file_mask(...) in ./src/shared/install.c calls
+get_config_path(...) which can in 4 error cases return without setting
+"ret", and thus "prefix" can be uninitialized when unit_file_mask(...)
+finishes (which it does directly after the error is returned from
+get_config_path(...)).
+
+(cherry picked from commit 223217749e57996336d5730b0a28716cca56d45d)
+(cherry picked from commit bcb667c211614b38870aced0703c6f93b0d198eb)
+---
+ src/shared/install.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 241e000..c9c785a 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -567,7 +567,7 @@ int unit_file_mask(
+                 unsigned *n_changes) {
+         char **i;
+-        _cleanup_free_ char *prefix;
++        _cleanup_free_ char *prefix = NULL;
+         int r;
+         assert(scope >= 0);
diff --git a/debian/patches/install-make-sure-systemctl-disable-foobar-.service-.patch b/debian/patches/install-make-sure-systemctl-disable-foobar-.service-.patch
new file mode 100644 (file)
index 0000000..e4ba989
--- /dev/null
@@ -0,0 +1,56 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 17 Jun 2014 00:33:39 +0200
+Subject: install: make sure "systemctl disable foobar@.service" actually
+ removes all instances
+
+(cherry picked from commit 559367add5e22bf32d14fa1496512c68488f48b0)
+
+Conflicts:
+       src/shared/install.c
+
+(cherry picked from commit b83e096610a05b7bb3b096cebd634ef3717c4b2c)
+---
+ src/shared/install.c | 21 +++++++++++++++++----
+ 1 file changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 00a6a77..e772c45 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -267,8 +267,21 @@ static int remove_marked_symlinks_fd(
+                         if (unit_name_is_instance(de->d_name) &&
+                             instance_whitelist &&
+-                            !strv_contains(instance_whitelist, de->d_name))
+-                                continue;
++                            !strv_contains(instance_whitelist, de->d_name)) {
++                                _cleanup_free_ char *w;
++
++                                /* OK, the file is not listed directly
++                                 * in the whitelist, so let's check if
++                                 * the template of it might be
++                                 * listed. */
++
++                                w = unit_name_template(de->d_name);
++                                if (!w)
++                                        return -ENOMEM;
++
++                                if (!strv_contains(instance_whitelist, w))
++                                        continue;
++                        }
+                         p = path_make_absolute(de->d_name, path);
+                         if (!p)
+@@ -297,10 +310,10 @@ static int remove_marked_symlinks_fd(
+                                         continue;
+                                 }
+-                                rmdir_parents(p, config_path);
+-
+                                 path_kill_slashes(p);
++                                rmdir_parents(p, config_path);
++
+                                 add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
+                                 if (!set_get(remove_symlinks_to, p)) {
diff --git a/debian/patches/install-make-sure-that-root-mode-doesn-t-make-us-con.patch b/debian/patches/install-make-sure-that-root-mode-doesn-t-make-us-con.patch
new file mode 100644 (file)
index 0000000..a834599
--- /dev/null
@@ -0,0 +1,146 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 17 Jun 2014 00:53:49 +0200
+Subject: install: make sure that --root= mode doesn't make us consider all
+ units outside of search path
+
+(cherry picked from commit 8f294b45cbb627d31342f6a79444be59ce7e2274)
+(cherry picked from commit 9139b554df671481a7e03e928d661420bffb8774)
+---
+ src/shared/install.c | 41 +++++++++++++++++++++++++++++++++++++----
+ src/shared/util.c    | 16 ----------------
+ src/shared/util.h    |  1 -
+ 3 files changed, 37 insertions(+), 21 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index e772c45..5d93a2e 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -47,6 +47,37 @@ typedef struct {
+ #define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
+ #define _cleanup_install_context_done_ _cleanup_(install_context_done)
++static int in_search_path(const char *path, char **search, const char *root_dir) {
++        _cleanup_free_ char *parent = NULL;
++        char **i;
++        int r;
++
++        assert(path);
++
++        r = path_get_parent(path, &parent);
++        if (r < 0)
++                return r;
++
++        STRV_FOREACH(i, search) {
++                _cleanup_free_ char *buf = NULL;
++                const char *p;
++
++                if (root_dir) {
++                        buf = strjoin(root_dir, "/", *i, NULL);
++                        if (!buf)
++                                return -ENOMEM;
++
++                        p = buf;
++                } else
++                        p = *i;
++
++                if (path_equal(parent, p))
++                        return 1;
++        }
++
++        return 0;
++}
++
+ static int lookup_paths_init_from_scope(LookupPaths *paths,
+                                         UnitFileScope scope,
+                                         const char *root_dir) {
+@@ -759,7 +790,7 @@ int unit_file_link(
+                         continue;
+                 }
+-                q = in_search_path(*i, paths.unit_path);
++                q = in_search_path(*i, paths.unit_path, root_dir);
+                 if (q < 0)
+                         return q;
+@@ -1315,6 +1346,7 @@ static int install_info_symlink_link(
+                 InstallInfo *i,
+                 LookupPaths *paths,
+                 const char *config_path,
++                const char *root_dir,
+                 bool force,
+                 UnitFileChange **changes,
+                 unsigned *n_changes) {
+@@ -1327,7 +1359,7 @@ static int install_info_symlink_link(
+         assert(config_path);
+         assert(i->path);
+-        r = in_search_path(i->path, paths->unit_path);
++        r = in_search_path(i->path, paths->unit_path, root_dir);
+         if (r != 0)
+                 return r;
+@@ -1342,6 +1374,7 @@ static int install_info_apply(
+                 InstallInfo *i,
+                 LookupPaths *paths,
+                 const char *config_path,
++                const char *root_dir,
+                 bool force,
+                 UnitFileChange **changes,
+                 unsigned *n_changes) {
+@@ -1362,7 +1395,7 @@ static int install_info_apply(
+         if (r == 0)
+                 r = q;
+-        q = install_info_symlink_link(i, paths, config_path, force, changes, n_changes);
++        q = install_info_symlink_link(i, paths, config_path, root_dir, force, changes, n_changes);
+         if (r == 0)
+                 r = q;
+@@ -1402,7 +1435,7 @@ static int install_context_apply(
+                 } else if (r >= 0)
+                         r += q;
+-                q = install_info_apply(i, paths, config_path, force, changes, n_changes);
++                q = install_info_apply(i, paths, config_path, root_dir, force, changes, n_changes);
+                 if (r >= 0 && q < 0)
+                         r = q;
+         }
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 1f83eb7..f034134 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -4520,22 +4520,6 @@ int dirent_ensure_type(DIR *d, struct dirent *de) {
+         return 0;
+ }
+-int in_search_path(const char *path, char **search) {
+-        char **i;
+-        _cleanup_free_ char *parent = NULL;
+-        int r;
+-
+-        r = path_get_parent(path, &parent);
+-        if (r < 0)
+-                return r;
+-
+-        STRV_FOREACH(i, search)
+-                if (path_equal(parent, *i))
+-                        return 1;
+-
+-        return 0;
+-}
+-
+ int get_files_in_directory(const char *path, char ***list) {
+         _cleanup_closedir_ DIR *d = NULL;
+         size_t bufsize = 0, n = 0;
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 3f97663..f358362 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -477,7 +477,6 @@ int glob_extend(char ***strv, const char *path);
+ int dirent_ensure_type(DIR *d, struct dirent *de);
+-int in_search_path(const char *path, char **search);
+ int get_files_in_directory(const char *path, char ***list);
+ char *strjoin(const char *x, ...) _sentinel_;
diff --git a/debian/patches/install-simplify-and-clarify-disabling-logic-for-ins.patch b/debian/patches/install-simplify-and-clarify-disabling-logic-for-ins.patch
new file mode 100644 (file)
index 0000000..eede621
--- /dev/null
@@ -0,0 +1,119 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 16 Jun 2014 19:48:31 +0200
+Subject: install: simplify and clarify disabling logic for instanced units
+
+(cherry picked from commit bcafe923a74e702abbba3655b0270febe143499f)
+
+Conflicts:
+       src/shared/install.c
+---
+ src/shared/install.c | 50 ++++++++++++++++++++++++++++----------------------
+ 1 file changed, 28 insertions(+), 22 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 1f3ea5b..ff0a2a4 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -194,10 +194,10 @@ static int remove_marked_symlinks_fd(
+                 bool *deleted,
+                 UnitFileChange **changes,
+                 unsigned *n_changes,
+-                char** files) {
++                char** instance_whitelist) {
+-        int r = 0;
+         _cleanup_closedir_ DIR *d = NULL;
++        int r = 0;
+         assert(remove_symlinks_to);
+         assert(fd >= 0);
+@@ -253,9 +253,8 @@ static int remove_marked_symlinks_fd(
+                         }
+                         /* This will close nfd, regardless whether it succeeds or not */
+-                        q = remove_marked_symlinks_fd(remove_symlinks_to, nfd, p, config_path, deleted, changes, n_changes, files);
+-
+-                        if (r == 0)
++                        q = remove_marked_symlinks_fd(remove_symlinks_to, nfd, p, config_path, deleted, changes, n_changes, instance_whitelist);
++                        if (q < 0 && r == 0)
+                                 r = q;
+                 } else if (de->d_type == DT_LNK) {
+@@ -263,6 +262,14 @@ static int remove_marked_symlinks_fd(
+                         int q;
+                         bool found;
++                        if (!unit_name_is_valid(de->d_name, true))
++                                continue;
++
++                        if (unit_name_is_instance(de->d_name) &&
++                            instance_whitelist &&
++                            !strv_contains(instance_whitelist, de->d_name))
++                                continue;
++
+                         p = path_make_absolute(de->d_name, path);
+                         if (!p)
+                                 return -ENOMEM;
+@@ -281,30 +288,29 @@ static int remove_marked_symlinks_fd(
+                                 set_get(remove_symlinks_to, dest) ||
+                                 set_get(remove_symlinks_to, path_get_file_name(dest));
+-                        if (unit_name_is_instance(p))
+-                                found = found && strv_contains(files, path_get_file_name(p));
+-
+                         if (found) {
+                                 if (unlink(p) < 0 && errno != ENOENT) {
+                                         if (r == 0)
+                                                 r = -errno;
+-                                } else {
+-                                        rmdir_parents(p, config_path);
+-                                        path_kill_slashes(p);
++                                        continue;
++                                }
++
++                                rmdir_parents(p, config_path);
++
++                                path_kill_slashes(p);
+-                                        add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
++                                add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
+-                                        if (!set_get(remove_symlinks_to, p)) {
++                                if (!set_get(remove_symlinks_to, p)) {
+-                                                q = mark_symlink_for_removal(&remove_symlinks_to, p);
+-                                                if (q < 0) {
+-                                                        if (r == 0)
+-                                                                r = q;
+-                                                } else
+-                                                        *deleted = true;
+-                                        }
++                                        q = mark_symlink_for_removal(&remove_symlinks_to, p);
++                                        if (q < 0) {
++                                                if (r == 0)
++                                                        r = q;
++                                        } else
++                                                *deleted = true;
+                                 }
+                         }
+                 }
+@@ -318,7 +324,7 @@ static int remove_marked_symlinks(
+                 const char *config_path,
+                 UnitFileChange **changes,
+                 unsigned *n_changes,
+-                char** files) {
++                char** instance_whitelist) {
+         _cleanup_close_ int fd = -1;
+         int r = 0;
+@@ -344,7 +350,7 @@ static int remove_marked_symlinks(
+                 }
+                 /* This takes possession of cfd and closes it */
+-                q = remove_marked_symlinks_fd(remove_symlinks_to, cfd, config_path, config_path, &deleted, changes, n_changes, files);
++                q = remove_marked_symlinks_fd(remove_symlinks_to, cfd, config_path, config_path, &deleted, changes, n_changes, instance_whitelist);
+                 if (r == 0)
+                         r = q;
+         } while (deleted);
diff --git a/debian/patches/install-simplify-symlink-root-logic.patch b/debian/patches/install-simplify-symlink-root-logic.patch
new file mode 100644 (file)
index 0000000..d630ff9
--- /dev/null
@@ -0,0 +1,148 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 17 Jun 2014 01:37:54 +0200
+Subject: install: simplify symlink --root= logic
+
+(cherry picked from commit 278fa5758c8e30f03c8c50f15873d55edfc4cbaf)
+(cherry picked from commit aa5882a2d14c8de0956be0569f20678816dfa1f5)
+---
+ src/shared/install.c | 59 +++++++++++++---------------------------------------
+ 1 file changed, 15 insertions(+), 44 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 5d93a2e..86a05a4 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -47,9 +47,8 @@ typedef struct {
+ #define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
+ #define _cleanup_install_context_done_ _cleanup_(install_context_done)
+-static int in_search_path(const char *path, char **search, const char *root_dir) {
++static int in_search_path(const char *path, char **search) {
+         _cleanup_free_ char *parent = NULL;
+-        char **i;
+         int r;
+         assert(path);
+@@ -58,24 +57,7 @@ static int in_search_path(const char *path, char **search, const char *root_dir)
+         if (r < 0)
+                 return r;
+-        STRV_FOREACH(i, search) {
+-                _cleanup_free_ char *buf = NULL;
+-                const char *p;
+-
+-                if (root_dir) {
+-                        buf = strjoin(root_dir, "/", *i, NULL);
+-                        if (!buf)
+-                                return -ENOMEM;
+-
+-                        p = buf;
+-                } else
+-                        p = *i;
+-
+-                if (path_equal(parent, p))
+-                        return 1;
+-        }
+-
+-        return 0;
++        return strv_contains(search, parent);
+ }
+ static int lookup_paths_init_from_scope(LookupPaths *paths,
+@@ -790,7 +772,7 @@ int unit_file_link(
+                         continue;
+                 }
+-                q = in_search_path(*i, paths.unit_path, root_dir);
++                q = in_search_path(*i, paths.unit_path);
+                 if (q < 0)
+                         return q;
+@@ -1037,6 +1019,7 @@ static int unit_file_load(
+                 InstallContext *c,
+                 InstallInfo *info,
+                 const char *path,
++                const char *root_dir,
+                 bool allow_symlink) {
+         const ConfigTableItem items[] = {
+@@ -1048,14 +1031,16 @@ static int unit_file_load(
+                 { NULL, NULL, NULL, 0, NULL }
+         };
+-        int fd;
+         _cleanup_fclose_ FILE *f = NULL;
+-        int r;
++        int fd, r;
+         assert(c);
+         assert(info);
+         assert(path);
++        if (!isempty(root_dir))
++                path = strappenda3(root_dir, "/", path);
++
+         fd = open(path, O_RDONLY|O_CLOEXEC|O_NOCTTY|(allow_symlink ? 0 : O_NOFOLLOW));
+         if (fd < 0)
+                 return -errno;
+@@ -1091,30 +1076,19 @@ static int unit_file_search(
+         assert(info);
+         assert(paths);
+-        if (info->path) {
+-                const char *path;
+-
+-                if (isempty(root_dir))
+-                        path = info->path;
+-                else
+-                        path = strappenda(root_dir, info->path);
+-
+-                return unit_file_load(c, info, path, allow_symlink);
+-        }
++        if (info->path)
++                return unit_file_load(c, info, info->path, root_dir, allow_symlink);
+         assert(info->name);
+         STRV_FOREACH(p, paths->unit_path) {
+                 _cleanup_free_ char *path = NULL;
+-                if (isempty(root_dir))
+-                        path = strjoin(*p, "/", info->name, NULL);
+-                else
+-                        path = strjoin(root_dir, "/", *p, "/", info->name, NULL);
++                path = strjoin(*p, "/", info->name, NULL);
+                 if (!path)
+                         return -ENOMEM;
+-                r = unit_file_load(c, info, path, allow_symlink);
++                r = unit_file_load(c, info, path, root_dir, allow_symlink);
+                 if (r >= 0) {
+                         info->path = path;
+                         path = NULL;
+@@ -1139,14 +1113,11 @@ static int unit_file_search(
+                 STRV_FOREACH(p, paths->unit_path) {
+                         _cleanup_free_ char *path = NULL;
+-                        if (isempty(root_dir))
+-                                path = strjoin(*p, "/", template, NULL);
+-                        else
+-                                path = strjoin(root_dir, "/", *p, "/", template, NULL);
++                        path = strjoin(*p, "/", template, NULL);
+                         if (!path)
+                                 return -ENOMEM;
+-                        r = unit_file_load(c, info, path, allow_symlink);
++                        r = unit_file_load(c, info, path, root_dir, allow_symlink);
+                         if (r >= 0) {
+                                 info->path = path;
+                                 path = NULL;
+@@ -1359,7 +1330,7 @@ static int install_info_symlink_link(
+         assert(config_path);
+         assert(i->path);
+-        r = in_search_path(i->path, paths->unit_path, root_dir);
++        r = in_search_path(i->path, paths->unit_path);
+         if (r != 0)
+                 return r;
diff --git a/debian/patches/install-various-modernizations.patch b/debian/patches/install-various-modernizations.patch
new file mode 100644 (file)
index 0000000..b31179e
--- /dev/null
@@ -0,0 +1,121 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 16 Jun 2014 17:19:30 +0200
+Subject: install: various modernizations
+
+(cherry picked from commit da39f6a63e9ca59bec23cc9d1cb841703bb5ef56)
+---
+ src/shared/install.c | 43 ++++++++++++++-----------------------------
+ 1 file changed, 14 insertions(+), 29 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index c9c785a..1f3ea5b 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -320,7 +320,8 @@ static int remove_marked_symlinks(
+                 unsigned *n_changes,
+                 char** files) {
+-        int fd, r = 0;
++        _cleanup_close_ int fd = -1;
++        int r = 0;
+         bool deleted;
+         assert(config_path);
+@@ -348,8 +349,6 @@ static int remove_marked_symlinks(
+                         r = q;
+         } while (deleted);
+-        safe_close(fd);
+-
+         return r;
+ }
+@@ -1823,11 +1822,11 @@ int unit_file_preset(
+                 UnitFileChange **changes,
+                 unsigned *n_changes) {
+-        _cleanup_lookup_paths_free_ LookupPaths paths = {};
+         _cleanup_install_context_done_ InstallContext plus = {}, minus = {};
+-        char **i;
+-        _cleanup_free_ char *config_path = NULL;
+         _cleanup_set_free_free_ Set *remove_symlinks_to = NULL;
++        _cleanup_lookup_paths_free_ LookupPaths paths = {};
++        _cleanup_free_ char *config_path = NULL;
++        char **i;
+         int r, q;
+         assert(scope >= 0);
+@@ -1854,16 +1853,13 @@ int unit_file_preset(
+                         r = install_info_add_auto(&plus, *i);
+                 else
+                         r = install_info_add_auto(&minus, *i);
+-
+                 if (r < 0)
+                         return r;
+         }
+-        r = install_context_mark_for_removal(&minus, &paths, &remove_symlinks_to,
+-                                             config_path, root_dir);
++        r = install_context_mark_for_removal(&minus, &paths, &remove_symlinks_to, config_path, root_dir);
+-        q = remove_marked_symlinks(remove_symlinks_to, config_path,
+-                                   changes, n_changes, files);
++        q = remove_marked_symlinks(remove_symlinks_to, config_path, changes, n_changes, files);
+         if (r == 0)
+                 r = q;
+@@ -1891,8 +1887,6 @@ int unit_file_get_list(
+         _cleanup_lookup_paths_free_ LookupPaths paths = {};
+         char **i;
+-        _cleanup_free_ char *buf = NULL;
+-        _cleanup_closedir_ DIR *d = NULL;
+         int r;
+         assert(scope >= 0);
+@@ -1907,22 +1901,19 @@ int unit_file_get_list(
+                 return r;
+         STRV_FOREACH(i, paths.unit_path) {
++                _cleanup_closedir_ DIR *d = NULL;
++                _cleanup_free_ char *buf = NULL;
+                 const char *units_dir;
+-                free(buf);
+-                buf = NULL;
+-
+-                if (root_dir) {
+-                        if (asprintf(&buf, "%s/%s", root_dir, *i) < 0)
++                if (!isempty(root_dir)) {
++                        buf = strjoin(root_dir, "/", *i, NULL);
++                        if (!buf)
+                                 return -ENOMEM;
+                         units_dir = buf;
+                 } else
+                         units_dir = *i;
+-                if (d)
+-                        closedir(d);
+-
+                 d = opendir(units_dir);
+                 if (!d) {
+                         if (errno == ENOENT)
+@@ -1953,15 +1944,9 @@ int unit_file_get_list(
+                         if (hashmap_get(h, de->d_name))
+                                 continue;
+-                        r = dirent_ensure_type(d, de);
+-                        if (r < 0) {
+-                                if (r == -ENOENT)
+-                                        continue;
+-
+-                                return r;
+-                        }
++                        dirent_ensure_type(d, de);
+-                        if (de->d_type != DT_LNK && de->d_type != DT_REG)
++                        if (!IN_SET(de->d_type, DT_LNK, DT_REG))
+                                 continue;
+                         f = new0(UnitFileList, 1);
diff --git a/debian/patches/install-when-looking-for-a-unit-file-for-enabling-se.patch b/debian/patches/install-when-looking-for-a-unit-file-for-enabling-se.patch
new file mode 100644 (file)
index 0000000..dbc1b26
--- /dev/null
@@ -0,0 +1,124 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 17 Jun 2014 00:13:48 +0200
+Subject: install: when looking for a unit file for enabling,
+ search for templates only after traversing all search directories
+
+Let's always make sure to look in all search directories for the full
+unit names first, before looking for templates for them.
+
+(cherry picked from commit e50bd775163cd96be1888943a8785a436be710e8)
+(cherry picked from commit ce314469055164cdc83d73c9e006ec703bc515b7)
+---
+ src/shared/install.c | 74 +++++++++++++++++++++++++++-------------------------
+ 1 file changed, 38 insertions(+), 36 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index ff0a2a4..00a6a77 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -1048,67 +1048,69 @@ static int unit_file_search(
+         assert(paths);
+         if (info->path) {
+-                char *full_path = NULL;
++                const char *path;
+-                if (!isempty(root_dir))
+-                        full_path = strappenda(root_dir, info->path);
++                if (isempty(root_dir))
++                        path = info->path;
++                else
++                        path = strappenda(root_dir, info->path);
+-                return unit_file_load(c, info, full_path ?: info->path, allow_symlink);
++                return unit_file_load(c, info, path, allow_symlink);
+         }
+         assert(info->name);
+         STRV_FOREACH(p, paths->unit_path) {
+-                _cleanup_free_ char *path = NULL, *full_path = NULL;
++                _cleanup_free_ char *path = NULL;
+-                path = strjoin(*p, "/", info->name, NULL);
++                if (isempty(root_dir))
++                        path = strjoin(*p, "/", info->name, NULL);
++                else
++                        path = strjoin(root_dir, "/", *p, "/", info->name, NULL);
+                 if (!path)
+                         return -ENOMEM;
+-                if (!isempty(root_dir)) {
+-                        full_path = strappend(root_dir, path);
+-                        if (!full_path)
+-                                return -ENOMEM;
+-                }
+-
+-                r = unit_file_load(c, info, full_path ?: path, allow_symlink);
++                r = unit_file_load(c, info, path, allow_symlink);
+                 if (r >= 0) {
+                         info->path = path;
+                         path = NULL;
+-                } else if (r == -ENOENT && unit_name_is_instance(info->name)) {
+-                        /* Unit file doesn't exist, however instance enablement was requested.
+-                         * We will check if it is possible to load template unit file. */
+-                        _cleanup_free_ char *template = NULL, *template_dir = NULL;
++                        return r;
++                }
++                if (r != -ENOENT && r != -ELOOP)
++                        return r;
++        }
+-                        template = unit_name_template(info->name);
+-                        if (!template)
+-                                return -ENOMEM;
++        if (unit_name_is_instance(info->name)) {
++
++                /* Unit file doesn't exist, however instance
++                 * enablement was requested.  We will check if it is
++                 * possible to load template unit file. */
+-                        /* We will reuse path variable since we don't need it anymore. */
+-                        template_dir = path;
+-                        *(strrchr(template_dir, '/') + 1) = '\0';
++                _cleanup_free_ char *template = NULL, *template_dir = NULL;
++
++                template = unit_name_template(info->name);
++                if (!template)
++                        return -ENOMEM;
+-                        path = strappend(template_dir, template);
++                STRV_FOREACH(p, paths->unit_path) {
++                        _cleanup_free_ char *path = NULL;
++
++                        if (isempty(root_dir))
++                                path = strjoin(*p, "/", template, NULL);
++                        else
++                                path = strjoin(root_dir, "/", *p, "/", template, NULL);
+                         if (!path)
+                                 return -ENOMEM;
+-                        if (!isempty(root_dir)) {
+-                                free(full_path);
+-                                full_path = strappend(root_dir, path);
+-                                if (!full_path)
+-                                        return -ENOMEM;
+-                        }
+-
+-                        /* Let's try to load template unit. */
+-                        r = unit_file_load(c, info, full_path ?: path, allow_symlink);
++                        r = unit_file_load(c, info, path, allow_symlink);
+                         if (r >= 0) {
+                                 info->path = path;
+                                 path = NULL;
++                                return r;
+                         }
++                        if (r != -ENOENT && r != -ELOOP)
++                                return r;
+                 }
+-
+-                if (r != -ENOENT && r != -ELOOP)
+-                        return r;
+         }
+         return -ENOENT;
diff --git a/debian/patches/job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch b/debian/patches/job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch
new file mode 100644 (file)
index 0000000..11bf774
--- /dev/null
@@ -0,0 +1,43 @@
+From: Brandon Philips <brandon@ifup.co>
+Date: Fri, 25 Apr 2014 09:31:59 -0600
+Subject: job: add waiting jobs to run queue in unit_coldplug
+
+When we have job installed and added to run queue for service which is
+still in dead state and systemd initiates reload then after reload we
+never add deserialized job to the run queue again. This is caused by
+check in service_coldplug() where we check if deserialized state is
+something else than dead state, which is not the case thus we never call
+service_set_state() and finally unit_notify() where we would have added
+job to the run queue.
+
+Thanks to Michal Sekletar <msekleta@redhat.com> for the original patch.
+
+(cherry picked from commit 20a83d7bf4542875f8033b68682a4da4993010e8)
+
+Conflicts:
+       src/core/job.c
+
+(cherry picked from commit 39cdf9313c28c3853aa001bbb522f71703cbfcc3)
+
+Conflicts:
+       src/core/job.c
+
+This includes the fixup in ae6feb2a01f6954af682bc3580c95d99721dcf46.
+---
+ src/core/job.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/core/job.c b/src/core/job.c
+index 7d2b994..c6bf08f 100644
+--- a/src/core/job.c
++++ b/src/core/job.c
+@@ -1070,6 +1070,9 @@ int job_coldplug(Job *j) {
+                 .events = EPOLLIN,
+         };
++        if (j->state == JOB_WAITING)
++                job_add_to_run_queue(j);
++
+         if (j->timer_watch.type != WATCH_JOB_TIMER)
+                 return 0;
diff --git a/debian/patches/journal-Add-missing-byte-order-conversions.patch b/debian/patches/journal-Add-missing-byte-order-conversions.patch
new file mode 100644 (file)
index 0000000..a6abc45
--- /dev/null
@@ -0,0 +1,58 @@
+From: George McCollister <george.mccollister@gmail.com>
+Date: Tue, 31 Dec 2013 14:37:32 -0600
+Subject: journal: Add missing byte order conversions
+
+Convert entry_array.items[0] to host byte order prior to passing it to
+chain_cache_put().
+
+[zj: also use le64toh in journal-verify.c]
+
+https://bugs.freedesktop.org/show_bug.cgi?id=73194
+(cherry picked from commit af13a6b0606f166c93cafc9892343f167f880281)
+---
+ src/journal/journal-file.c   | 4 ++--
+ src/journal/journal-verify.c | 6 +++---
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 5ef6a2a..ba65464 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1452,7 +1452,7 @@ static int generic_array_get(
+ found:
+         /* Let's cache this item for the next invocation */
+-        chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i);
++        chain_cache_put(f->chain_cache, ci, first, a, le64toh(o->entry_array.items[0]), t, i);
+         r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o);
+         if (r < 0)
+@@ -1685,7 +1685,7 @@ found:
+                 return 0;
+         /* Let's cache this item for the next invocation */
+-        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
++        chain_cache_put(f->chain_cache, ci, first, a, le64toh(array->entry_array.items[0]), t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
+         if (subtract_one && i == 0)
+                 p = last_p;
+diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
+index 3405811..82b0f0a 100644
+--- a/src/journal/journal-verify.c
++++ b/src/journal/journal-verify.c
+@@ -249,12 +249,12 @@ static int journal_file_object_verify(JournalFile *f, uint64_t offset, Object *o
+                 }
+                 for (i = 0; i < journal_file_entry_array_n_items(o); i++)
+-                        if (o->entry_array.items[i] != 0 &&
+-                            !VALID64(o->entry_array.items[i])) {
++                        if (le64toh(o->entry_array.items[i]) != 0 &&
++                            !VALID64(le64toh(o->entry_array.items[i]))) {
+                                 log_error(OFSfmt": invalid object entry array item (%"PRIu64"/%"PRIu64"): "OFSfmt,
+                                           offset,
+                                           i, journal_file_entry_array_n_items(o),
+-                                          o->entry_array.items[i]);
++                                          le64toh(o->entry_array.items[i]));
+                                 return -EBADMSG;
+                         }
diff --git a/debian/patches/journal-allow-journal_file_copy_entry-to-work-on-non.patch b/debian/patches/journal-allow-journal_file_copy_entry-to-work-on-non.patch
new file mode 100644 (file)
index 0000000..4099598
--- /dev/null
@@ -0,0 +1,24 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 27 Nov 2013 00:59:07 +0100
+Subject: journal: allow journal_file_copy_entry() to work on non-local files
+
+(cherry picked from commit 248c78c79c5cca9b981800d816a77591e504066a)
+---
+ src/journal/journal-file.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 4e22e08..e0abddf 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -2739,10 +2739,6 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6
+         ts.monotonic = le64toh(o->entry.monotonic);
+         ts.realtime = le64toh(o->entry.realtime);
+-        if (to->tail_entry_monotonic_valid &&
+-            ts.monotonic < le64toh(to->header->tail_entry_monotonic))
+-                return -EINVAL;
+-
+         n = journal_file_entry_n_items(o);
+         items = alloca(sizeof(EntryItem) * n);
diff --git a/debian/patches/journal-assume-that-next-entry-is-after-previous-ent.patch b/debian/patches/journal-assume-that-next-entry-is-after-previous-ent.patch
new file mode 100644 (file)
index 0000000..61c758d
--- /dev/null
@@ -0,0 +1,67 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 27 Feb 2014 00:07:29 -0500
+Subject: journal: assume that next entry is after previous entry
+
+With a corrupted file, we can get in a situation where two entries
+in the entry array point to the same object. Then journal_file_next_entry
+will find the first one using generic_arrray_bisect, and try to move to
+the second one, but since the address is the same, generic_array_get will
+return the first one. journal_file_next_entry ends up in an infinite loop.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1047039
+(cherry picked from commit fb099c8d2af6620db2709e826a258089d10cdfe8)
+---
+ src/journal/journal-file.c | 26 ++++++++++++++++++++------
+ 1 file changed, 20 insertions(+), 6 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 4d9787a..57ded0a 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1359,7 +1359,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
+ }
+ typedef struct ChainCacheItem {
+-        uint64_t first; /* the array at the begin of the chain */
++        uint64_t first; /* the array at the beginning of the chain */
+         uint64_t array; /* the cached array */
+         uint64_t begin; /* the first item in the cached array */
+         uint64_t total; /* the total number of items in all arrays before this one in the chain */
+@@ -1945,7 +1945,7 @@ int journal_file_next_entry(
+                 direction_t direction,
+                 Object **ret, uint64_t *offset) {
+-        uint64_t i, n;
++        uint64_t i, n, ofs;
+         int r;
+         assert(f);
+@@ -1986,10 +1986,24 @@ int journal_file_next_entry(
+         }
+         /* And jump to it */
+-        return generic_array_get(f,
+-                                 le64toh(f->header->entry_array_offset),
+-                                 i,
+-                                 ret, offset);
++        r = generic_array_get(f,
++                              le64toh(f->header->entry_array_offset),
++                              i,
++                              ret, &ofs);
++        if (r <= 0)
++                return r;
++
++        if (p > 0 &&
++            (direction == DIRECTION_DOWN ? ofs <= p : ofs >= p)) {
++                log_debug("%s: entry array corrupted at entry %"PRIu64,
++                          f->path, i);
++                return -EBADMSG;
++        }
++
++        if (offset)
++                *offset = ofs;
++
++        return 1;
+ }
+ int journal_file_skip_entry(
diff --git a/debian/patches/journal-cleanup-up-error-handling-in-update_catalog.patch b/debian/patches/journal-cleanup-up-error-handling-in-update_catalog.patch
new file mode 100644 (file)
index 0000000..f071def
--- /dev/null
@@ -0,0 +1,103 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 11 Apr 2014 08:44:55 -0400
+Subject: journal: cleanup up error handling in update_catalog()
+
+- Negative/positive errno mixup caused duplicates not to be detected properly.
+  Now we get a warning about some duplicate entries in our own catalogs...
+- Errors in update_catalog would be ignored, but they should not be.
+
+(cherry picked from commit e3b9d9c8027a7c4c55cf1614e0fe9423fad69e8f)
+(cherry picked from commit 68018bce87437df9986b4417e5b84b1f1c2a5287)
+---
+ src/journal/catalog.c      | 25 +++++++++++++------------
+ src/journal/test-catalog.c |  3 ++-
+ 2 files changed, 15 insertions(+), 13 deletions(-)
+
+diff --git a/src/journal/catalog.c b/src/journal/catalog.c
+index 90ca008..e5342be 100644
+--- a/src/journal/catalog.c
++++ b/src/journal/catalog.c
+@@ -109,7 +109,7 @@ static int finish_item(
+                 const char *payload) {
+         ssize_t offset;
+-        CatalogItem *i;
++        _cleanup_free_ CatalogItem *i = NULL;
+         int r;
+         assert(h);
+@@ -129,13 +129,14 @@ static int finish_item(
+         i->offset = htole64((uint64_t) offset);
+         r = hashmap_put(h, i, i);
+-        if (r == EEXIST) {
++        if (r == -EEXIST) {
+                 log_warning("Duplicate entry for " SD_ID128_FORMAT_STR ".%s, ignoring.",
+                             SD_ID128_FORMAT_VAL(id), language ? language : "C");
+-                free(i);
+                 return 0;
+-        }
++        } else if (r < 0)
++                return r;
++        i = NULL;
+         return 0;
+ }
+@@ -348,8 +349,8 @@ error:
+ int catalog_update(const char* database, const char* root, const char* const* dirs) {
+         _cleanup_strv_free_ char **files = NULL;
+         char **f;
+-        Hashmap *h;
+         struct strbuf *sb = NULL;
++        _cleanup_hashmap_free_free_ Hashmap *h = NULL;
+         _cleanup_free_ CatalogItem *items = NULL;
+         CatalogItem *i;
+         Iterator j;
+@@ -371,13 +372,17 @@ int catalog_update(const char* database, const char* root, const char* const* di
+         }
+         STRV_FOREACH(f, files) {
+-                log_debug("reading file '%s'", *f);
+-                catalog_import_file(h, sb, *f);
++                log_debug("Reading file '%s'", *f);
++                r = catalog_import_file(h, sb, *f);
++                if (r < 0) {
++                        log_error("Failed to import file '%s': %s.",
++                                  *f, strerror(-r));
++                        goto finish;
++                }
+         }
+         if (hashmap_size(h) <= 0) {
+                 log_info("No items in catalog.");
+-                r = 0;
+                 goto finish;
+         } else
+                 log_debug("Found %u items in catalog.", hashmap_size(h));
+@@ -408,11 +413,7 @@ int catalog_update(const char* database, const char* root, const char* const* di
+                 log_debug("%s: wrote %u items, with %zu bytes of strings, %ld total size.",
+                           database, n, sb->len, r);
+-        r = 0;
+-
+ finish:
+-        if (h)
+-                hashmap_free_free(h);
+         if (sb)
+                 strbuf_cleanup(sb);
+diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c
+index 5db5bed..f021dbf 100644
+--- a/src/journal/test-catalog.c
++++ b/src/journal/test-catalog.c
+@@ -126,7 +126,8 @@ int main(int argc, char *argv[]) {
+         setlocale(LC_ALL, "de_DE.UTF-8");
+-        log_set_max_level(LOG_DEBUG);
++        log_parse_environment();
++        log_open();
+         test_catalog_importing();
diff --git a/debian/patches/journal-don-t-clobber-return-parameters-of-sd_journa.patch b/debian/patches/journal-don-t-clobber-return-parameters-of-sd_journa.patch
new file mode 100644 (file)
index 0000000..0d35d7d
--- /dev/null
@@ -0,0 +1,51 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 19 Feb 2014 17:49:50 +0100
+Subject: journal: don't clobber return parameters of
+ sd_journal_get_cutoff_realtime_usec() on failure
+
+(cherry picked from commit 581483bf59ea62147739e71dd2216477be03411c)
+---
+ src/journal/sd-journal.c | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index f4af1f6..b1bd61f 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -2359,6 +2359,7 @@ _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from,
+         Iterator i;
+         JournalFile *f;
+         bool first = true;
++        uint64_t fmin = 0, tmax = 0;
+         int r;
+         if (!j)
+@@ -2382,19 +2383,20 @@ _public_ int sd_journal_get_cutoff_realtime_usec(sd_journal *j, uint64_t *from,
+                         continue;
+                 if (first) {
+-                        if (from)
+-                                *from = fr;
+-                        if (to)
+-                                *to = t;
++                        fmin = fr;
++                        tmax = t;
+                         first = false;
+                 } else {
+-                        if (from)
+-                                *from = MIN(fr, *from);
+-                        if (to)
+-                                *to = MAX(t, *to);
++                        fmin = MIN(fr, fmin);
++                        tmax = MAX(t, tmax);
+                 }
+         }
++        if (from)
++                *from = fmin;
++        if (to)
++                *to = tmax;
++
+         return first ? 0 : 1;
+ }
diff --git a/debian/patches/journal-downgrade-vaccuum-message-to-debug-level.patch b/debian/patches/journal-downgrade-vaccuum-message-to-debug-level.patch
new file mode 100644 (file)
index 0000000..ece0649
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 23 Feb 2014 17:05:37 +0100
+Subject: journal: downgrade vaccuum message to debug level
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1047148
+(cherry picked from commit 3bb621e1e66b704c0c2dcef31c66f7c646dd47f6)
+---
+ src/journal/journal-vacuum.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
+index 8b07f65..695e518 100644
+--- a/src/journal/journal-vacuum.c
++++ b/src/journal/journal-vacuum.c
+@@ -334,7 +334,7 @@ finish:
+                 free(list[i].filename);
+         free(list);
+-        log_info("Vacuuming done, freed %"PRIu64" bytes", freed);
++        log_debug("Vacuuming done, freed %"PRIu64" bytes", freed);
+         return r;
+ }
diff --git a/debian/patches/journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch b/debian/patches/journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch
new file mode 100644 (file)
index 0000000..cc85d8c
--- /dev/null
@@ -0,0 +1,32 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 3 Dec 2013 08:07:32 -0500
+Subject: journal: fail silently in sd_j_sendv() if journal is unavailable
+
+"syslog(3) and sd_journal_print() may largely be used interchangeably
+functionality-wise" according to sd_journal_print(3). This socket
+should be always available except in rare circumstatances, and we
+don't random applications to fail on logging, so let's do what syslog
+did. The alternative of forcing all callers to do error handling for
+this rare case doesn't really have any benefits, since if they can't
+log there isn't much they can do anyway.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1023041
+---
+ src/journal/journal-send.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index d00e26f..d99ff0c 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -305,6 +305,10 @@ _public_ int sd_journal_sendv(const struct iovec *iov, int n) {
+         if (k >= 0)
+                 return 0;
++        /* Fail silently if the journal is not available */
++        if (errno == ENOENT)
++                return 0;
++
+         if (errno != EMSGSIZE && errno != ENOBUFS)
+                 return -errno;
diff --git a/debian/patches/journal-file-protect-against-alloca-0.patch b/debian/patches/journal-file-protect-against-alloca-0.patch
new file mode 100644 (file)
index 0000000..d86bacc
--- /dev/null
@@ -0,0 +1,23 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Mon, 16 Dec 2013 23:35:30 +0100
+Subject: journal-file: protect against alloca(0)
+
+(cherry picked from commit 4faa70046ca0c1775c8e231179716a78cf3291b1)
+---
+ src/journal/journal-file.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 090cf97..8ea258b 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -2737,7 +2737,8 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6
+         ts.realtime = le64toh(o->entry.realtime);
+         n = journal_file_entry_n_items(o);
+-        items = alloca(sizeof(EntryItem) * n);
++        /* alloca() can't take 0, hence let's allocate at least one */
++        items = alloca(sizeof(EntryItem) * MAX(1u, n));
+         for (i = 0; i < n; i++) {
+                 uint64_t l, h;
diff --git a/debian/patches/journal-file.c-remove-redundant-assignment-of-variab.patch b/debian/patches/journal-file.c-remove-redundant-assignment-of-variab.patch
new file mode 100644 (file)
index 0000000..d7a5073
--- /dev/null
@@ -0,0 +1,25 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 17 Dec 2013 20:15:45 +0100
+Subject: journal-file.c: remove redundant assignment of variable
+
+we also do 'last_index = (uint64_t) -1;' at the end of the while
+loop so there is no reason to also do it here.
+
+(cherry picked from commit 0d647f7f73fa17074a1df81e2bdd00877554e436)
+---
+ src/journal/journal-file.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 71ef092..5ef6a2a 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1628,8 +1628,6 @@ static int generic_array_bisect(
+                                         else
+                                                 left = y + 1;
+                                 }
+-
+-                                last_index = (uint64_t) -1;
+                         }
+                         for (;;) {
diff --git a/debian/patches/journal-fix-access-to-munmapped-memory-in-sd_journal.patch b/debian/patches/journal-fix-access-to-munmapped-memory-in-sd_journal.patch
new file mode 100644 (file)
index 0000000..d38f849
--- /dev/null
@@ -0,0 +1,322 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 28 Dec 2013 19:33:23 -0500
+Subject: journal: fix access to munmapped memory in
+ sd_journal_enumerate_unique
+
+sd_j_e_u needs to keep a reference to an object while comparing it
+with possibly duplicate objects in other files. Because the size of
+mmap cache is limited, with enough files and object to compare to,
+at some point the object being compared would be munmapped, resulting
+in a segmentation fault.
+
+Fix this issue by turning keep_always into a reference count that can
+be increased and decreased. Other callers which set keep_always=true
+are unmodified: their references are never released but are ignored
+when the whole file is closed, which happens at some point. keep_always
+is increased in sd_j_e_u and later on released.
+
+(cherry picked from commit ae97089d49d1795a35a443b7b830ee666028e733)
+---
+ src/journal/journal-file.c   |  5 +---
+ src/journal/journal-file.h   | 24 +++++++++++++++++++
+ src/journal/journal-verify.c |  4 ----
+ src/journal/mmap-cache.c     | 57 +++++++++++++++++++++++++++++++++++---------
+ src/journal/mmap-cache.h     | 18 +++++++++++++-
+ src/journal/sd-journal.c     | 18 +++++++++++---
+ 6 files changed, 103 insertions(+), 23 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index ba65464..4d9787a 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -419,7 +419,6 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec
+         void *t;
+         Object *o;
+         uint64_t s;
+-        unsigned context;
+         assert(f);
+         assert(ret);
+@@ -428,10 +427,8 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec
+         if (!VALID64(offset))
+                 return -EFAULT;
+-        /* One context for each type, plus one catch-all for the rest */
+-        context = type > 0 && type < _OBJECT_TYPE_MAX ? type : 0;
+-        r = journal_file_move_to(f, context, false, offset, sizeof(ObjectHeader), &t);
++        r = journal_file_move_to(f, type_to_context(type), false, offset, sizeof(ObjectHeader), &t);
+         if (r < 0)
+                 return r;
+diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
+index 50bdb67..0bd23f7 100644
+--- a/src/journal/journal-file.h
++++ b/src/journal/journal-file.h
+@@ -128,6 +128,10 @@ int journal_file_open_reliably(
+ #define ALIGN64(x) (((x) + 7ULL) & ~7ULL)
+ #define VALID64(x) (((x) & 7ULL) == 0ULL)
++/* Use six characters to cover the offsets common in smallish journal
++ * files without adding too many zeros. */
++#define OFSfmt "%06"PRIx64
++
+ static inline bool VALID_REALTIME(uint64_t u) {
+         /* This considers timestamps until the year 3112 valid. That should be plenty room... */
+         return u > 0 && u < (1ULL << 55);
+@@ -197,3 +201,23 @@ int journal_file_get_cutoff_realtime_usec(JournalFile *f, usec_t *from, usec_t *
+ int journal_file_get_cutoff_monotonic_usec(JournalFile *f, sd_id128_t boot, usec_t *from, usec_t *to);
+ bool journal_file_rotate_suggested(JournalFile *f, usec_t max_file_usec);
++
++
++static unsigned type_to_context(int type) {
++        /* One context for each type, plus one catch-all for the rest */
++        return type > 0 && type < _OBJECT_TYPE_MAX ? type : 0;
++}
++
++static inline int journal_file_object_keep(JournalFile *f, Object *o, uint64_t offset) {
++        unsigned context = type_to_context(o->object.type);
++
++        return mmap_cache_get(f->mmap, f->fd, f->prot, context, true,
++                              offset, o->object.size, &f->last_stat, NULL);
++}
++
++static inline int journal_file_object_release(JournalFile *f, Object *o, uint64_t offset) {
++        unsigned context = type_to_context(o->object.type);
++
++        return mmap_cache_release(f->mmap, f->fd, f->prot, context,
++                                  offset, o->object.size);
++}
+diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
+index 82b0f0a..f2422ff 100644
+--- a/src/journal/journal-verify.c
++++ b/src/journal/journal-verify.c
+@@ -34,10 +34,6 @@
+ #include "compress.h"
+ #include "fsprg.h"
+-/* Use six characters to cover the offsets common in smallish journal
+- * files without adding to many zeros. */
+-#define OFSfmt "%06"PRIx64
+-
+ static int journal_file_object_verify(JournalFile *f, uint64_t offset, Object *o) {
+         uint64_t i;
+diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
+index 42a8a7d..24b2bb8 100644
+--- a/src/journal/mmap-cache.c
++++ b/src/journal/mmap-cache.c
+@@ -38,7 +38,7 @@ typedef struct FileDescriptor FileDescriptor;
+ struct Window {
+         MMapCache *cache;
+-        bool keep_always;
++        unsigned keep_always;
+         bool in_unused;
+         int prot;
+@@ -185,7 +185,7 @@ static void context_detach_window(Context *c) {
+         c->window = NULL;
+         LIST_REMOVE(Context, by_window, w->contexts, c);
+-        if (!w->contexts && !w->keep_always) {
++        if (!w->contexts && w->keep_always == 0) {
+                 /* Not used anymore? */
+                 LIST_PREPEND(Window, unused, c->cache->unused, w);
+                 if (!c->cache->last_unused)
+@@ -360,7 +360,6 @@ static int try_context(
+         assert(m->n_ref > 0);
+         assert(fd >= 0);
+         assert(size > 0);
+-        assert(ret);
+         c = hashmap_get(m->contexts, UINT_TO_PTR(context+1));
+         if (!c)
+@@ -378,9 +377,10 @@ static int try_context(
+                 return 0;
+         }
+-        c->window->keep_always = c->window->keep_always || keep_always;
++        c->window->keep_always += keep_always;
+-        *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset);
++        if (ret)
++                *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset);
+         return 1;
+ }
+@@ -402,7 +402,6 @@ static int find_mmap(
+         assert(m->n_ref > 0);
+         assert(fd >= 0);
+         assert(size > 0);
+-        assert(ret);
+         f = hashmap_get(m->fds, INT_TO_PTR(fd + 1));
+         if (!f)
+@@ -422,9 +421,10 @@ static int find_mmap(
+                 return -ENOMEM;
+         context_attach_window(c, w);
+-        w->keep_always = w->keep_always || keep_always;
++        w->keep_always += keep_always;
+-        *ret = (uint8_t*) w->ptr + (offset - w->offset);
++        if (ret)
++                *ret = (uint8_t*) w->ptr + (offset - w->offset);
+         return 1;
+ }
+@@ -450,7 +450,6 @@ static int add_mmap(
+         assert(m->n_ref > 0);
+         assert(fd >= 0);
+         assert(size > 0);
+-        assert(ret);
+         woffset = offset & ~((uint64_t) page_size() - 1ULL);
+         wsize = size + (offset - woffset);
+@@ -520,7 +519,8 @@ static int add_mmap(
+         c->window = w;
+         LIST_PREPEND(Context, by_window, w->contexts, c);
+-        *ret = (uint8_t*) w->ptr + (offset - w->offset);
++        if (ret)
++                *ret = (uint8_t*) w->ptr + (offset - w->offset);
+         return 1;
+ }
+@@ -541,7 +541,6 @@ int mmap_cache_get(
+         assert(m->n_ref > 0);
+         assert(fd >= 0);
+         assert(size > 0);
+-        assert(ret);
+         /* Check whether the current context is the right one already */
+         r = try_context(m, fd, prot, context, keep_always, offset, size, ret);
+@@ -563,6 +562,42 @@ int mmap_cache_get(
+         return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret);
+ }
++int mmap_cache_release(
++                MMapCache *m,
++                int fd,
++                int prot,
++                unsigned context,
++                uint64_t offset,
++                size_t size) {
++
++        FileDescriptor *f;
++        Window *w;
++
++        assert(m);
++        assert(m->n_ref > 0);
++        assert(fd >= 0);
++        assert(size > 0);
++
++        f = hashmap_get(m->fds, INT_TO_PTR(fd + 1));
++        if (!f)
++                return -EBADF;
++
++        assert(f->fd == fd);
++
++        LIST_FOREACH(by_fd, w, f->windows)
++                if (window_matches(w, fd, prot, offset, size))
++                        break;
++
++        if (!w)
++                return -ENOENT;
++
++        if (w->keep_always == 0)
++                return -ENOLCK;
++
++        w->keep_always -= 1;
++        return 0;
++}
++
+ void mmap_cache_close_fd(MMapCache *m, int fd) {
+         FileDescriptor *f;
+diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h
+index 912336d..647555a 100644
+--- a/src/journal/mmap-cache.h
++++ b/src/journal/mmap-cache.h
+@@ -31,7 +31,23 @@ MMapCache* mmap_cache_new(void);
+ MMapCache* mmap_cache_ref(MMapCache *m);
+ MMapCache* mmap_cache_unref(MMapCache *m);
+-int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, size_t size, struct stat *st, void **ret);
++int mmap_cache_get(
++        MMapCache *m,
++        int fd,
++        int prot,
++        unsigned context,
++        bool keep_always,
++        uint64_t offset,
++        size_t size,
++        struct stat *st,
++        void **ret);
++int mmap_cache_release(
++        MMapCache *m,
++        int fd,
++        int prot,
++        unsigned context,
++        uint64_t offset,
++        size_t size);
+ void mmap_cache_close_fd(MMapCache *m, int fd);
+ void mmap_cache_close_context(MMapCache *m, unsigned context);
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 52abbe9..46c3feb 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -2508,9 +2508,7 @@ _public_ int sd_journal_query_unique(sd_journal *j, const char *field) {
+ }
+ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l) {
+-        Object *o;
+         size_t k;
+-        int r;
+         if (!j)
+                 return -EINVAL;
+@@ -2535,9 +2533,11 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
+         for (;;) {
+                 JournalFile *of;
+                 Iterator i;
++                Object *o;
+                 const void *odata;
+                 size_t ol;
+                 bool found;
++                int r;
+                 /* Proceed to next data object in the field's linked list */
+                 if (j->unique_offset == 0) {
+@@ -2574,8 +2574,16 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
+                         return r;
+                 /* Let's do the type check by hand, since we used 0 context above. */
+-                if (o->object.type != OBJECT_DATA)
++                if (o->object.type != OBJECT_DATA) {
++                        log_error("%s:offset " OFSfmt ": object has type %d, expected %d",
++                                  j->unique_file->path, j->unique_offset,
++                                  o->object.type, OBJECT_DATA);
+                         return -EBADMSG;
++                }
++
++                r = journal_file_object_keep(j->unique_file, o, j->unique_offset);
++                if (r < 0)
++                        return r;
+                 r = return_data(j, j->unique_file, o, &odata, &ol);
+                 if (r < 0)
+@@ -2609,6 +2617,10 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
+                 if (found)
+                         continue;
++                r = journal_file_object_release(j->unique_file, o, j->unique_offset);
++                if (r < 0)
++                        return r;
++
+                 r = return_data(j, j->unique_file, o, data, l);
+                 if (r < 0)
+                         return r;
diff --git a/debian/patches/journal-fix-against-theoretical-undefined-behavior.patch b/debian/patches/journal-fix-against-theoretical-undefined-behavior.patch
new file mode 100644 (file)
index 0000000..bb38e16
--- /dev/null
@@ -0,0 +1,40 @@
+From: Shawn Landden <shawn@churchofgit.com>
+Date: Mon, 16 Dec 2013 15:41:00 -0800
+Subject: journal: fix against (theoretical) undefined behavior
+
+While all the libc implementations I know return NULL when memchr's size
+parameter is 0, without accessing any memory, passing NULL to memchr is
+still invalid:
+
+C11 7.24.1p2: Where an argument declared as "size_t n" specifies the length
+of the array for a function, n can have the value zero on a call to that
+function. Unless explicitly stated otherwise in the description of a
+particular function in this subclause, pointer arguments on such a call
+shall still have valid values, as described in 7.1.4. On such a call, a
+function that locates a character finds no occurrence, a function that
+compares two character sequences returns zero, and a function that copies
+characters copies zero characters.
+
+see http://llvm.org/bugs/show_bug.cgi?id=18247
+
+(cherry picked from commit 08c6f819cb0ed435649583da02fa0de965b32dbe)
+---
+ src/journal/journal-file.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 8ea258b..71ef092 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1010,7 +1010,10 @@ static int journal_file_append_data(
+         if (r < 0)
+                 return r;
+-        eq = memchr(data, '=', size);
++        if (!data)
++                eq = NULL;
++        else
++                eq = memchr(data, '=', size);
+         if (eq && eq > data) {
+                 uint64_t fp;
+                 Object *fo;
diff --git a/debian/patches/journal-fix-export-of-messages-containing-newlines.patch b/debian/patches/journal-fix-export-of-messages-containing-newlines.patch
new file mode 100644 (file)
index 0000000..1d0fd73
--- /dev/null
@@ -0,0 +1,79 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 31 Mar 2014 08:57:28 -0400
+Subject: journal: fix export of messages containing newlines
+
+In "export" format, newlines are significant, and messages containing
+newlines must be exported as "binary".
+
+(cherry picked from commit 0ade5ffe2778e7b238bba8d979ca4d53dee1e702)
+(cherry picked from commit 0fa79586f73bddf872b8e3bb5af4c9926cb84d41)
+---
+ src/shared/logs-show.c | 7 ++++---
+ src/shared/utf8.c      | 5 +++--
+ src/shared/utf8.h      | 5 ++++-
+ 3 files changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
+index 91eefb3..00e6d11 100644
+--- a/src/shared/logs-show.c
++++ b/src/shared/logs-show.c
+@@ -544,7 +544,9 @@ static int output_export(
+                     startswith(data, "_BOOT_ID="))
+                         continue;
+-                if (!utf8_is_printable(data, length)) {
++                if (utf8_is_printable_newline(data, length, false))
++                        fwrite(data, length, 1, f);
++                else {
+                         const char *c;
+                         uint64_t le64;
+@@ -559,8 +561,7 @@ static int output_export(
+                         le64 = htole64(length - (c - (const char*) data) - 1);
+                         fwrite(&le64, sizeof(le64), 1, f);
+                         fwrite(c + 1, length - (c - (const char*) data) - 1, 1, f);
+-                } else
+-                        fwrite(data, length, 1, f);
++                }
+                 fputc('\n', f);
+         }
+diff --git a/src/shared/utf8.c b/src/shared/utf8.c
+index 2b70d45..15605e6 100644
+--- a/src/shared/utf8.c
++++ b/src/shared/utf8.c
+@@ -136,7 +136,7 @@ static int utf8_encoded_to_unichar(const char *str) {
+         return unichar;
+ }
+-bool utf8_is_printable(const char* str, size_t length) {
++bool utf8_is_printable_newline(const char* str, size_t length, bool newline) {
+         const uint8_t *p;
+         assert(str);
+@@ -145,7 +145,8 @@ bool utf8_is_printable(const char* str, size_t length) {
+                 int encoded_len = utf8_encoded_valid_unichar((const char *)p);
+                 int val = utf8_encoded_to_unichar((const char*)p);
+-                if (encoded_len < 0 || val < 0 || is_unicode_control(val))
++                if (encoded_len < 0 || val < 0 || is_unicode_control(val) ||
++                    (!newline && val == '\n'))
+                         return false;
+                 length -= encoded_len;
+diff --git a/src/shared/utf8.h b/src/shared/utf8.h
+index f93dfb8..b14709a 100644
+--- a/src/shared/utf8.h
++++ b/src/shared/utf8.h
+@@ -31,7 +31,10 @@ const char *utf8_is_valid(const char *s) _pure_;
+ char *ascii_is_valid(const char *s) _pure_;
+ char *utf8_escape_invalid(const char *s);
+-bool utf8_is_printable(const char* str, size_t length) _pure_;
++bool utf8_is_printable_newline(const char* str, size_t length, bool newline) _pure_;
++_pure_ static inline bool utf8_is_printable(const char* str, size_t length) {
++        return utf8_is_printable_newline(str, length, true);
++}
+ char *ascii_filter(const char *s);
diff --git a/debian/patches/journal-fix-iteration-when-we-go-backwards-from-the-.patch b/debian/patches/journal-fix-iteration-when-we-go-backwards-from-the-.patch
new file mode 100644 (file)
index 0000000..e2b4fe3
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 27 Nov 2013 00:58:39 +0100
+Subject: journal: fix iteration when we go backwards from the beginning of an
+ array chain element
+
+(cherry picked from commit e5462cd80e5328a769137c261c93931ea0c27bab)
+---
+ src/journal/journal-file.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 02f7554..4e22e08 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1687,7 +1687,7 @@ found:
+                 return 0;
+         /* Let's cache this item for the next invocation */
+-        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0));
++        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
+         if (subtract_one && i == 0)
+                 p = last_p;
diff --git a/debian/patches/journal-fix-minor-memory-leak.patch b/debian/patches/journal-fix-minor-memory-leak.patch
new file mode 100644 (file)
index 0000000..42ee383
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 8 Nov 2013 13:53:25 +0100
+Subject: journal: fix minor memory leak
+
+---
+ src/journal/sd-journal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 7700d6c..9676f0f 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -1276,7 +1276,7 @@ static void check_network(sd_journal *j, int fd) {
+ static bool file_has_type_prefix(const char *prefix, const char *filename) {
+         const char *full, *tilded, *atted;
+-        full = strappend(prefix, ".journal");
++        full = strappenda(prefix, ".journal");
+         tilded = strappenda(full, "~");
+         atted = strappenda(prefix, "@");
diff --git a/debian/patches/journal-forget-file-after-encountering-an-error.patch b/debian/patches/journal-forget-file-after-encountering-an-error.patch
new file mode 100644 (file)
index 0000000..3421af7
--- /dev/null
@@ -0,0 +1,72 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 27 Feb 2014 00:11:54 -0500
+Subject: journal: forget file after encountering an error
+
+If we encounter an inconsistency in a file, let's just
+ignore it. Otherwise, after previous patch, we would try,
+and fail, to use this file in every invocation of sd_journal_next
+or sd_journal_previous that happens afterwards.
+
+(cherry picked from commit a9a245c128af6c0418085062c60251bc51fa4a94)
+---
+ src/journal/sd-journal.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index b1bd61f..661257b 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -50,6 +50,8 @@
+ #define DEFAULT_DATA_THRESHOLD (64*1024)
++static void remove_file_real(sd_journal *j, JournalFile *f);
++
+ static bool journal_pid_changed(sd_journal *j) {
+         assert(j);
+@@ -895,6 +897,7 @@ static int real_journal_next(sd_journal *j, direction_t direction) {
+                 r = next_beyond_location(j, f, direction, &o, &p);
+                 if (r < 0) {
+                         log_debug("Can't iterate through %s, ignoring: %s", f->path, strerror(-r));
++                        remove_file_real(j, f);
+                         continue;
+                 } else if (r == 0)
+                         continue;
+@@ -1368,7 +1371,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) {
+ }
+ static int remove_file(sd_journal *j, const char *prefix, const char *filename) {
+-        char *path;
++        _cleanup_free_ char *path;
+         JournalFile *f;
+         assert(j);
+@@ -1380,10 +1383,17 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename)
+                 return -ENOMEM;
+         f = hashmap_get(j->files, path);
+-        free(path);
+         if (!f)
+                 return 0;
++        remove_file_real(j, f);
++        return 0;
++}
++
++static void remove_file_real(sd_journal *j, JournalFile *f) {
++        assert(j);
++        assert(f);
++
+         hashmap_remove(j->files, f->path);
+         log_debug("File %s removed.", f->path);
+@@ -1401,8 +1411,6 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename)
+         journal_file_close(f);
+         j->current_invalidate_counter ++;
+-
+-        return 0;
+ }
+ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) {
diff --git a/debian/patches/journal-make-table-const.patch b/debian/patches/journal-make-table-const.patch
new file mode 100644 (file)
index 0000000..ab3bd9a
--- /dev/null
@@ -0,0 +1,43 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Nov 2013 18:40:23 +0100
+Subject: journal: make table const
+
+(cherry picked from commit b8e891e699e1336c5527f8203e4e8f67c9bbeb84)
+---
+ src/journal/journal-file.c | 2 +-
+ src/journal/journal-file.h | 8 ++++----
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index d1b8433..d3bdaea 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -401,7 +401,7 @@ static int journal_file_move_to(JournalFile *f, int context, bool keep_always, u
+ static uint64_t minimum_header_size(Object *o) {
+-        static uint64_t table[] = {
++        static const uint64_t table[] = {
+                 [OBJECT_DATA] = sizeof(DataObject),
+                 [OBJECT_FIELD] = sizeof(FieldObject),
+                 [OBJECT_ENTRY] = sizeof(EntryObject),
+diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
+index 5cc2c2d..50bdb67 100644
+--- a/src/journal/journal-file.h
++++ b/src/journal/journal-file.h
+@@ -54,11 +54,11 @@ typedef struct JournalFile {
+         int flags;
+         int prot;
+-        bool writable;
+-        bool compress;
+-        bool seal;
++        bool writable:1;
++        bool compress:1;
++        bool seal:1;
+-        bool tail_entry_monotonic_valid;
++        bool tail_entry_monotonic_valid:1;
+         direction_t last_direction;
diff --git a/debian/patches/journal-optimize-bisection-logic-a-bit-by-caching-th.patch b/debian/patches/journal-optimize-bisection-logic-a-bit-by-caching-th.patch
new file mode 100644 (file)
index 0000000..b1701f2
--- /dev/null
@@ -0,0 +1,244 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Nov 2013 20:37:53 +0100
+Subject: journal: optimize bisection logic a bit by caching the last position
+
+This way we can do a quick restart limiting a bit how wildly we need to
+jump around during the bisection process.
+
+(cherry picked from commit f268980d2cee694fa4118a71402a47c316af0425)
+---
+ src/journal/journal-file.c | 134 +++++++++++++++++++++++++++++++++------------
+ 1 file changed, 99 insertions(+), 35 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index d3bdaea..02f7554 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -1366,6 +1366,7 @@ typedef struct ChainCacheItem {
+         uint64_t array; /* the cached array */
+         uint64_t begin; /* the first item in the cached array */
+         uint64_t total; /* the total number of items in all arrays before this one in the chain */
++        uint64_t last_index; /* the last index we looked at, to optimize locality when bisecting */
+ } ChainCacheItem;
+ static void chain_cache_put(
+@@ -1374,7 +1375,8 @@ static void chain_cache_put(
+                 uint64_t first,
+                 uint64_t array,
+                 uint64_t begin,
+-                uint64_t total) {
++                uint64_t total,
++                uint64_t last_index) {
+         if (!ci) {
+                 /* If the chain item to cache for this chain is the
+@@ -1402,12 +1404,14 @@ static void chain_cache_put(
+         ci->array = array;
+         ci->begin = begin;
+         ci->total = total;
++        ci->last_index = last_index;
+ }
+-static int generic_array_get(JournalFile *f,
+-                             uint64_t first,
+-                             uint64_t i,
+-                             Object **ret, uint64_t *offset) {
++static int generic_array_get(
++                JournalFile *f,
++                uint64_t first,
++                uint64_t i,
++                Object **ret, uint64_t *offset) {
+         Object *o;
+         uint64_t p = 0, a, t = 0;
+@@ -1448,7 +1452,7 @@ static int generic_array_get(JournalFile *f,
+ found:
+         /* Let's cache this item for the next invocation */
+-        chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t);
++        chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i);
+         r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o);
+         if (r < 0)
+@@ -1463,11 +1467,12 @@ found:
+         return 1;
+ }
+-static int generic_array_get_plus_one(JournalFile *f,
+-                                      uint64_t extra,
+-                                      uint64_t first,
+-                                      uint64_t i,
+-                                      Object **ret, uint64_t *offset) {
++static int generic_array_get_plus_one(
++                JournalFile *f,
++                uint64_t extra,
++                uint64_t first,
++                uint64_t i,
++                Object **ret, uint64_t *offset) {
+         Object *o;
+@@ -1498,17 +1503,18 @@ enum {
+         TEST_RIGHT
+ };
+-static int generic_array_bisect(JournalFile *f,
+-                                uint64_t first,
+-                                uint64_t n,
+-                                uint64_t needle,
+-                                int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
+-                                direction_t direction,
+-                                Object **ret,
+-                                uint64_t *offset,
+-                                uint64_t *idx) {
+-
+-        uint64_t a, p, t = 0, i = 0, last_p = 0;
++static int generic_array_bisect(
++                JournalFile *f,
++                uint64_t first,
++                uint64_t n,
++                uint64_t needle,
++                int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
++                direction_t direction,
++                Object **ret,
++                uint64_t *offset,
++                uint64_t *idx) {
++
++        uint64_t a, p, t = 0, i = 0, last_p = 0, last_index = (uint64_t) -1;
+         bool subtract_one = false;
+         Object *o, *array = NULL;
+         int r;
+@@ -1533,7 +1539,7 @@ static int generic_array_bisect(JournalFile *f,
+                         return r;
+                 if (r == TEST_LEFT) {
+-                        /* OK, what we are looking for is right of th
++                        /* OK, what we are looking for is right of the
+                          * begin of this EntryArray, so let's jump
+                          * straight to previously cached array in the
+                          * chain */
+@@ -1541,6 +1547,7 @@ static int generic_array_bisect(JournalFile *f,
+                         a = ci->array;
+                         n -= ci->total;
+                         t = ci->total;
++                        last_index = ci->last_index;
+                 }
+         }
+@@ -1571,6 +1578,60 @@ static int generic_array_bisect(JournalFile *f,
+                 if (r == TEST_RIGHT) {
+                         left = 0;
+                         right -= 1;
++
++                        if (last_index != (uint64_t) -1) {
++                                assert(last_index <= right);
++
++                                /* If we cached the last index we
++                                 * looked at, let's try to not to jump
++                                 * too wildly around and see if we can
++                                 * limit the range to look at early to
++                                 * the immediate neighbors of the last
++                                 * index we looked at. */
++
++                                if (last_index > 0) {
++                                        uint64_t x = last_index - 1;
++
++                                        p = le64toh(array->entry_array.items[x]);
++                                        if (p <= 0)
++                                                return -EBADMSG;
++
++                                        r = test_object(f, p, needle);
++                                        if (r < 0)
++                                                return r;
++
++                                        if (r == TEST_FOUND)
++                                                r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT;
++
++                                        if (r == TEST_RIGHT)
++                                                right = x;
++                                        else
++                                                left = x + 1;
++                                }
++
++                                if (last_index < right) {
++                                        uint64_t y = last_index + 1;
++
++                                        p = le64toh(array->entry_array.items[y]);
++                                        if (p <= 0)
++                                                return -EBADMSG;
++
++                                        r = test_object(f, p, needle);
++                                        if (r < 0)
++                                                return r;
++
++                                        if (r == TEST_FOUND)
++                                                r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT;
++
++                                        if (r == TEST_RIGHT)
++                                                right = y;
++                                        else
++                                                left = y + 1;
++                                }
++
++                                last_index = (uint64_t) -1;
++                        }
++
+                         for (;;) {
+                                 if (left == right) {
+                                         if (direction == DIRECTION_UP)
+@@ -1581,8 +1642,8 @@ static int generic_array_bisect(JournalFile *f,
+                                 }
+                                 assert(left < right);
+-
+                                 i = (left + right) / 2;
++
+                                 p = le64toh(array->entry_array.items[i]);
+                                 if (p <= 0)
+                                         return -EBADMSG;
+@@ -1615,6 +1676,7 @@ static int generic_array_bisect(JournalFile *f,
+                 n -= k;
+                 t += k;
++                last_index = (uint64_t) -1;
+                 a = le64toh(array->entry_array.next_entry_array_offset);
+         }
+@@ -1625,7 +1687,7 @@ found:
+                 return 0;
+         /* Let's cache this item for the next invocation */
+-        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t);
++        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0));
+         if (subtract_one && i == 0)
+                 p = last_p;
+@@ -1650,16 +1712,18 @@ found:
+         return 1;
+ }
+-static int generic_array_bisect_plus_one(JournalFile *f,
+-                                         uint64_t extra,
+-                                         uint64_t first,
+-                                         uint64_t n,
+-                                         uint64_t needle,
+-                                         int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
+-                                         direction_t direction,
+-                                         Object **ret,
+-                                         uint64_t *offset,
+-                                         uint64_t *idx) {
++
++static int generic_array_bisect_plus_one(
++                JournalFile *f,
++                uint64_t extra,
++                uint64_t first,
++                uint64_t n,
++                uint64_t needle,
++                int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
++                direction_t direction,
++                Object **ret,
++                uint64_t *offset,
++                uint64_t *idx) {
+         int r;
+         bool step_back = false;
diff --git a/debian/patches/journal-pipe-journalctl-help-output-into-a-pager.patch b/debian/patches/journal-pipe-journalctl-help-output-into-a-pager.patch
new file mode 100644 (file)
index 0000000..ca55126
--- /dev/null
@@ -0,0 +1,46 @@
+From: Djalal Harouni <tixxdz@opendz.org>
+Date: Thu, 12 Dec 2013 00:22:48 +0100
+Subject: journal: pipe journalctl help output into a pager
+
+journalctl help output might run off the screen, so be consistent
+as other systemd tools do and pipe it into a pager.
+
+(cherry picked from commit faf5077f891aa249270b2a3d9f0104c3eec02da6)
+---
+ src/journal/journalctl.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index a5c4779..71e28b0 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -114,8 +114,18 @@ typedef struct boot_id_t {
+         uint64_t last;
+ } boot_id_t;
++static void pager_open_if_enabled(void) {
++
++        if (arg_no_pager)
++                return;
++
++        pager_open(arg_pager_end);
++}
++
+ static int help(void) {
++        pager_open_if_enabled();
++
+         printf("%s [OPTIONS...] [MATCHES...]\n\n"
+                "Query the journal.\n\n"
+                "Flags:\n"
+@@ -1635,8 +1645,8 @@ int main(int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
+-        if (!arg_no_pager && !arg_follow)
+-                pager_open(arg_pager_end);
++        if (!arg_follow)
++                pager_open_if_enabled();
+         if (!arg_quiet) {
+                 usec_t start, end;
diff --git a/debian/patches/journal-simplify-pre-allocation-logic.patch b/debian/patches/journal-simplify-pre-allocation-logic.patch
new file mode 100644 (file)
index 0000000..a0cad0f
--- /dev/null
@@ -0,0 +1,59 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 27 Nov 2013 01:44:52 +0100
+Subject: journal: simplify pre-allocation logic
+
+let's just do a single fallocate() as far as possible, and don't
+distuingish between allocated space and file size.
+
+This way we can save a syscall for each append, which makes quite some
+benefits.
+
+(cherry picked from commit eda4b58b50509dc8ad0428a46e20f6c5cf516d58)
+---
+ src/journal/journal-file.c | 19 ++++++++-----------
+ 1 file changed, 8 insertions(+), 11 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index e0abddf..090cf97 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -315,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) {
+ }
+ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
+-        uint64_t old_size, new_size, file_size;
++        uint64_t old_size, new_size;
+         int r;
+         assert(f);
+@@ -356,6 +356,11 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
+                 }
+         }
++        /* Increase by larger blocks at once */
++        new_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
++        if (f->metrics.max_size > 0 && new_size > f->metrics.max_size)
++                new_size = f->metrics.max_size;
++
+         /* Note that the glibc fallocate() fallback is very
+            inefficient, hence we try to minimize the allocation area
+            as we can. */
+@@ -363,16 +368,8 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
+         if (r != 0)
+                 return -r;
+-        /* Increase the file size a bit further than this, so that we
+-         * we can create larger memory maps to cache */
+-        file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
+-        if (file_size > (uint64_t) f->last_stat.st_size) {
+-                if (file_size > new_size)
+-                        ftruncate(f->fd, file_size);
+-
+-                if (fstat(f->fd, &f->last_stat) < 0)
+-                        return -errno;
+-        }
++        if (fstat(f->fd, &f->last_stat) < 0)
++                return -errno;
+         f->header->arena_size = htole64(new_size - le64toh(f->header->header_size));
diff --git a/debian/patches/journal-timestamp-support-on-console-messages.patch b/debian/patches/journal-timestamp-support-on-console-messages.patch
new file mode 100644 (file)
index 0000000..db4cc22
--- /dev/null
@@ -0,0 +1,84 @@
+From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
+Date: Wed, 13 Nov 2013 15:27:19 +0100
+Subject: journal: timestamp support on console messages
+
+journald mimics the kernel here: timestamps will be printed if
+/sys/module/printk/parameters/time contains "Y".
+---
+ src/journal/journald-console.c | 34 +++++++++++++++++++++++++++++++---
+ 1 file changed, 31 insertions(+), 3 deletions(-)
+
+diff --git a/src/journal/journald-console.c b/src/journal/journald-console.c
+index be55f94..1ee3afe 100644
+--- a/src/journal/journald-console.c
++++ b/src/journal/journald-console.c
+@@ -19,13 +19,30 @@
+   along with systemd; If not, see <http://www.gnu.org/licenses/>.
+ ***/
++#include <time.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <sys/socket.h>
++#include "fileio.h"
+ #include "journald-server.h"
+ #include "journald-console.h"
++static bool prefix_timestamp(void) {
++
++        static int cached_printk_time = -1;
++
++        if (_unlikely_(cached_printk_time < 0)) {
++                _cleanup_free_ char *p = NULL;
++
++                cached_printk_time =
++                        read_one_line_file("/sys/module/printk/parameters/time", &p) >= 0
++                        && parse_boolean(p) > 0;
++        }
++
++        return cached_printk_time;
++}
++
+ void server_forward_console(
+                 Server *s,
+                 int priority,
+@@ -33,8 +50,10 @@ void server_forward_console(
+                 const char *message,
+                 struct ucred *ucred) {
+-        struct iovec iovec[4];
++        struct iovec iovec[5];
+         char header_pid[16];
++        struct timespec ts;
++        char tbuf[4 + DECIMAL_STR_MAX(ts.tv_sec) + DECIMAL_STR_MAX(ts.tv_nsec)-3 + 1];
+         int n = 0, fd;
+         char *ident_buf = NULL;
+         const char *tty;
+@@ -45,7 +64,16 @@ void server_forward_console(
+         if (LOG_PRI(priority) > s->max_level_console)
+                 return;
+-        /* First: identifier and PID */
++        /* First: timestamp */
++        if (prefix_timestamp()) {
++                assert_se(clock_gettime(CLOCK_MONOTONIC, &ts) == 0);
++                snprintf(tbuf, sizeof(tbuf), "[%5llu.%06llu] ",
++                         (unsigned long long) ts.tv_sec,
++                         (unsigned long long) ts.tv_nsec / 1000);
++                IOVEC_SET_STRING(iovec[n++], tbuf);
++        }
++
++        /* Second: identifier and PID */
+         if (ucred) {
+                 if (!identifier) {
+                         get_process_comm(ucred->pid, &ident_buf);
+@@ -64,7 +92,7 @@ void server_forward_console(
+                 IOVEC_SET_STRING(iovec[n++], ": ");
+         }
+-        /* Third: message */
++        /* Fourth: message */
+         IOVEC_SET_STRING(iovec[n++], message);
+         IOVEC_SET_STRING(iovec[n++], "\n");
diff --git a/debian/patches/journal-when-appending-to-journal-file-allocate-larg.patch b/debian/patches/journal-when-appending-to-journal-file-allocate-larg.patch
new file mode 100644 (file)
index 0000000..904e6f5
--- /dev/null
@@ -0,0 +1,80 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Nov 2013 18:39:42 +0100
+Subject: journal: when appending to journal file,
+ allocate larger blocks at once
+
+(cherry picked from commit a676e66535e12458ea6d366a653f8dd60f982504)
+
+Conflicts:
+       src/journal/journal-file.c
+---
+ src/journal/journal-file.c | 26 +++++++++++++++++---------
+ 1 file changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 425e38a..d1b8433 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -68,6 +68,9 @@
+ /* How many entries to keep in the entry array chain cache at max */
+ #define CHAIN_CACHE_MAX 20
++/* How much to increase the journal file size at once each time we allocate something new. */
++#define FILE_SIZE_INCREASE (8ULL*1024ULL*1024ULL)              /* 8MB */
++
+ int journal_file_set_online(JournalFile *f) {
+         assert(f);
+@@ -218,8 +221,7 @@ static int journal_file_refresh_header(JournalFile *f) {
+         journal_file_set_online(f);
+         /* Sync the online state to disk */
+-        msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC);
+-        fdatasync(f->fd);
++        fsync(f->fd);
+         return 0;
+ }
+@@ -313,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) {
+ }
+ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
+-        uint64_t old_size, new_size;
++        uint64_t old_size, new_size, file_size;
+         int r;
+         assert(f);
+@@ -333,12 +335,10 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
+         if (new_size <= old_size)
+                 return 0;
+-        if (f->metrics.max_size > 0 &&
+-            new_size > f->metrics.max_size)
++        if (f->metrics.max_size > 0 && new_size > f->metrics.max_size)
+                 return -E2BIG;
+-        if (new_size > f->metrics.min_size &&
+-            f->metrics.keep_free > 0) {
++        if (new_size > f->metrics.min_size && f->metrics.keep_free > 0) {
+                 struct statvfs svfs;
+                 if (fstatvfs(f->fd, &svfs) >= 0) {
+@@ -363,8 +363,16 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
+         if (r != 0)
+                 return -r;
+-        if (fstat(f->fd, &f->last_stat) < 0)
+-                return -errno;
++        /* Increase the file size a bit further than this, so that we
++         * we can create larger memory maps to cache */
++        file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
++        if (file_size > (uint64_t) f->last_stat.st_size) {
++                if (file_size > new_size)
++                        ftruncate(f->fd, file_size);
++
++                if (fstat(f->fd, &f->last_stat) < 0)
++                        return -errno;
++        }
+         f->header->arena_size = htole64(new_size - le64toh(f->header->header_size));
diff --git a/debian/patches/journalctl-add-list-boots-to-show-boot-IDs-and-times.patch b/debian/patches/journalctl-add-list-boots-to-show-boot-IDs-and-times.patch
new file mode 100644 (file)
index 0000000..3815169
--- /dev/null
@@ -0,0 +1,238 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 28 Oct 2013 23:43:57 -0400
+Subject: journalctl: add --list-boots to show boot IDs and times
+
+Suggested by David Wilkins <dwilkins@maths.tcd.ie> in
+https://bugzilla.redhat.com/show_bug.cgi?id=967521:
+
+> [Specific boot ID is a] bit of a palaver to obtain.  I consulted the
+> verbose dump of the journal to discover the _BOOT_ID for the
+> timestamp, and then generated the journal dump for that boot using
+> journalctl _BOOT_ID=foo -o short-monotonic.
+---
+ man/journalctl.xml               |  11 ++++
+ shell-completion/bash/journalctl |   2 +-
+ shell-completion/zsh/_journalctl |   1 +
+ src/journal/journalctl.c         | 105 +++++++++++++++++++++++++++++++++++++--
+ 4 files changed, 113 insertions(+), 6 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index b5a0c53..c0cc96d 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -478,6 +478,17 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><option>--list-boots</option></term>
++
++                                <listitem><para>Show a tabular list of
++                                boot numbers (relative to current
++                                boot), their IDs, and the timestamps
++                                of the first and last message
++                                pertaining to the boot.
++                                </para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
+                                 <term><option>-k</option></term>
+                                 <term><option>--dmesg</option></term>
+diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl
+index 3c40d57..942a253 100644
+--- a/shell-completion/bash/journalctl
++++ b/shell-completion/bash/journalctl
+@@ -42,7 +42,7 @@ _journalctl() {
+                               --disk-usage -f --follow --header
+                               -h --help -l --local --new-id128 -m --merge --no-pager
+                               --no-tail -q --quiet --setup-keys --this-boot --verify
+-                              --version --list-catalog --update-catalog'
++                              --version --list-catalog --update-catalog --list-boots'
+                        [ARG]='-b --boot --this-boot -D --directory -F --field
+                               -o --output -u --unit --user-unit'
+                 [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until
+diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
+index 73646b5..29ff3e3 100644
+--- a/shell-completion/zsh/_journalctl
++++ b/shell-completion/zsh/_journalctl
+@@ -70,6 +70,7 @@ _arguments -s \
+     {-q,--quiet}"[Don't show privilege warning]" \
+     {-m,--merge}'[Show entries from all available journals]' \
+     {-b+,--boot=}'[Show data only from the specified boot or offset]:boot id or offset:_journal_boots' \
++    '--list-boots[List boots ordered by time]' \
+     {-k,--dmesg}'[Show only kernel messages, Implies -b]' \
+     {-u+,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \
+     '--user-unit=[Show data only from the specified user session unit]:units:_journal_fields USER_UNIT' \
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 0876ee6..a5c4779 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -104,12 +104,14 @@ static enum {
+         ACTION_DISK_USAGE,
+         ACTION_LIST_CATALOG,
+         ACTION_DUMP_CATALOG,
+-        ACTION_UPDATE_CATALOG
++        ACTION_UPDATE_CATALOG,
++        ACTION_LIST_BOOTS,
+ } arg_action = ACTION_SHOW;
+ typedef struct boot_id_t {
+         sd_id128_t id;
+-        uint64_t timestamp;
++        uint64_t first;
++        uint64_t last;
+ } boot_id_t;
+ static int help(void) {
+@@ -125,6 +127,7 @@ static int help(void) {
+                "     --after-cursor=CURSOR Start showing entries from specified cursor\n"
+                "     --show-cursor         Print the cursor after all the entries\n"
+                "  -b --boot[=ID]           Show data only from ID or current boot if unspecified\n"
++               "     --list-boots          Show terse information about recorded boots\n"
+                "  -k --dmesg               Show kernel message log from current boot\n"
+                "  -u --unit=UNIT           Show data only from the specified unit\n"
+                "     --user-unit=UNIT      Show data only from the specified user session unit\n"
+@@ -177,6 +180,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 ARG_NO_PAGER,
+                 ARG_NO_TAIL,
+                 ARG_NEW_ID128,
++                ARG_LIST_BOOTS,
+                 ARG_USER,
+                 ARG_SYSTEM,
+                 ARG_ROOT,
+@@ -214,6 +218,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "quiet",          no_argument,       NULL, 'q'                },
+                 { "merge",          no_argument,       NULL, 'm'                },
+                 { "boot",           optional_argument, NULL, 'b'                },
++                { "list-boots",     no_argument,       NULL, ARG_LIST_BOOTS     },
+                 { "this-boot",      optional_argument, NULL, 'b'                }, /* deprecated */
+                 { "dmesg",          no_argument,       NULL, 'k'                },
+                 { "system",         no_argument,       NULL, ARG_SYSTEM         },
+@@ -364,6 +369,10 @@ static int parse_argv(int argc, char *argv[]) {
+                         break;
++                case ARG_LIST_BOOTS:
++                        arg_action = ACTION_LIST_BOOTS;
++                        break;
++
+                 case 'k':
+                         arg_boot = arg_dmesg = true;
+                         break;
+@@ -692,12 +701,93 @@ static int add_matches(sd_journal *j, char **args) {
+ static int boot_id_cmp(const void *a, const void *b) {
+         uint64_t _a, _b;
+-        _a = ((const boot_id_t *)a)->timestamp;
+-        _b = ((const boot_id_t *)b)->timestamp;
++        _a = ((const boot_id_t *)a)->first;
++        _b = ((const boot_id_t *)b)->first;
+         return _a < _b ? -1 : (_a > _b ? 1 : 0);
+ }
++static int list_boots(sd_journal *j) {
++        int r;
++        const void *data;
++        unsigned int count = 0;
++        int w, i;
++        size_t length, allocated = 0;
++        boot_id_t *id;
++        _cleanup_free_ boot_id_t *all_ids = NULL;
++
++        r = sd_journal_query_unique(j, "_BOOT_ID");
++        if (r < 0)
++                return r;
++
++        SD_JOURNAL_FOREACH_UNIQUE(j, data, length) {
++                if (length < strlen("_BOOT_ID="))
++                        continue;
++
++                if (!GREEDY_REALLOC(all_ids, allocated, count + 1))
++                        return log_oom();
++
++                id = &all_ids[count];
++
++                r = sd_id128_from_string(((const char *)data) + strlen("_BOOT_ID="), &id->id);
++                if (r < 0)
++                        continue;
++
++                r = sd_journal_add_match(j, data, length);
++                if (r < 0)
++                        return r;
++
++                r = sd_journal_seek_head(j);
++                if (r < 0)
++                        return r;
++
++                r = sd_journal_next(j);
++                if (r < 0)
++                        return r;
++                else if (r == 0)
++                        goto flush;
++
++                r = sd_journal_get_realtime_usec(j, &id->first);
++                if (r < 0)
++                        return r;
++
++                r = sd_journal_seek_tail(j);
++                if (r < 0)
++                        return r;
++
++                r = sd_journal_previous(j);
++                if (r < 0)
++                        return r;
++                else if (r == 0)
++                        goto flush;
++
++                r = sd_journal_get_realtime_usec(j, &id->last);
++                if (r < 0)
++                        return r;
++
++                count++;
++        flush:
++                sd_journal_flush_matches(j);
++        }
++
++        qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
++
++        /* numbers are one less, but we need an extra char for the sign */
++        w = DECIMAL_STR_WIDTH(count - 1) + 1;
++
++        for (id = all_ids, i = 0; id < all_ids + count; id++, i++) {
++                char a[FORMAT_TIMESTAMP_MAX], b[FORMAT_TIMESTAMP_MAX];
++
++                printf("% *i " SD_ID128_FORMAT_STR " %s—%s\n",
++                       w, i - count + 1,
++                       SD_ID128_FORMAT_VAL(id->id),
++                       format_timestamp(a, sizeof(a), id->first),
++                       format_timestamp(b, sizeof(b), id->last));
++        }
++
++        return 0;
++}
++
+ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative) {
+         int r;
+         const void *data;
+@@ -743,7 +833,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative
+                 else if (r == 0)
+                         goto flush;
+-                r = sd_journal_get_realtime_usec(j, &id->timestamp);
++                r = sd_journal_get_realtime_usec(j, &id->first);
+                 if (r < 0)
+                         return r;
+@@ -1403,6 +1493,11 @@ int main(int argc, char *argv[]) {
+                 return EXIT_SUCCESS;
+         }
++        if (arg_action == ACTION_LIST_BOOTS) {
++                r = list_boots(j);
++                goto finish;
++        }
++
+         /* add_boot() must be called first!
+          * It may need to seek the journal to find parent boot IDs. */
+         r = add_boot(j);
diff --git a/debian/patches/journalctl-flip-to-full-by-default.patch b/debian/patches/journalctl-flip-to-full-by-default.patch
new file mode 100644 (file)
index 0000000..25136a3
--- /dev/null
@@ -0,0 +1,107 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 6 Oct 2013 21:55:18 -0400
+Subject: journalctl: flip to --full by default
+
+We already shew lines in full when using a pager or not on a
+tty. The commit disables ellipsization in the sole remaining case,
+namely when --follow is used.
+
+This has been a popular request for a long time, and indeed, full
+output seems much more useful. Old behaviour can still be requested by
+using --no-full. Old options retain their behaviour for compatiblity,
+but aren't advertised as much. This change applies only to jornalctl,
+not to systemctl, when ellipsization is useful to keep the layout.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=984758
+(cherry picked from commit 2b8f6883a17b9386299b7690869ccd8e20fe0347)
+---
+ man/journalctl.xml       | 15 ++++++++++++---
+ src/journal/journalctl.c | 12 +++++++++---
+ 2 files changed, 21 insertions(+), 6 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index d75c758..d1e841a 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -152,11 +152,20 @@
+                         </varlistentry>
+                         <varlistentry>
+-                                <term><option>-l</option></term>
++                                <term><option>--no-full</option></term>
+                                 <term><option>--full</option></term>
++                                <term><option>-l</option></term>
++
++                                <listitem><para>Ellipsize fields when
++                                they don't fit in available columns.
++                                The default is to show full fields,
++                                allowing them to wrap or be truncated
++                                by the pager if one is used.</para>
+-                                <listitem><para>Show all (printable) fields in
+-                                full.</para></listitem>
++                                <para>Old options
++                                <option>-l</option>/<option>--full</option>
++                                not useful anymore, except to undo
++                                <option>--no-full</option>.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index ccd96b2..1b5bdd3 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -64,7 +64,7 @@
+ static OutputMode arg_output = OUTPUT_SHORT;
+ static bool arg_pager_end = false;
+ static bool arg_follow = false;
+-static bool arg_full = false;
++static bool arg_full = true;
+ static bool arg_all = false;
+ static bool arg_no_pager = false;
+ static int arg_lines = -1;
+@@ -187,7 +187,7 @@ static int help(void) {
+                "                                   short-precise, short-monotonic, verbose,\n"
+                "                                   export, json, json-pretty, json-sse, cat)\n"
+                "  -x --catalog             Add message explanations where available\n"
+-               "  -l --full                Do not ellipsize fields\n"
++               "     --no-full             Ellipsize fields\n"
+                "  -a --all                 Show all fields, including long and unprintable\n"
+                "  -q --quiet               Do not show privilege warning\n"
+                "     --no-pager            Do not pipe output into a pager\n"
+@@ -224,6 +224,7 @@ static int parse_argv(int argc, char *argv[]) {
+         enum {
+                 ARG_VERSION = 0x100,
+                 ARG_NO_PAGER,
++                ARG_NO_FULL,
+                 ARG_NO_TAIL,
+                 ARG_NEW_ID128,
+                 ARG_LIST_BOOTS,
+@@ -258,6 +259,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "output",         required_argument, NULL, 'o'                },
+                 { "all",            no_argument,       NULL, 'a'                },
+                 { "full",           no_argument,       NULL, 'l'                },
++                { "no-full",        no_argument,       NULL, ARG_NO_FULL        },
+                 { "lines",          optional_argument, NULL, 'n'                },
+                 { "no-tail",        no_argument,       NULL, ARG_NO_TAIL        },
+                 { "new-id128",      no_argument,       NULL, ARG_NEW_ID128      },
+@@ -349,6 +351,10 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_full = true;
+                         break;
++                case ARG_NO_FULL:
++                        arg_full = false;
++                        break;
++
+                 case 'a':
+                         arg_all = true;
+                         break;
+@@ -1736,7 +1742,7 @@ int main(int argc, char *argv[]) {
+                         flags =
+                                 arg_all * OUTPUT_SHOW_ALL |
+-                                (arg_full || !on_tty() || pager_have()) * OUTPUT_FULL_WIDTH |
++                                arg_full * OUTPUT_FULL_WIDTH |
+                                 on_tty() * OUTPUT_COLOR |
+                                 arg_catalog * OUTPUT_CATALOG;
diff --git a/debian/patches/journalctl-free-arg_file-on-exit.patch b/debian/patches/journalctl-free-arg_file-on-exit.patch
new file mode 100644 (file)
index 0000000..b053eee
--- /dev/null
@@ -0,0 +1,22 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 29 Mar 2014 11:58:32 -0400
+Subject: journalctl: free arg_file on exit
+
+(cherry picked from commit a36b8debe67f3a5515200dada75cf4dbc334c7f5)
+(cherry picked from commit fc8dd899a6001160c2a1252470198179f9ed2a55)
+---
+ src/journal/journalctl.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 6f52467..b991ae3 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -1781,5 +1781,7 @@ int main(int argc, char *argv[]) {
+ finish:
+         pager_close();
++        strv_free(arg_file);
++
+         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ }
diff --git a/debian/patches/journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch b/debian/patches/journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch
new file mode 100644 (file)
index 0000000..b2be20b
--- /dev/null
@@ -0,0 +1,179 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 26 Dec 2013 01:52:01 +0100
+Subject: journalctl: make sure -b --foobar cannot be misunderstood as
+ --boot=--foobar
+
+(cherry picked from commit 442e2def7938435481eed34cd7331e34ebc8d9e0)
+
+Conflicts:
+       src/journal/journalctl.c
+       src/systemd/sd-bus.h
+---
+ src/journal/journalctl.c | 111 +++++++++++++++++++++++++----------------------
+ 1 file changed, 60 insertions(+), 51 deletions(-)
+
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 1d66792..ccd96b2 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -72,7 +72,8 @@ static bool arg_no_tail = false;
+ static bool arg_quiet = false;
+ static bool arg_merge = false;
+ static bool arg_boot = false;
+-static char *arg_boot_descriptor = NULL;
++static sd_id128_t arg_boot_id = {};
++static int arg_boot_offset = 0;
+ static bool arg_dmesg = false;
+ static const char *arg_cursor = NULL;
+ static const char *arg_after_cursor = NULL;
+@@ -122,6 +123,41 @@ static void pager_open_if_enabled(void) {
+         pager_open(arg_pager_end);
+ }
++static int parse_boot_descriptor(const char *x, sd_id128_t *boot_id, int *offset) {
++        sd_id128_t id = SD_ID128_NULL;
++        int off = 0, r;
++
++        if (strlen(x) >= 32) {
++                char *t;
++
++                t = strndupa(x, 32);
++                r = sd_id128_from_string(t, &id);
++                if (r >= 0)
++                        x += 32;
++
++                if (*x != '-' && *x != '+' && *x != 0)
++                        return -EINVAL;
++
++                if (*x != 0) {
++                        r = safe_atoi(x, &off);
++                        if (r < 0)
++                                return r;
++                }
++        } else {
++                r = safe_atoi(x, &off);
++                if (r < 0)
++                        return r;
++        }
++
++        if (boot_id)
++                *boot_id = id;
++
++        if (offset)
++                *offset = off;
++
++        return 0;
++}
++
+ static int help(void) {
+         pager_open_if_enabled();
+@@ -365,16 +401,23 @@ static int parse_argv(int argc, char *argv[]) {
+                 case 'b':
+                         arg_boot = true;
+-                        if (optarg)
+-                                arg_boot_descriptor = optarg;
+-                        else if (optind < argc) {
+-                                int boot;
++                        if (optarg) {
++                                r =  parse_boot_descriptor(optarg, &arg_boot_id, &arg_boot_offset);
++                                if (r < 0) {
++                                        log_error("Failed to parse boot descriptor '%s'", optarg);
++                                        return -EINVAL;
++                                }
++                        } else {
++
++                                /* Hmm, no argument? Maybe the next
++                                 * word on the command line is
++                                 * supposed to be the argument? Let's
++                                 * see if there is one and is parsable
++                                 * as a boot descriptor... */
+-                                if (argv[optind][0] != '-' ||
+-                                    safe_atoi(argv[optind], &boot) >= 0) {
+-                                        arg_boot_descriptor = argv[optind];
++                                if (optind < argc &&
++                                    parse_boot_descriptor(argv[optind], &arg_boot_id, &arg_boot_offset) >= 0)
+                                         optind++;
+-                                }
+                         }
+                         break;
+@@ -809,9 +852,6 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative
+         assert(j);
+         assert(boot_id);
+-        if (relative == 0 && !sd_id128_equal(*boot_id, SD_ID128_NULL))
+-                return 0;
+-
+         r = sd_journal_query_unique(j, "_BOOT_ID");
+         if (r < 0)
+                 return r;
+@@ -878,58 +918,27 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative
+ static int add_boot(sd_journal *j) {
+         char match[9+32+1] = "_BOOT_ID=";
+-        char *offset;
+-        sd_id128_t boot_id = SD_ID128_NULL;
+-        int r, relative = 0;
++        int r;
+         assert(j);
+         if (!arg_boot)
+                 return 0;
+-        if (!arg_boot_descriptor)
++        if (arg_boot_offset == 0 && sd_id128_equal(arg_boot_id, SD_ID128_NULL))
+                 return add_match_this_boot(j);
+-        if (strlen(arg_boot_descriptor) >= 32) {
+-                char tmp = arg_boot_descriptor[32];
+-                arg_boot_descriptor[32] = '\0';
+-                r = sd_id128_from_string(arg_boot_descriptor, &boot_id);
+-                arg_boot_descriptor[32] = tmp;
+-
+-                if (r < 0) {
+-                        log_error("Failed to parse boot ID '%.32s': %s",
+-                                  arg_boot_descriptor, strerror(-r));
+-                        return r;
+-                }
+-
+-                offset = arg_boot_descriptor + 32;
+-
+-                if (*offset && *offset != '-' && *offset != '+') {
+-                        log_error("Relative boot ID offset must start with a '+' or a '-', found '%s' ", offset);
+-                        return -EINVAL;
+-                }
+-        } else
+-                offset = arg_boot_descriptor;
+-
+-        if (*offset) {
+-                r = safe_atoi(offset, &relative);
+-                if (r < 0) {
+-                        log_error("Failed to parse relative boot ID number '%s'", offset);
+-                        return -EINVAL;
+-                }
+-        }
+-
+-        r = get_relative_boot_id(j, &boot_id, relative);
++        r = get_relative_boot_id(j, &arg_boot_id, arg_boot_offset);
+         if (r < 0) {
+-                if (sd_id128_equal(boot_id, SD_ID128_NULL))
+-                        log_error("Failed to look up boot %+d: %s", relative, strerror(-r));
++                if (sd_id128_equal(arg_boot_id, SD_ID128_NULL))
++                        log_error("Failed to look up boot %+i: %s", arg_boot_offset, strerror(-r));
+                 else
+-                        log_error("Failed to look up boot ID "SD_ID128_FORMAT_STR"%+d: %s",
+-                                  SD_ID128_FORMAT_VAL(boot_id), relative, strerror(-r));
++                        log_error("Failed to look up boot ID "SD_ID128_FORMAT_STR"%+i: %s",
++                                  SD_ID128_FORMAT_VAL(arg_boot_id), arg_boot_offset, strerror(-r));
+                 return r;
+         }
+-        sd_id128_to_string(boot_id, match + 9);
++        sd_id128_to_string(arg_boot_id, match + 9);
+         r = sd_journal_add_match(j, match, sizeof(match) - 1);
+         if (r < 0) {
diff --git a/debian/patches/journalctl-refuse-extra-arguments-with-verify-and-si.patch b/debian/patches/journalctl-refuse-extra-arguments-with-verify-and-si.patch
new file mode 100644 (file)
index 0000000..4d87a99
--- /dev/null
@@ -0,0 +1,28 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 26 Feb 2014 23:01:43 -0500
+Subject: journalctl: refuse extra arguments with --verify and similar
+
+Positional arguments only make sense with the default action.
+For other actions, complain instead of ignoring them silently.
+
+(cherry picked from commit 0b6b7c2004317da48e5bbd3078c5662d8f0061b6)
+---
+ src/journal/journalctl.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 5b0be27..6f52467 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -646,6 +646,11 @@ static int parse_argv(int argc, char *argv[]) {
+                 return -EINVAL;
+         }
++        if (arg_action != ACTION_SHOW && optind < argc) {
++                log_error("Extraneous arguments starting with '%s'", argv[optind]);
++                return -EINVAL;
++        }
++
+         return 1;
+ }
diff --git a/debian/patches/journalctl-zsh-completion-fix-several-issues-in-help.patch b/debian/patches/journalctl-zsh-completion-fix-several-issues-in-help.patch
new file mode 100644 (file)
index 0000000..2674dd6
--- /dev/null
@@ -0,0 +1,132 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Tue, 17 Dec 2013 21:36:27 -0500
+Subject: journalctl, zsh-completion: fix several issues in --help message text
+
+-- fix grammar and reword some descriptions for clarity
+-- add a useful description of what --follow does
+-- fix the description for --after-cursor
+-- properly introduce the FSS acronym for "Forward Secure Sealing" in
+both sections
+-- clarify the --disk-usage command
+
+[zj: perform similar changes to zsh completions]
+
+squash! journalctl: fix several issues in --help message text
+
+(cherry picked from commit c736283bfb81f5b00756e08a13946c113a41527f)
+
+Conflicts:
+       src/journal/journalctl.c
+---
+ shell-completion/zsh/_journalctl | 14 +++++++-------
+ src/journal/journalctl.c         | 34 +++++++++++++++++-----------------
+ 2 files changed, 24 insertions(+), 24 deletions(-)
+
+diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
+index 29ff3e3..8c3dbb0 100644
+--- a/shell-completion/zsh/_journalctl
++++ b/shell-completion/zsh/_journalctl
+@@ -71,14 +71,14 @@ _arguments -s \
+     {-m,--merge}'[Show entries from all available journals]' \
+     {-b+,--boot=}'[Show data only from the specified boot or offset]:boot id or offset:_journal_boots' \
+     '--list-boots[List boots ordered by time]' \
+-    {-k,--dmesg}'[Show only kernel messages, Implies -b]' \
++    {-k,--dmesg}'[Show only kernel messages from the current boot]' \
+     {-u+,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \
+     '--user-unit=[Show data only from the specified user session unit]:units:_journal_fields USER_UNIT' \
+     {-p+,--priority=}'[Show only messages within the specified priority range]:priority:_journal_fields PRIORITY' \
+-    {-c+,--cursor=}'[Start showing entries from specified cursor]:cursors:_journal_fields __CURSORS' \
+-    '--after-cursor=[Start showing entries from the location in the journal after the cursor]:cursors:_journal_fields __CURSORS' \
+-    '--since=[Start showing entries newer or of the specified date]:YYYY-MM-DD HH\:MM\:SS' \
+-    '--until=[Stop showing entries older or of the specified date]:YYYY-MM-DD HH\:MM\:SS' \
++    {-c+,--cursor=}'[Start showing entries from the specified cursor]:cursors:_journal_fields __CURSORS' \
++    '--after-cursor=[Start showing entries from after the specified cursor]:cursors:_journal_fields __CURSORS' \
++    '--since=[Start showing entries on or newer than the specified date]:YYYY-MM-DD HH\:MM\:SS' \
++    '--until=[Stop showing entries on or older than the specified date]:YYYY-MM-DD HH\:MM\:SS' \
+     {-F,--field=}'[List all values a certain field takes]:Fields:_list_fields' \
+     '--system[Show system and kernel messages]' \
+     '--user[Show messages from user services]' \
+@@ -91,8 +91,8 @@ _arguments -s \
+     '--list-catalog[List messages in catalog]' \
+     '--dump-catalog[Dump messages in catalog]' \
+     '--update-catalog[Update binary catalog database]' \
+-    '--setup-keys[Generate new FSS key pair]' \
+-    '--force[Force recreation of FSS keys]' \
++    '--setup-keys[Generate a new FSS key pair]' \
++    '--force[Force recreation of the FSS keys]' \
+     '--interval=[Time interval for changing the FSS sealing key]:time interval' \
+     '--verify[Verify journal file consistency]' \
+     '--verify-key=[Specify FSS verification key]:FSS key' \
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 71e28b0..1d66792 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -130,30 +130,30 @@ static int help(void) {
+                "Query the journal.\n\n"
+                "Flags:\n"
+                "     --system              Show only the system journal\n"
+-               "     --user                Show only the user journal for current user\n"
+-               "     --since=DATE          Start showing entries newer or of the specified date\n"
+-               "     --until=DATE          Stop showing entries older or of the specified date\n"
+-               "  -c --cursor=CURSOR       Start showing entries from specified cursor\n"
+-               "     --after-cursor=CURSOR Start showing entries from specified cursor\n"
++               "     --user                Show only the user journal for the current user\n"
++               "     --since=DATE          Start showing entries on or newer than the specified date\n"
++               "     --until=DATE          Stop showing entries on or older than the specified date\n"
++               "  -c --cursor=CURSOR       Start showing entries from the specified cursor\n"
++               "     --after-cursor=CURSOR Start showing entries from after the specified cursor\n"
+                "     --show-cursor         Print the cursor after all the entries\n"
+-               "  -b --boot[=ID]           Show data only from ID or current boot if unspecified\n"
++               "  -b --boot[=ID]           Show data only from ID or, if unspecified, the current boot\n"
+                "     --list-boots          Show terse information about recorded boots\n"
+-               "  -k --dmesg               Show kernel message log from current boot\n"
++               "  -k --dmesg               Show kernel message log from the current boot\n"
+                "  -u --unit=UNIT           Show data only from the specified unit\n"
+                "     --user-unit=UNIT      Show data only from the specified user session unit\n"
+                "  -p --priority=RANGE      Show only messages within the specified priority range\n"
+                "  -e --pager-end           Immediately jump to end of the journal in the pager\n"
+-               "  -f --follow              Follow journal\n"
++               "  -f --follow              Follow the journal\n"
+                "  -n --lines[=INTEGER]     Number of journal entries to show\n"
+                "     --no-tail             Show all lines, even in follow mode\n"
+                "  -r --reverse             Show the newest entries first\n"
+                "  -o --output=STRING       Change journal output mode (short, short-iso,\n"
+-               "                           short-precise, short-monotonic, verbose,\n"
+-               "                           export, json, json-pretty, json-sse, cat)\n"
++               "                                   short-precise, short-monotonic, verbose,\n"
++               "                                   export, json, json-pretty, json-sse, cat)\n"
+                "  -x --catalog             Add message explanations where available\n"
+                "  -l --full                Do not ellipsize fields\n"
+                "  -a --all                 Show all fields, including long and unprintable\n"
+-               "  -q --quiet               Don't show privilege warning\n"
++               "  -q --quiet               Do not show privilege warning\n"
+                "     --no-pager            Do not pipe output into a pager\n"
+                "  -m --merge               Show entries from all available journals\n"
+                "  -D --directory=PATH      Show journal files from directory\n"
+@@ -162,20 +162,20 @@ static int help(void) {
+ #ifdef HAVE_GCRYPT
+                "     --interval=TIME       Time interval for changing the FSS sealing key\n"
+                "     --verify-key=KEY      Specify FSS verification key\n"
+-               "     --force               Force overriding new FSS key pair with --setup-keys\n"
++               "     --force               Force overriding of the FSS key pair with --setup-keys\n"
+ #endif
+                "\nCommands:\n"
+-               "  -h --help                Show this help\n"
++               "  -h --help                Show this help text\n"
+                "     --version             Show package version\n"
+-               "     --new-id128           Generate a new 128 Bit ID\n"
++               "     --new-id128           Generate a new 128-bit ID\n"
+                "     --header              Show journal header information\n"
+-               "     --disk-usage          Show total disk usage\n"
+-               "  -F --field=FIELD         List all values a certain field takes\n"
++               "     --disk-usage          Show total disk usage of all journal files\n"
++               "  -F --field=FIELD         List all values that a specified field takes\n"
+                "     --list-catalog        Show message IDs of all entries in the message catalog\n"
+                "     --dump-catalog        Show entries in the message catalog\n"
+                "     --update-catalog      Update the message catalog database\n"
+ #ifdef HAVE_GCRYPT
+-               "     --setup-keys          Generate new FSS key pair\n"
++               "     --setup-keys          Generate a new FSS key pair\n"
+                "     --verify              Verify journal file consistency\n"
+ #endif
+                , program_invocation_short_name);
diff --git a/debian/patches/journald-add-missing-error-check.patch b/debian/patches/journald-add-missing-error-check.patch
new file mode 100644 (file)
index 0000000..526abfb
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:36:43 +0200
+Subject: journald: add missing error check
+
+---
+ src/journal/journal-file.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 1236403..81c344f 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -907,6 +907,8 @@ static int journal_file_append_field(
+         osize = offsetof(Object, field.payload) + size;
+         r = journal_file_append_object(f, OBJECT_FIELD, osize, &o, &p);
++        if (r < 0)
++                return r;
+         o->field.hash = htole64(hash);
+         memcpy(o->field.payload, field, size);
diff --git a/debian/patches/journald-do-not-free-space-when-disk-space-runs-low.patch b/debian/patches/journald-do-not-free-space-when-disk-space-runs-low.patch
new file mode 100644 (file)
index 0000000..a593859
--- /dev/null
@@ -0,0 +1,266 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 13 Nov 2013 00:42:22 -0500
+Subject: journald: do not free space when disk space runs low
+
+Before, journald would remove journal files until both MaxUse= and
+KeepFree= settings would be satisfied. The first one depends (if set
+automatically) on the size of the file system and is constant.  But
+the second one depends on current use of the file system, and a spike
+in disk usage would cause journald to delete journal files, trying to
+reach usage which would leave 15% of the disk free. This behaviour is
+surprising for the user who doesn't expect his logs to be purged when
+disk usage goes above 85%, which on a large disk could be some
+gigabytes from being full. In addition attempting to keep 15% free
+provides an attack vector where filling the disk sufficiently disposes
+of almost all logs.
+
+Instead, obey KeepFree= only as a limit on adding additional files.
+When replacing old files with new, ignore KeepFree=. This means that
+if journal disk usage reached some high point that at some later point
+start to violate the KeepFree= constraint, journald will not add files
+to go above this point, but it will stay (slightly) below it. When
+journald is restarted, it forgets the previous maximum usage value,
+and sets the limit based on the current usage, so if disk remains to
+be filled, journald might use one journal-file-size less on each
+restart, if restarts happen just after rotation. This seems like a
+reasonable compromise between implementation complexity and robustness.
+
+(cherry picked from commit 348ced909724a1331b85d57aede80a102a00e428)
+---
+ man/journald.conf.xml                   | 39 +++++++++++++++++++++++----------
+ src/journal/journal-file.h              |  1 +
+ src/journal/journal-vacuum.c            |  6 ++---
+ src/journal/journal-vacuum.h            |  2 +-
+ src/journal/journald-server.c           | 22 ++++++++++++++-----
+ src/journal/test-journal-interleaving.c |  4 ++--
+ src/journal/test-journal.c              |  4 ++--
+ src/shared/macro.h                      |  7 ++++++
+ 8 files changed, 58 insertions(+), 27 deletions(-)
+
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index b362c5d..e0796e1 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -250,20 +250,35 @@
+                                 <para><varname>SystemMaxUse=</varname>
+                                 and <varname>RuntimeMaxUse=</varname>
+                                 control how much disk space the
+-                                journal may use up at
+-                                maximum. Defaults to 10% of the size
+-                                of the respective file
+-                                system. <varname>SystemKeepFree=</varname>
+-                                and
++                                journal may use up at maximum.
++                                <varname>SystemKeepFree=</varname> and
+                                 <varname>RuntimeKeepFree=</varname>
+                                 control how much disk space
+-                                systemd-journald shall always leave
+-                                free for other uses. Defaults to 15%
+-                                of the size of the respective file
+-                                system. systemd-journald will respect
+-                                both limits, i.e. use the smaller of
+-                                the two values.
+-                                <varname>SystemMaxFileSize=</varname>
++                                systemd-journald shall leave free for
++                                other uses.
++                                <command>systemd-journald</command>
++                                will respect both limits and use the
++                                smaller of the two values.</para>
++
++                                <para>The first pair defaults to 10%
++                                and the second to 15% of the size of
++                                the respective file system. If the
++                                file system is nearly full and either
++                                <varname>SystemKeepFree=</varname> or
++                                <varname>RuntimeKeepFree=</varname> is
++                                violated when systemd-journald is
++                                started, the value will be raised to
++                                percentage that is actually free. This
++                                means that if before there was enough
++                                free space and journal files were
++                                created, and subsequently something
++                                else causes the file system to fill
++                                up, journald will stop using more
++                                space, but it'll will not removing
++                                existing files to go reduce footprint
++                                either.</para>
++
++                                <para><varname>SystemMaxFileSize=</varname>
+                                 and
+                                 <varname>RuntimeMaxFileSize=</varname>
+                                 control how large individual journal
+diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
+index 0bd23f7..2e06b57 100644
+--- a/src/journal/journal-file.h
++++ b/src/journal/journal-file.h
+@@ -37,6 +37,7 @@
+ typedef struct JournalMetrics {
+         uint64_t max_use;
++        uint64_t use;
+         uint64_t max_size;
+         uint64_t min_size;
+         uint64_t keep_free;
+diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
+index d4a1c6c..8b07f65 100644
+--- a/src/journal/journal-vacuum.c
++++ b/src/journal/journal-vacuum.c
+@@ -150,7 +150,6 @@ static int journal_file_empty(int dir_fd, const char *name) {
+ int journal_directory_vacuum(
+                 const char *directory,
+                 uint64_t max_use,
+-                uint64_t min_free,
+                 usec_t max_retention_usec,
+                 usec_t *oldest_usec) {
+@@ -164,7 +163,7 @@ int journal_directory_vacuum(
+         assert(directory);
+-        if (max_use <= 0 && min_free <= 0 && max_retention_usec <= 0)
++        if (max_use <= 0 && max_retention_usec <= 0)
+                 return 0;
+         if (max_retention_usec > 0) {
+@@ -310,8 +309,7 @@ int journal_directory_vacuum(
+                 }
+                 if ((max_retention_usec <= 0 || list[i].realtime >= retention_limit) &&
+-                    (max_use <= 0 || sum <= max_use) &&
+-                    (min_free <= 0 || (uint64_t) ss.f_bavail * (uint64_t) ss.f_bsize >= min_free))
++                    (max_use <= 0 || sum <= max_use))
+                         break;
+                 if (unlinkat(dirfd(d), list[i].filename, 0) >= 0) {
+diff --git a/src/journal/journal-vacuum.h b/src/journal/journal-vacuum.h
+index f5e3e52..bc30c3a 100644
+--- a/src/journal/journal-vacuum.h
++++ b/src/journal/journal-vacuum.h
+@@ -23,4 +23,4 @@
+ #include <inttypes.h>
+-int journal_directory_vacuum(const char *directory, uint64_t max_use, uint64_t min_free, usec_t max_retention_usec, usec_t *oldest_usec);
++int journal_directory_vacuum(const char *directory, uint64_t max_use, usec_t max_retention_usec, usec_t *oldest_usec);
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index 1fcb3d5..cd2cfe9 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -158,9 +158,18 @@ static uint64_t available_space(Server *s, bool verbose) {
+         }
+         ss_avail = ss.f_bsize * ss.f_bavail;
+-        avail = ss_avail > m->keep_free ? ss_avail - m->keep_free : 0;
+-        s->cached_available_space = MIN(m->max_use, avail) > sum ? MIN(m->max_use, avail) - sum : 0;
++        /* If we reached a high mark, we will always allow this much
++         * again, unless usage goes above max_use. This watermark
++         * value is cached so that we don't give up space on pressure,
++         * but hover below the maximum usage. */
++
++        if (m->use < sum)
++                m->use = sum;
++
++        avail = LESS_BY(ss_avail, m->keep_free);
++
++        s->cached_available_space = LESS_BY(MIN(m->max_use, avail), sum);
+         s->cached_available_space_timestamp = ts;
+         if (verbose) {
+@@ -168,13 +177,14 @@ static uint64_t available_space(Server *s, bool verbose) {
+                         fb4[FORMAT_BYTES_MAX], fb5[FORMAT_BYTES_MAX];
+                 server_driver_message(s, SD_MESSAGE_JOURNAL_USAGE,
+-                                      "%s journal is using %s (max %s, leaving %s of free %s, current limit %s).",
++                                      "%s journal is using %s (max allowed %s, "
++                                      "trying to leave %s free of %s available → current limit %s).",
+                                       s->system_journal ? "Permanent" : "Runtime",
+                                       format_bytes(fb1, sizeof(fb1), sum),
+                                       format_bytes(fb2, sizeof(fb2), m->max_use),
+                                       format_bytes(fb3, sizeof(fb3), m->keep_free),
+                                       format_bytes(fb4, sizeof(fb4), ss_avail),
+-                                      format_bytes(fb5, sizeof(fb5), MIN(m->max_use, avail)));
++                                      format_bytes(fb5, sizeof(fb5), s->cached_available_space + sum));
+         }
+         return s->cached_available_space;
+@@ -378,7 +388,7 @@ void server_vacuum(Server *s) {
+         if (s->system_journal) {
+                 char *p = strappenda("/var/log/journal/", ids);
+-                r = journal_directory_vacuum(p, s->system_metrics.max_use, s->system_metrics.keep_free, s->max_retention_usec, &s->oldest_file_usec);
++                r = journal_directory_vacuum(p, s->system_metrics.max_use, s->max_retention_usec, &s->oldest_file_usec);
+                 if (r < 0 && r != -ENOENT)
+                         log_error("Failed to vacuum %s: %s", p, strerror(-r));
+         }
+@@ -386,7 +396,7 @@ void server_vacuum(Server *s) {
+         if (s->runtime_journal) {
+                 char *p = strappenda("/run/log/journal/", ids);
+-                r = journal_directory_vacuum(p, s->runtime_metrics.max_use, s->runtime_metrics.keep_free, s->max_retention_usec, &s->oldest_file_usec);
++                r = journal_directory_vacuum(p, s->runtime_metrics.max_use, s->max_retention_usec, &s->oldest_file_usec);
+                 if (r < 0 && r != -ENOENT)
+                         log_error("Failed to vacuum %s: %s", p, strerror(-r));
+         }
+diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c
+index 1a058ea..974fa3b 100644
+--- a/src/journal/test-journal-interleaving.c
++++ b/src/journal/test-journal-interleaving.c
+@@ -194,7 +194,7 @@ static void test_skip(void (*setup)(void))
+         if (arg_keep)
+                 log_info("Not removing %s", t);
+         else {
+-                journal_directory_vacuum(".", 3000000, 0, 0, NULL);
++                journal_directory_vacuum(".", 3000000, 0, NULL);
+                 assert_se(rm_rf_dangerous(t, false, true, false) >= 0);
+         }
+@@ -279,7 +279,7 @@ static void test_sequence_numbers(void) {
+         if (arg_keep)
+                 log_info("Not removing %s", t);
+         else {
+-                journal_directory_vacuum(".", 3000000, 0, 0, NULL);
++                journal_directory_vacuum(".", 3000000, 0, NULL);
+                 assert_se(rm_rf_dangerous(t, false, true, false) >= 0);
+         }
+diff --git a/src/journal/test-journal.c b/src/journal/test-journal.c
+index 190c426..3b8778d 100644
+--- a/src/journal/test-journal.c
++++ b/src/journal/test-journal.c
+@@ -126,7 +126,7 @@ static void test_non_empty(void) {
+         if (arg_keep)
+                 log_info("Not removing %s", t);
+         else {
+-                journal_directory_vacuum(".", 3000000, 0, 0, NULL);
++                journal_directory_vacuum(".", 3000000, 0, NULL);
+                 assert_se(rm_rf_dangerous(t, false, true, false) >= 0);
+         }
+@@ -165,7 +165,7 @@ static void test_empty(void) {
+         if (arg_keep)
+                 log_info("Not removing %s", t);
+         else {
+-                journal_directory_vacuum(".", 3000000, 0, 0, NULL);
++                journal_directory_vacuum(".", 3000000, 0, NULL);
+                 assert_se(rm_rf_dangerous(t, false, true, false) >= 0);
+         }
+diff --git a/src/shared/macro.h b/src/shared/macro.h
+index d4f92b6..bc5b3c1 100644
+--- a/src/shared/macro.h
++++ b/src/shared/macro.h
+@@ -114,6 +114,13 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) {
+                         _a < _b ? _a : _b;      \
+                 })
++#define LESS_BY(A,B)                            \
++        __extension__ ({                        \
++                        typeof(A) _A = (A);     \
++                        typeof(B) _B = (B);     \
++                        _A > _B ? _A - _B : 0;  \
++                })
++
+ #ifndef CLAMP
+ #define CLAMP(x, low, high)                                             \
+         __extension__ ({                                                \
diff --git a/debian/patches/journald-downgrade-warning-message-when-dev-kmsg-doe.patch b/debian/patches/journald-downgrade-warning-message-when-dev-kmsg-doe.patch
new file mode 100644 (file)
index 0000000..a7e3e8c
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 17 Dec 2013 19:56:06 +0100
+Subject: journald: downgrade warning message when /dev/kmsg does not exist
+
+(cherry picked from commit 445ea9be520b9549aee45d0b6427cf48b446987f)
+---
+ src/journal/journald-kmsg.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
+index 21649d0..9895808 100644
+--- a/src/journal/journald-kmsg.c
++++ b/src/journal/journald-kmsg.c
+@@ -382,7 +382,8 @@ int server_open_dev_kmsg(Server *s) {
+         s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
+         if (s->dev_kmsg_fd < 0) {
+-                log_warning("Failed to open /dev/kmsg, ignoring: %m");
++                log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
++                         "Failed to open /dev/kmsg, ignoring: %m");
+                 return 0;
+         }
diff --git a/debian/patches/journald-fix-minor-memory-leak.patch b/debian/patches/journald-fix-minor-memory-leak.patch
new file mode 100644 (file)
index 0000000..9f5938c
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 9 Oct 2013 04:03:45 +0200
+Subject: journald: fix minor memory leak
+
+---
+ src/journal/journal-vacuum.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
+index c73ad8f..8d5effb 100644
+--- a/src/journal/journal-vacuum.c
++++ b/src/journal/journal-vacuum.c
+@@ -278,6 +278,8 @@ int journal_directory_vacuum(
+                         } else if (errno != ENOENT)
+                                 log_warning("Failed to delete %s/%s: %m", directory, p);
++                        free(p);
++
+                         continue;
+                 }
diff --git a/debian/patches/journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch b/debian/patches/journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch
new file mode 100644 (file)
index 0000000..12a55bc
--- /dev/null
@@ -0,0 +1,90 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Nov 2013 18:58:44 +0100
+Subject: journald: keep statistics on how of we hit/miss the mmap cache
+
+(cherry picked from commit bf807d4dbf27c783db8dfd7f4eca321ae4be5b00)
+---
+ src/journal/mmap-cache.c | 25 +++++++++++++++++++++++--
+ src/journal/mmap-cache.h |  3 +++
+ src/journal/sd-journal.c |  4 +++-
+ 3 files changed, 29 insertions(+), 3 deletions(-)
+
+diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
+index 03b57be..42a8a7d 100644
+--- a/src/journal/mmap-cache.c
++++ b/src/journal/mmap-cache.c
+@@ -72,6 +72,9 @@ struct MMapCache {
+         int n_ref;
+         unsigned n_windows;
++        unsigned n_hit, n_missed;
++
++
+         Hashmap *fds;
+         Hashmap *contexts;
+@@ -542,13 +545,19 @@ int mmap_cache_get(
+         /* Check whether the current context is the right one already */
+         r = try_context(m, fd, prot, context, keep_always, offset, size, ret);
+-        if (r != 0)
++        if (r != 0) {
++                m->n_hit ++;
+                 return r;
++        }
+         /* Search for a matching mmap */
+         r = find_mmap(m, fd, prot, context, keep_always, offset, size, ret);
+-        if (r != 0)
++        if (r != 0) {
++                m->n_hit ++;
+                 return r;
++        }
++
++        m->n_missed++;
+         /* Create a new mmap */
+         return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret);
+@@ -578,3 +587,15 @@ void mmap_cache_close_context(MMapCache *m, unsigned context) {
+         context_free(c);
+ }
++
++unsigned mmap_cache_get_hit(MMapCache *m) {
++        assert(m);
++
++        return m->n_hit;
++}
++
++unsigned mmap_cache_get_missed(MMapCache *m) {
++        assert(m);
++
++        return m->n_missed;
++}
+diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h
+index 0c42fb8..912336d 100644
+--- a/src/journal/mmap-cache.h
++++ b/src/journal/mmap-cache.h
+@@ -34,3 +34,6 @@ MMapCache* mmap_cache_unref(MMapCache *m);
+ int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, size_t size, struct stat *st, void **ret);
+ void mmap_cache_close_fd(MMapCache *m, int fd);
+ void mmap_cache_close_context(MMapCache *m, unsigned context);
++
++unsigned mmap_cache_get_hit(MMapCache *m);
++unsigned mmap_cache_get_missed(MMapCache *m);
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 9676f0f..52abbe9 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -1831,8 +1831,10 @@ _public_ void sd_journal_close(sd_journal *j) {
+         if (j->inotify_fd >= 0)
+                 close_nointr_nofail(j->inotify_fd);
+-        if (j->mmap)
++        if (j->mmap) {
++                log_debug("mmap cache statistics: %u hit, %u miss", mmap_cache_get_hit(j->mmap), mmap_cache_get_missed(j->mmap));
+                 mmap_cache_unref(j->mmap);
++        }
+         free(j->path);
+         free(j->unique_field);
diff --git a/debian/patches/journald-malloc-less-when-streaming-messages.patch b/debian/patches/journald-malloc-less-when-streaming-messages.patch
new file mode 100644 (file)
index 0000000..79d5d48
--- /dev/null
@@ -0,0 +1,110 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 10 Dec 2013 06:17:01 -0500
+Subject: journald: malloc less when streaming messages
+
+(cherry picked from commit e3bfb7be07d9b1f4ebb12eb22c4c8bcd2a988d51)
+---
+ src/journal/journald-stream.c | 23 ++++++++++++-----------
+ src/journal/journald-syslog.c |  4 ++--
+ src/journal/journald-syslog.h |  2 +-
+ 3 files changed, 15 insertions(+), 14 deletions(-)
+
+diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
+index 771a2bd..aae381b 100644
+--- a/src/journal/journald-stream.c
++++ b/src/journal/journald-stream.c
+@@ -75,9 +75,11 @@ struct StdoutStream {
+ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         struct iovec iovec[N_IOVEC_META_FIELDS + 5];
+-        _cleanup_free_ char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL;
+-        unsigned n = 0;
+         int priority;
++        char syslog_priority[] = "PRIORITY=\0";
++        char syslog_facility[sizeof("SYSLOG_FACILITY=") + DECIMAL_STR_MAX(priority)];
++        _cleanup_free_ char *message = NULL, *syslog_identifier = NULL;
++        unsigned n = 0;
+         char *label = NULL;
+         size_t label_len = 0;
+@@ -90,7 +92,7 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         priority = s->priority;
+         if (s->level_prefix)
+-                syslog_parse_priority((char**) &p, &priority, false);
++                syslog_parse_priority(&p, &priority, false);
+         if (s->forward_to_syslog || s->server->forward_to_syslog)
+                 server_forward_syslog(s->server, syslog_fixup_facility(priority), s->identifier, p, &s->ucred, NULL);
+@@ -103,12 +105,13 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         IOVEC_SET_STRING(iovec[n++], "_TRANSPORT=stdout");
+-        if (asprintf(&syslog_priority, "PRIORITY=%i", priority & LOG_PRIMASK) >= 0)
+-                IOVEC_SET_STRING(iovec[n++], syslog_priority);
++        syslog_priority[strlen("PRIORITY=")] = '0' + LOG_PRI(priority);
++        IOVEC_SET_STRING(iovec[n++], syslog_priority);
+-        if (priority & LOG_FACMASK)
+-                if (asprintf(&syslog_facility, "SYSLOG_FACILITY=%i", LOG_FAC(priority)) >= 0)
+-                        IOVEC_SET_STRING(iovec[n++], syslog_facility);
++        if (priority & LOG_FACMASK) {
++                snprintf(syslog_facility, sizeof(syslog_facility), "SYSLOG_FACILITY=%i", LOG_FAC(priority));
++                IOVEC_SET_STRING(iovec[n++], syslog_facility);
++        }
+         if (s->identifier) {
+                 syslog_identifier = strappend("SYSLOG_IDENTIFIER=", s->identifier);
+@@ -408,7 +411,7 @@ fail:
+ int server_open_stdout_socket(Server *s) {
+         int r;
+-        struct epoll_event ev;
++        struct epoll_event ev = { .events = EPOLLIN };
+         assert(s);
+@@ -441,8 +444,6 @@ int server_open_stdout_socket(Server *s) {
+         } else
+                 fd_nonblock(s->stdout_fd, 1);
+-        zero(ev);
+-        ev.events = EPOLLIN;
+         ev.data.fd = s->stdout_fd;
+         if (epoll_ctl(s->epoll_fd, EPOLL_CTL_ADD, s->stdout_fd, &ev) < 0) {
+                 log_error("Failed to add stdout server fd to epoll object: %m");
+diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
+index c2770a5..5d9b665 100644
+--- a/src/journal/journald-syslog.c
++++ b/src/journal/journald-syslog.c
+@@ -236,7 +236,7 @@ size_t syslog_parse_identifier(const char **buf, char **identifier, char **pid)
+         return e;
+ }
+-void syslog_parse_priority(char **p, int *priority, bool with_facility) {
++void syslog_parse_priority(const char **p, int *priority, bool with_facility) {
+         int a = 0, b = 0, c = 0;
+         int k;
+@@ -365,7 +365,7 @@ void server_process_syslog_message(
+         assert(buf);
+         orig = buf;
+-        syslog_parse_priority((char**) &buf, &priority, true);
++        syslog_parse_priority(&buf, &priority, true);
+         if (s->forward_to_syslog)
+                 forward_syslog_raw(s, priority, orig, ucred, tv);
+diff --git a/src/journal/journald-syslog.h b/src/journal/journald-syslog.h
+index 8ccdb77..057ea79 100644
+--- a/src/journal/journald-syslog.h
++++ b/src/journal/journald-syslog.h
+@@ -25,7 +25,7 @@
+ int syslog_fixup_facility(int priority) _const_;
+-void syslog_parse_priority(char **p, int *priority, bool with_facility);
++void syslog_parse_priority(const char **p, int *priority, bool with_facility);
+ size_t syslog_parse_identifier(const char **buf, char **identifier, char **pid);
+ void server_forward_syslog(Server *s, int priority, const char *identifier, const char *message, struct ucred *ucred, struct timeval *tv);
diff --git a/debian/patches/journald-mention-how-long-we-needed-to-flush-to-var-.patch b/debian/patches/journald-mention-how-long-we-needed-to-flush-to-var-.patch
new file mode 100644 (file)
index 0000000..fda19e1
--- /dev/null
@@ -0,0 +1,54 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 27 Nov 2013 01:54:25 +0100
+Subject: journald: mention how long we needed to flush to /var in the logs
+
+(cherry picked from commit fbb634117d0b0ebd5b105e65b141e75ae9af7f8f)
+---
+ src/journal/journald-server.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index e03e413..a0a8e9c 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -968,9 +968,12 @@ static int system_journal_open(Server *s) {
+ }
+ int server_flush_to_var(Server *s) {
+-        int r;
+         sd_id128_t machine;
+         sd_journal *j = NULL;
++        char ts[FORMAT_TIMESPAN_MAX];
++        usec_t start;
++        unsigned n = 0;
++        int r;
+         assert(s);
+@@ -988,6 +991,8 @@ int server_flush_to_var(Server *s) {
+         log_debug("Flushing to /var...");
++        start = now(CLOCK_MONOTONIC);
++
+         r = sd_id128_get_machine(&machine);
+         if (r < 0)
+                 return r;
+@@ -1007,6 +1012,8 @@ int server_flush_to_var(Server *s) {
+                 f = j->current_file;
+                 assert(f && f->current_offset > 0);
++                n++;
++
+                 r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
+                 if (r < 0) {
+                         log_error("Can't read entry: %s", strerror(-r));
+@@ -1050,6 +1057,8 @@ finish:
+         sd_journal_close(j);
++        server_driver_message(s, SD_ID128_NULL, "Time spent on flushing to /var is %s for %u entries.", format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0), n);
++
+         return r;
+ }
diff --git a/debian/patches/journald-remove-rotated-file-from-hashmap-when-rotat.patch b/debian/patches/journald-remove-rotated-file-from-hashmap-when-rotat.patch
new file mode 100644 (file)
index 0000000..6d105c1
--- /dev/null
@@ -0,0 +1,34 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 9 Oct 2013 22:13:13 -0400
+Subject: journald: remove rotated file from hashmap when rotation fails
+
+Before, when the user journal file was rotated, journal_file_rotate
+could close the old file and fail to open the new file. In that
+case, we would leave the old (deallocated) file in the hashmap.
+On subsequent accesses, we could retrieve this stale entry, leading
+to a segfault.
+
+When journal_file_rotate fails with the file pointer set to 0,
+old file is certainly gone, and cannot be used anymore.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=890463
+---
+ src/journal/journald-server.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index 4f47eb1..e03e413 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -321,8 +321,10 @@ void server_rotate(Server *s) {
+                 if (r < 0)
+                         if (f)
+                                 log_error("Failed to rotate %s: %s", f->path, strerror(-r));
+-                        else
++                        else {
+                                 log_error("Failed to create user journal: %s", strerror(-r));
++                                hashmap_remove(s->user_journals, k);
++                        }
+                 else {
+                         hashmap_replace(s->user_journals, k, f);
+                         server_fix_perms(s, f, PTR_TO_UINT32(k));
diff --git a/debian/patches/journald-use-a-bit-more-cleanup-magic.patch b/debian/patches/journald-use-a-bit-more-cleanup-magic.patch
new file mode 100644 (file)
index 0000000..79bc0ae
--- /dev/null
@@ -0,0 +1,35 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 10 Dec 2013 19:51:47 +0000
+Subject: journald: use a bit more cleanup magic!
+
+(cherry picked from commit 14c1025934e709d07948c13ca62b40c35c91d111)
+---
+ src/journal/journald-stream.c | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
+index 4080622..771a2bd 100644
+--- a/src/journal/journald-stream.c
++++ b/src/journal/journald-stream.c
+@@ -75,7 +75,7 @@ struct StdoutStream {
+ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         struct iovec iovec[N_IOVEC_META_FIELDS + 5];
+-        char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL;
++        _cleanup_free_ char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL;
+         unsigned n = 0;
+         int priority;
+         char *label = NULL;
+@@ -128,12 +128,6 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
+ #endif
+         server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0);
+-
+-        free(message);
+-        free(syslog_priority);
+-        free(syslog_facility);
+-        free(syslog_identifier);
+-
+         return 0;
+ }
diff --git a/debian/patches/kernel-install-add-h-help.patch b/debian/patches/kernel-install-add-h-help.patch
new file mode 100644 (file)
index 0000000..3b45f30
--- /dev/null
@@ -0,0 +1,69 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 8 Dec 2013 07:46:46 -0500
+Subject: kernel-install: add -h/--help
+
+(cherry picked from commit a6c3d202b14939006f39e22179a058159a8512fb)
+---
+ src/kernel-install/kernel-install | 21 ++++++++++++++-------
+ 1 file changed, 14 insertions(+), 7 deletions(-)
+
+diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
+index 9d3e75d..f5ff362 100644
+--- a/src/kernel-install/kernel-install
++++ b/src/kernel-install/kernel-install
+@@ -21,9 +21,9 @@
+ usage()
+ {
+-    echo "Usage:" >&2
+-    echo "        $0 add <kernel-version> <kernel-image>" >&2
+-    echo "        $0 remove <kernel-version> <kernel-image>" >&2
++    echo "Usage:"
++    echo "        $0 add KERNEL-VERSION KERNEL-IMAGE"
++    echo "        $0 remove KERNEL-VERSION KERNEL-IMAGE"
+ }
+ dropindirs_sort()
+@@ -54,6 +54,13 @@ dropindirs_sort()
+ export LC_COLLATE=C
++for i in "$@"; do
++    if [ "$i" == "--help" -o "$i" == "-h" ]; then
++        usage
++        exit 0
++    fi
++done
++
+ if [[ "${0##*/}" == 'installkernel' ]]; then
+     COMMAND='add'
+ else
+@@ -75,7 +82,7 @@ if ! [[ $MACHINE_ID ]]; then
+ fi
+ if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then
+-    usage
++    echo "Not enough arguments" >&2
+     exit 1
+ fi
+@@ -90,8 +97,8 @@ readarray -t PLUGINS < <(
+ case $COMMAND in
+     add)
+-        if [[ ! $KERNEL_IMAGE ]]; then
+-            usage
++        if [[ ! "$KERNEL_IMAGE" ]]; then
++            echo "Command 'add' requires an argument" >&2
+             exit 1
+         fi
+@@ -121,7 +128,7 @@ case $COMMAND in
+         ;;
+     *)
+-        usage
++        echo "Unknown command '$COMMAND'" >&2
+         exit 1
+         ;;
+ esac
diff --git a/debian/patches/kernel-install-fix-help-output.patch b/debian/patches/kernel-install-fix-help-output.patch
new file mode 100644 (file)
index 0000000..afd49e2
--- /dev/null
@@ -0,0 +1,26 @@
+From: =?utf-8?q?S=C3=A9bastien_Luttringer?= <seblu@seblu.net>
+Date: Thu, 5 Dec 2013 02:55:05 +0100
+Subject: kernel-install: fix help output
+
+Kernel install doesn't need the second argument on his command line when
+removing.
+This is correctly documented in the man page.
+
+(cherry picked from commit d838db0d3b1369639ed7572f4f838eda58b8d858)
+---
+ src/kernel-install/kernel-install | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
+index f5ff362..3ae1d77 100644
+--- a/src/kernel-install/kernel-install
++++ b/src/kernel-install/kernel-install
+@@ -23,7 +23,7 @@ usage()
+ {
+     echo "Usage:"
+     echo "        $0 add KERNEL-VERSION KERNEL-IMAGE"
+-    echo "        $0 remove KERNEL-VERSION KERNEL-IMAGE"
++    echo "        $0 remove KERNEL-VERSION"
+ }
+ dropindirs_sort()
diff --git a/debian/patches/keyboard-add-Plantronics-.Audio-mute-button.patch b/debian/patches/keyboard-add-Plantronics-.Audio-mute-button.patch
new file mode 100644 (file)
index 0000000..d0c929f
--- /dev/null
@@ -0,0 +1,30 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 1 Jun 2014 14:01:23 -0400
+Subject: keyboard: add Plantronics .Audio mute button
+
+https://bugs.freedesktop.org/show_bug.cgi?id=79495
+(cherry picked from commit 9e3dbf6b2b99d0e16989d9cedb458729db5a60c3)
+(cherry picked from commit db75f7e5b9f699ebd4936e9342482b6ffb67cb78)
+---
+ hwdb/60-keyboard.hwdb | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index b407949..17f06e8 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -864,6 +864,14 @@ keyboard:dmi:bvn*:bvr*:bd*:svnOQO*Inc.*:pnOQO*Model*2*:pvr*
+  KEYBOARD_KEY_f3=volumeup
+ ###########################################################
++# Plantronics
++###########################################################
++
++# Plantronics .Audio 626 DSP
++keyboard:usb:v047fpC006*
++ KEYBOARD_KEY_b002f=f20                                # Microphone mute button; should be micmute
++
++###########################################################
+ # Quanta
+ ###########################################################
diff --git a/debian/patches/keymap-Add-HP-Chromebook-14-Falco.patch b/debian/patches/keymap-Add-HP-Chromebook-14-Falco.patch
new file mode 100644 (file)
index 0000000..7a5e411
--- /dev/null
@@ -0,0 +1,38 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Mon, 27 Jan 2014 09:04:22 +0100
+Subject: keymap: Add HP Chromebook 14 (Falco)
+
+Thanks to Stefan Nagy <public@stefan-nagy.at>.
+
+(cherry picked from commit 82cd413782cca6de3088c2705f839ff31abec7f9)
+---
+ hwdb/60-keyboard.hwdb | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index e3d1f02..c027cbe 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -417,6 +417,22 @@ keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnHDX9494NR:pvr*
+  KEYBOARD_KEY_d8=!f23                                   # touchpad off
+  KEYBOARD_KEY_d9=!f22                                   # touchpad on
++# Chromebook 14
++# Top row keys (between ESC and power button)
++keyboard:dmi:bvn*:bvr*:bd*:svnHewlett-Packard*:pnFalco:pvr*
++ KEYBOARD_KEY_3b=back
++ KEYBOARD_KEY_3c=forward
++ KEYBOARD_KEY_3d=refresh
++ KEYBOARD_KEY_3f=switchvideomode
++ KEYBOARD_KEY_40=brightnessdown
++ KEYBOARD_KEY_41=brightnessup
++ KEYBOARD_KEY_42=mute
++ KEYBOARD_KEY_43=volumedown
++ KEYBOARD_KEY_44=volumeup
++ KEYBOARD_KEY_db=search # Same position as caps lock key on most keyboards
++# KEYBOARD_KEY_3e=fullscreen, no defined key sym
++
++
+ ###########################################################
+ # IBM
+ ###########################################################
diff --git a/debian/patches/keymap-Add-Lenovo-Enhanced-USB-Keyboard.patch b/debian/patches/keymap-Add-Lenovo-Enhanced-USB-Keyboard.patch
new file mode 100644 (file)
index 0000000..c54fa46
--- /dev/null
@@ -0,0 +1,36 @@
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sun, 25 May 2014 11:57:22 +0200
+Subject: keymap: Add Lenovo Enhanced USB Keyboard
+
+https://bugs.freedesktop.org/show_bug.cgi?id=77234
+(cherry picked from commit d258d4967eb24122c2b1014d4e873f61b633f1d2)
+(cherry picked from commit f36ed0204ee1f917f8eadc37bb655324b1e4157a)
+
+Conflicts:
+       hwdb/60-keyboard.hwdb
+---
+ hwdb/60-keyboard.hwdb | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index fdab827..c320c21 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -576,6 +576,17 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*IdeaPad*U300s*:pvr*
+  KEYBOARD_KEY_f1=f21
+  KEYBOARD_KEY_ce=f20
++# enhanced USB keyboard
++keyboard:usb:v04B3p301B*
++ KEYBOARD_KEY_90001=prog1 # ThinkVantage
++ KEYBOARD_KEY_90002=screenlock
++ KEYBOARD_KEY_90003=file
++ KEYBOARD_KEY_90004=wordprocessor
++ KEYBOARD_KEY_90005=spreadsheet
++ KEYBOARD_KEY_90006=calc
++ KEYBOARD_KEY_90007=mail
++ KEYBOARD_KEY_90008=www
++
+ ###########################################################
+ # Logitech
+ ###########################################################
diff --git a/debian/patches/keymap-Add-Sony-Vaio-VGN-FW250.patch b/debian/patches/keymap-Add-Sony-Vaio-VGN-FW250.patch
new file mode 100644 (file)
index 0000000..581e9d3
--- /dev/null
@@ -0,0 +1,24 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Tue, 28 Jan 2014 18:14:18 +0100
+Subject: keymap: Add Sony Vaio VGN-FW250
+
+https://launchpad.net/bugs/1271163
+(cherry picked from commit 7b36bf82c4deeadef6d914cef750b4a51ff2ed48)
+---
+ hwdb/60-keyboard.hwdb | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 52d9a2a..ea206bb 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -981,6 +981,9 @@ keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-Z21*:pvr*
+  KEYBOARD_KEY_17=prog1
+  KEYBOARD_KEY_20=media
++keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVGN-FW250*:pvr*
++ KEYBOARD_KEY_10=suspend                                # Fn+F12
++
+ keyboard:name:Sony Vaio Keys:dmi:bvn*:bvr*:bd*:svnSony*:pnVPC*:pvr*
+  KEYBOARD_KEY_05=f21                                    # Fn+F1 -> KEY_F21 (The actual touchpad toggle)
+  KEYBOARD_KEY_0d=zoomout                                # Fn+F9
diff --git a/debian/patches/keymap-Add-Toshiba-EQUIUM.patch b/debian/patches/keymap-Add-Toshiba-EQUIUM.patch
new file mode 100644 (file)
index 0000000..dd87ae2
--- /dev/null
@@ -0,0 +1,23 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Wed, 29 Jan 2014 16:13:22 +0100
+Subject: keymap: Add Toshiba EQUIUM
+
+Thanks Aleksander Kowalski <aleksander.kowalski.1@gmail.com>!
+
+(cherry picked from commit c9cf047362cd8e4530c10bc7c2d6db988452305d)
+---
+ hwdb/60-keyboard.hwdb | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index ea206bb..f9084e4 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -1089,6 +1089,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON*CORP.:pnSpring*Peak:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU][35]0[05]*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU][35]0[05]*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*Pro*[uU]300*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnEQUIUM [uU][35]0[05]*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnViooo*Corporation:pnPT17:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:*
diff --git a/debian/patches/keymap-Add-Toshiba-Satellite-U940.patch b/debian/patches/keymap-Add-Toshiba-Satellite-U940.patch
new file mode 100644 (file)
index 0000000..bc402a9
--- /dev/null
@@ -0,0 +1,27 @@
+From: Jose Ignacio Naranjo <joseignacio.naranjo@gmail.com>
+Date: Sun, 17 Nov 2013 21:11:34 +0100
+Subject: keymap: Add Toshiba Satellite U940
+
+Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+---
+ hwdb/60-keyboard.hwdb | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index b497f92..d4d948d 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -1031,6 +1031,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75-A:pvr*
+  KEYBOARD_KEY_a9=switchvideomode                        # switch display outputs
+  KEYBOARD_KEY_d4=wlan                                   # RF Switch Off
++# Satellite U940
++keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITEU940:pvr*
++ KEYBOARD_KEY_13c=brightnessdown
++ KEYBOARD_KEY_13d=brightnessup
++ KEYBOARD_KEY_13e=switchvideomode
++ KEYBOARD_KEY_13f=f21                                   # Touchpad toggle
++
+ ###########################################################
+ # VIA
+ ###########################################################
diff --git a/debian/patches/keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch b/debian/patches/keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch
new file mode 100644 (file)
index 0000000..5cf8dad
--- /dev/null
@@ -0,0 +1,24 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Tue, 28 Jan 2014 18:10:12 +0100
+Subject: keymap: Add release quirk for Acer AOA switchvideomode key
+
+https://launchpad.net/bugs/1272658
+(cherry picked from commit 1e091c1285b59d0fbab58e6e5113ad111bc08794)
+---
+ hwdb/60-keyboard.hwdb | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index c027cbe..52d9a2a 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -118,6 +118,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6593:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:*
+  KEYBOARD_KEY_ee=screenlock
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAOA*:pvr*
++ KEYBOARD_KEY_a9=!switchvideomode                       # Fn+F5
++
+ ###########################################################
+ # Alienware
+ ###########################################################
diff --git a/debian/patches/keymap-Asus-EeePC-touchpad-toggle-key.patch b/debian/patches/keymap-Asus-EeePC-touchpad-toggle-key.patch
new file mode 100644 (file)
index 0000000..fadfc10
--- /dev/null
@@ -0,0 +1,31 @@
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sun, 25 May 2014 12:16:35 +0200
+Subject: keymap: Asus EeePC touchpad toggle key
+
+Originally is KEY_TOUCHPAD_TOGGLE, but X.org can't handle the big key events,
+so use the F21 convention.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=72807
+(cherry picked from commit e55edb22a71e67f01534d28f91c6aa27bba48fc1)
+(cherry picked from commit 970e92893ea9aff1df21ad5e9a19f7d1c0fdedbe)
+
+Conflicts:
+       hwdb/60-keyboard.hwdb
+---
+ hwdb/60-keyboard.hwdb | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index c320c21..b407949 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -140,6 +140,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnASUS:pn*
+ keyboard:name:Asus WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:pvr*
+  KEYBOARD_KEY_6b=f21          # Touchpad Toggle
++keyboard:name:Eee PC WMI hotkeys:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:pvr*
++ KEYBOARD_KEY_6b=f21                                    # Touchpad Toggle
++
+ ###########################################################
+ # BenQ
+ ###########################################################
diff --git a/debian/patches/keymap-Fix-Samsung-900X-34-C.patch b/debian/patches/keymap-Fix-Samsung-900X-34-C.patch
new file mode 100644 (file)
index 0000000..25eb481
--- /dev/null
@@ -0,0 +1,38 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Wed, 9 Oct 2013 16:05:15 +0200
+Subject: keymap: Fix Samsung 900X[34]C
+
+It appears that it's not really the 900 vs. 940 or the X3 vs X4, but the
+A/B/C/D suffix after that which makes the difference between the keymaps. On a
+NP900X3C-A04RU you get
+
+   MODALIAS=dmi:bvn*:bvr*:bd*:svnSAMSUNGELECTRONICSCO.,LTD.:pn900X3C/900X3D/900X4C/900X4D:*
+
+So change the matches to use AB vs. CDG as the differentiator.
+
+Thanks to Anatoly Markov for reporting and testing!
+---
+ hwdb/60-keyboard.hwdb | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 20d398f..b497f92 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -904,6 +904,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr*
+  KEYBOARD_KEY_a9=!                                      # Fn Lock - Function lock off
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
+  KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
+  KEYBOARD_KEY_a0=!mute                                  # Fn+F6 mute
+@@ -915,7 +916,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
+ # Series 9
+ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr*
+  KEYBOARD_KEY_ce=!                                      # Fn+F8 keyboard backlight up
+  KEYBOARD_KEY_8d=!                                      # Fn+F7 keyboard backlight down
+  KEYBOARD_KEY_96=!                                      # Fn+F1 performance mode (?)
diff --git a/debian/patches/keymap-Recognize-different-Toshiba-Satellite-capital.patch b/debian/patches/keymap-Recognize-different-Toshiba-Satellite-capital.patch
new file mode 100644 (file)
index 0000000..e015d6a
--- /dev/null
@@ -0,0 +1,26 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Tue, 7 Jan 2014 09:40:01 +0100
+Subject: keymap: Recognize different Toshiba Satellite capitalizations
+
+https://launchpad.net/bugs/665918
+(cherry picked from commit c79af123de72cdb70f122c7fda5b2401acc5ea7b)
+---
+ hwdb/60-keyboard.hwdb | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index d253724..84a061f 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -1056,9 +1056,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnFOXCONN:pnQBOOK:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnMTC:pn*:pvrA0:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnMio*Technology:pnN890:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON*CORP.:pnSpring*Peak:*
+-keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU]30[05]*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU][35]0[05]*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU][35]0[05]*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*Pro*[uU]300*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU]500*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnViooo*Corporation:pnPT17:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:*
diff --git a/debian/patches/keymap-Refactor-Acer-tables.patch b/debian/patches/keymap-Refactor-Acer-tables.patch
new file mode 100644 (file)
index 0000000..10db87a
--- /dev/null
@@ -0,0 +1,146 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Thu, 19 Dec 2013 08:33:32 +0100
+Subject: keymap: Refactor Acer tables
+
+Move common keys into generic Acer table, and factorize the model specific
+exceptions.
+
+(cherry picked from commit c5b7838ddeae1fcd5c613ea15f04918b945823e5)
+---
+ hwdb/60-keyboard.hwdb | 101 ++++++++++++++++++--------------------------------
+ 1 file changed, 36 insertions(+), 65 deletions(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index d4d948d..ab9e569 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -46,52 +46,7 @@
+ # Acer
+ ##########################################
+-# Acer platform kernel driver
+-keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
+- KEYBOARD_KEY_82=f21
+-
+-# Aspire 5720
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5720*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr*
+- KEYBOARD_KEY_84=bluetooth                              # sent when bluetooth module missing, and key pressed
+- KEYBOARD_KEY_92=media                                  # Acer arcade
+- KEYBOARD_KEY_d4=bluetooth                              # Bluetooth on
+- KEYBOARD_KEY_d9=bluetooth                              # Bluetooth off
+- KEYBOARD_KEY_f4=prog3                                  # e-key
+-
+-# Aspire 5920g
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5920G:*
+- KEYBOARD_KEY_8a=media
+- KEYBOARD_KEY_92=media
+- KEYBOARD_KEY_a6=setup
+- KEYBOARD_KEY_b2=www
+- KEYBOARD_KEY_d9=bluetooth                              # (toggle) on-to-off
+-
+-# Aspire 6920
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*6920:*
+- KEYBOARD_KEY_d9=bluetooth                              # (toggle) on-to-off
+- KEYBOARD_KEY_92=media
+- KEYBOARD_KEY_9e=back
+- KEYBOARD_KEY_83=rewind
+- KEYBOARD_KEY_89=fastforward
+-
+-# Aspire 8930
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:*
+- KEYBOARD_KEY_ca=prog3                                  # key 'HOLD' on CineDash Media Console
+- KEYBOARD_KEY_83=rewind
+- KEYBOARD_KEY_89=fastforward
+- KEYBOARD_KEY_92=media                                  # key 'ARCADE' on CineDash Media Console
+- KEYBOARD_KEY_9e=back
+-
+-# Travelmate C300
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
+- KEYBOARD_KEY_67=f24                                    # FIXME: rotate screen
+- KEYBOARD_KEY_68=up
+- KEYBOARD_KEY_69=down
+- KEYBOARD_KEY_6b=fn
+- KEYBOARD_KEY_6c=screenlock                             # FIXME: lock tablet device/buttons
+-
+-#
++# common keys
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*
+ keyboard:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
+@@ -99,6 +54,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
+  KEYBOARD_KEY_a6=setup                                  # Fn+F2 Acer eSettings
+  KEYBOARD_KEY_a7=battery                                # Fn+F3 Power Management
+  KEYBOARD_KEY_a9=switchvideomode                        # Fn+F5
++ KEYBOARD_KEY_b2=www
+  KEYBOARD_KEY_b3=euro
+  KEYBOARD_KEY_b4=dollar
+  KEYBOARD_KEY_ce=brightnessup                           # Fn+Right
+@@ -118,33 +74,48 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
+  KEYBOARD_KEY_f8=fn
+  KEYBOARD_KEY_f9=prog1                                  # Launch NTI shadow
+-#
++# Acer platform kernel driver
++keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
++ KEYBOARD_KEY_82=f21                                  # Touchpad toggle
++
++# Aspire models
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*:pvr*
++ KEYBOARD_KEY_84=bluetooth                              # sent when bluetooth module missing, and key pressed
++ KEYBOARD_KEY_d9=bluetooth                              # Bluetooth off
++ KEYBOARD_KEY_92=media                                  # Acer arcade
++
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5720*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr*
++ KEYBOARD_KEY_f4=prog3                                  # e-key
++
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5920G:*
++ KEYBOARD_KEY_8a=media
++ KEYBOARD_KEY_a6=setup
++
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*6920:*
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:*
++ KEYBOARD_KEY_ca=prog3                                  # key 'HOLD' on CineDash Media Console
++ KEYBOARD_KEY_83=rewind
++ KEYBOARD_KEY_89=fastforward
++ KEYBOARD_KEY_9e=back
++
++# Travelmate C300
++keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
++ KEYBOARD_KEY_67=f24                                    # FIXME: rotate screen
++ KEYBOARD_KEY_68=up
++ KEYBOARD_KEY_69=down
++ KEYBOARD_KEY_6b=fn
++ KEYBOARD_KEY_6c=screenlock                             # FIXME: lock tablet device/buttons
++
++# on some models this isn't brightnessup
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5210*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5220*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5610*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5620*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5720*:pvr*
+- KEYBOARD_KEY_ee=screenlock
+-
+-#
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6292*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*8471*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*7720*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1810T*:pvr*
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO751h:*
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO531h:*
+- KEYBOARD_KEY_d9=bluetooth
+-
+-#
+-keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr*
+- KEYBOARD_KEY_b2=www
+- KEYBOARD_KEY_ee=screenlock
+-
+-#
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6593:*
+ keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:*
+- KEYBOARD_KEY_b2=www
+  KEYBOARD_KEY_ee=screenlock
+ ###########################################################
diff --git a/debian/patches/label-when-clearing-selinux-context-don-t-mangle-err.patch b/debian/patches/label-when-clearing-selinux-context-don-t-mangle-err.patch
new file mode 100644 (file)
index 0000000..e844f83
--- /dev/null
@@ -0,0 +1,92 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 10 Jun 2014 22:48:56 +0200
+Subject: label: when clearing selinux context, don't mangle errno
+
+(cherry picked from commit 874f1947e33922f08c578696af5b628a0f67fec2)
+(cherry picked from commit 00d967b989929e176e940345bbf3ffa65832b15f)
+
+Conflicts:
+       src/tmpfiles/tmpfiles.c
+---
+ src/shared/label.c      |  4 ++++
+ src/tmpfiles/tmpfiles.c | 13 +++++--------
+ 2 files changed, 9 insertions(+), 8 deletions(-)
+
+diff --git a/src/shared/label.c b/src/shared/label.c
+index fde39f2..3a18e31 100644
+--- a/src/shared/label.c
++++ b/src/shared/label.c
+@@ -230,6 +230,8 @@ int label_socket_set(const char *label) {
+ void label_context_clear(void) {
+ #ifdef HAVE_SELINUX
++        PROTECT_ERRNO;
++
+         if (!use_selinux())
+                 return;
+@@ -240,6 +242,8 @@ void label_context_clear(void) {
+ void label_socket_clear(void) {
+ #ifdef HAVE_SELINUX
++        PROTECT_ERRNO;
++
+         if (!use_selinux())
+                 return;
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 4244656..be2115c 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -460,18 +460,19 @@ static int item_set_perms(Item *i, const char *path) {
+ }
+ static int write_one_file(Item *i, const char *path) {
+-        int r, e, fd, flags;
++        int r, fd, flags;
+         struct stat st;
++        assert(i);
++        assert(path);
++
+         flags = i->type == CREATE_FILE ? O_CREAT|O_APPEND :
+                 i->type == TRUNCATE_FILE ? O_CREAT|O_TRUNC : 0;
+         RUN_WITH_UMASK(0) {
+                 label_context_set(path, S_IFREG);
+                 fd = open(path, flags|O_NDELAY|O_CLOEXEC|O_WRONLY|O_NOCTTY|O_NOFOLLOW, i->mode);
+-                e = errno;
+                 label_context_clear();
+-                errno = e;
+         }
+         if (fd < 0) {
+@@ -633,7 +634,7 @@ static int glob_item(Item *i, int (*action)(Item *, const char *)) {
+ }
+ static int create_item(Item *i) {
+-        int r, e;
++        int r;
+         struct stat st;
+         assert(i);
+@@ -728,9 +729,7 @@ static int create_item(Item *i) {
+                 label_context_set(i->path, S_IFLNK);
+                 r = symlink(i->argument, i->path);
+-                e = errno;
+                 label_context_clear();
+-                errno = e;
+                 if (r < 0 && errno != EEXIST) {
+                         log_error("symlink(%s, %s) failed: %m", i->argument, i->path);
+@@ -772,9 +771,7 @@ static int create_item(Item *i) {
+                 RUN_WITH_UMASK(0000) {
+                         label_context_set(i->path, file_type);
+                         r = mknod(i->path, i->mode | file_type, i->major_minor);
+-                        e = errno;
+                         label_context_clear();
+-                        errno = e;
+                 }
+                 if (r < 0 && errno != EEXIST) {
diff --git a/debian/patches/libudev-default-log_priority-to-INFO.patch b/debian/patches/libudev-default-log_priority-to-INFO.patch
new file mode 100644 (file)
index 0000000..a8769f9
--- /dev/null
@@ -0,0 +1,22 @@
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 30 Oct 2013 15:09:01 +0100
+Subject: libudev: default log_priority to INFO
+
+This brings it in sync with the default config file.
+---
+ src/libudev/libudev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
+index 208039a..bc73a5a 100644
+--- a/src/libudev/libudev.c
++++ b/src/libudev/libudev.c
+@@ -125,7 +125,7 @@ _public_ struct udev *udev_new(void)
+                 return NULL;
+         udev->refcount = 1;
+         udev->log_fn = log_stderr;
+-        udev->log_priority = LOG_ERR;
++        udev->log_priority = LOG_INFO;
+         udev_list_init(udev, &udev->properties_list, true);
+         f = fopen("/etc/udev/udev.conf", "re");
diff --git a/debian/patches/libudev-devices-received-from-udev-are-always-initia.patch b/debian/patches/libudev-devices-received-from-udev-are-always-initia.patch
new file mode 100644 (file)
index 0000000..49f1886
--- /dev/null
@@ -0,0 +1,158 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 18 Dec 2013 16:49:19 +0100
+Subject: libudev: devices received from udev are always initialized
+
+(cherry picked from commit f6613dd959a1ab49bf061555ada77903397569ad)
+
+Conflicts:
+       TODO
+---
+ src/libudev/libudev-device.c  |  2 ++
+ src/libudev/libudev-monitor.c | 62 +++++++++++++++++++++----------------------
+ 2 files changed, 33 insertions(+), 31 deletions(-)
+
+diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
+index 161181a..b6c4e24 100644
+--- a/src/libudev/libudev-device.c
++++ b/src/libudev/libudev-device.c
+@@ -536,6 +536,8 @@ int udev_device_read_db(struct udev_device *udev_device, const char *dbfile)
+                 udev_dbg(udev_device->udev, "no db file to read %s: %m\n", dbfile);
+                 return -1;
+         }
++
++        /* devices with a database entry are initialized */
+         udev_device->is_initialized = true;
+         while (fgets(line, sizeof(line), f)) {
+diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
+index 0212792..ff89e14 100644
+--- a/src/libudev/libudev-monitor.c
++++ b/src/libudev/libudev-monitor.c
+@@ -324,9 +324,6 @@ _public_ int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor)
+         int err = 0;
+         const int on = 1;
+-        if (udev_monitor->snl.nl.nl_family == 0)
+-                return -EINVAL;
+-
+         udev_monitor_filter_update(udev_monitor);
+         if (!udev_monitor->bound) {
+@@ -524,7 +521,6 @@ _public_ struct udev_device *udev_monitor_receive_device(struct udev_monitor *ud
+         char buf[8192];
+         ssize_t buflen;
+         ssize_t bufpos;
+-        struct udev_monitor_netlink_header *nlh;
+ retry:
+         if (udev_monitor == NULL)
+@@ -536,11 +532,8 @@ retry:
+         smsg.msg_iovlen = 1;
+         smsg.msg_control = cred_msg;
+         smsg.msg_controllen = sizeof(cred_msg);
+-
+-        if (udev_monitor->snl.nl.nl_family != 0) {
+-                smsg.msg_name = &snl;
+-                smsg.msg_namelen = sizeof(snl);
+-        }
++        smsg.msg_name = &snl;
++        smsg.msg_namelen = sizeof(snl);
+         buflen = recvmsg(udev_monitor->sock, &smsg, 0);
+         if (buflen < 0) {
+@@ -554,20 +547,18 @@ retry:
+                 return NULL;
+         }
+-        if (udev_monitor->snl.nl.nl_family != 0) {
+-                if (snl.nl.nl_groups == 0) {
+-                        /* unicast message, check if we trust the sender */
+-                        if (udev_monitor->snl_trusted_sender.nl.nl_pid == 0 ||
+-                            snl.nl.nl_pid != udev_monitor->snl_trusted_sender.nl.nl_pid) {
+-                                udev_dbg(udev_monitor->udev, "unicast netlink message ignored\n");
+-                                return NULL;
+-                        }
+-                } else if (snl.nl.nl_groups == UDEV_MONITOR_KERNEL) {
+-                        if (snl.nl.nl_pid > 0) {
+-                                udev_dbg(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n",
+-                                     snl.nl.nl_pid);
+-                                return NULL;
+-                        }
++        if (snl.nl.nl_groups == 0) {
++                /* unicast message, check if we trust the sender */
++                if (udev_monitor->snl_trusted_sender.nl.nl_pid == 0 ||
++                    snl.nl.nl_pid != udev_monitor->snl_trusted_sender.nl.nl_pid) {
++                        udev_dbg(udev_monitor->udev, "unicast netlink message ignored\n");
++                        return NULL;
++                }
++        } else if (snl.nl.nl_groups == UDEV_MONITOR_KERNEL) {
++                if (snl.nl.nl_pid > 0) {
++                        udev_dbg(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n",
++                             snl.nl.nl_pid);
++                        return NULL;
+                 }
+         }
+@@ -583,35 +574,47 @@ retry:
+                 return NULL;
+         }
++        udev_device = udev_device_new(udev_monitor->udev);
++        if (udev_device == NULL)
++                return NULL;
++
+         if (memcmp(buf, "libudev", 8) == 0) {
++                struct udev_monitor_netlink_header *nlh;
++
+                 /* udev message needs proper version magic */
+                 nlh = (struct udev_monitor_netlink_header *) buf;
+                 if (nlh->magic != htonl(UDEV_MONITOR_MAGIC)) {
+                         udev_err(udev_monitor->udev, "unrecognized message signature (%x != %x)\n",
+-                            nlh->magic, htonl(UDEV_MONITOR_MAGIC));
++                                 nlh->magic, htonl(UDEV_MONITOR_MAGIC));
++                        udev_device_unref(udev_device);
+                         return NULL;
+                 }
+-                if (nlh->properties_off+32 > (size_t)buflen)
++                if (nlh->properties_off+32 > (size_t)buflen) {
++                        udev_device_unref(udev_device);
+                         return NULL;
++                }
++
+                 bufpos = nlh->properties_off;
++
++                /* devices received from udev are always initialized */
++                udev_device_set_is_initialized(udev_device);
+         } else {
+                 /* kernel message with header */
+                 bufpos = strlen(buf) + 1;
+                 if ((size_t)bufpos < sizeof("a@/d") || bufpos >= buflen) {
+                         udev_dbg(udev_monitor->udev, "invalid message length\n");
++                        udev_device_unref(udev_device);
+                         return NULL;
+                 }
+                 /* check message header */
+                 if (strstr(buf, "@/") == NULL) {
+                         udev_dbg(udev_monitor->udev, "unrecognized message header\n");
++                        udev_device_unref(udev_device);
+                         return NULL;
+                 }
+         }
+-        udev_device = udev_device_new(udev_monitor->udev);
+-        if (udev_device == NULL)
+-                return NULL;
+         udev_device_set_info_loaded(udev_device);
+         while (bufpos < buflen) {
+@@ -664,9 +667,6 @@ int udev_monitor_send_device(struct udev_monitor *udev_monitor,
+         struct udev_list_entry *list_entry;
+         uint64_t tag_bloom_bits;
+-        if (udev_monitor->snl.nl.nl_family == 0)
+-                return -EINVAL;
+-
+         blen = udev_device_get_properties_monitor_buf(udev_device, &buf);
+         if (blen < 32)
+                 return -EINVAL;
diff --git a/debian/patches/libudev-hwdb-use-libudev-not-systemd-logging.patch b/debian/patches/libudev-hwdb-use-libudev-not-systemd-logging.patch
new file mode 100644 (file)
index 0000000..26a43f7
--- /dev/null
@@ -0,0 +1,62 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Tue, 10 Dec 2013 16:36:45 +0100
+Subject: libudev: hwdb - use libudev not systemd logging
+
+(cherry picked from commit 85719154e7412de2d84f64b50b6b98b13981b65f)
+---
+ src/libudev/libudev-hwdb.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c
+index de1cb83..ba43b9f 100644
+--- a/src/libudev/libudev-hwdb.c
++++ b/src/libudev/libudev-hwdb.c
+@@ -277,38 +277,38 @@ _public_ struct udev_hwdb *udev_hwdb_new(struct udev *udev) {
+         hwdb->f = fopen("/etc/udev/hwdb.bin", "re");
+         if (!hwdb->f) {
+-                log_debug("error reading /etc/udev/hwdb.bin: %m");
++                udev_dbg(udev, "error reading /etc/udev/hwdb.bin: %m");
+                 udev_hwdb_unref(hwdb);
+                 return NULL;
+         }
+         if (fstat(fileno(hwdb->f), &hwdb->st) < 0 ||
+             (size_t)hwdb->st.st_size < offsetof(struct trie_header_f, strings_len) + 8) {
+-                log_debug("error reading /etc/udev/hwdb.bin: %m");
++                udev_dbg(udev, "error reading /etc/udev/hwdb.bin: %m");
+                 udev_hwdb_unref(hwdb);
+                 return NULL;
+         }
+         hwdb->map = mmap(0, hwdb->st.st_size, PROT_READ, MAP_SHARED, fileno(hwdb->f), 0);
+         if (hwdb->map == MAP_FAILED) {
+-                log_debug("error mapping /etc/udev/hwdb.bin: %m");
++                udev_dbg(udev, "error mapping /etc/udev/hwdb.bin: %m");
+                 udev_hwdb_unref(hwdb);
+                 return NULL;
+         }
+         if (memcmp(hwdb->map, sig, sizeof(hwdb->head->signature)) != 0 ||
+             (size_t)hwdb->st.st_size != le64toh(hwdb->head->file_size)) {
+-                log_debug("error recognizing the format of /etc/udev/hwdb.bin");
++                udev_dbg(udev, "error recognizing the format of /etc/udev/hwdb.bin");
+                 udev_hwdb_unref(hwdb);
+                 return NULL;
+         }
+-        log_debug("=== trie on-disk ===\n");
+-        log_debug("tool version:          %"PRIu64, le64toh(hwdb->head->tool_version));
+-        log_debug("file size:        %8llu bytes\n", (unsigned long long) hwdb->st.st_size);
+-        log_debug("header size       %8"PRIu64" bytes\n", le64toh(hwdb->head->header_size));
+-        log_debug("strings           %8"PRIu64" bytes\n", le64toh(hwdb->head->strings_len));
+-        log_debug("nodes             %8"PRIu64" bytes\n", le64toh(hwdb->head->nodes_len));
++        udev_dbg(udev, "=== trie on-disk ===\n");
++        udev_dbg(udev, "tool version:          %"PRIu64, le64toh(hwdb->head->tool_version));
++        udev_dbg(udev, "file size:        %8llu bytes\n", (unsigned long long) hwdb->st.st_size);
++        udev_dbg(udev, "header size       %8"PRIu64" bytes\n", le64toh(hwdb->head->header_size));
++        udev_dbg(udev, "strings           %8"PRIu64" bytes\n", le64toh(hwdb->head->strings_len));
++        udev_dbg(udev, "nodes             %8"PRIu64" bytes\n", le64toh(hwdb->head->nodes_len));
+         return hwdb;
+ }
diff --git a/debian/patches/load-modules-properly-return-a-failing-error-code-if.patch b/debian/patches/load-modules-properly-return-a-failing-error-code-if.patch
new file mode 100644 (file)
index 0000000..4ff8c52
--- /dev/null
@@ -0,0 +1,31 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 18 Feb 2014 21:23:16 +0100
+Subject: load-modules: properly return a failing error code if some module
+ fails to load
+
+This is the missing part of b857193b1def5172e3641ca1d5bc9e08ae81aac4.
+
+(cherry picked from commit 4b462d1a28461b302586b117736ef288fba1012f)
+---
+ src/modules-load/modules-load.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
+index 9789398..ba7d417 100644
+--- a/src/modules-load/modules-load.c
++++ b/src/modules-load/modules-load.c
+@@ -306,9 +306,11 @@ int main(int argc, char *argv[]) {
+                                 r = k;
+                 }
+-                r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
+-                if (r < 0) {
+-                        log_error("Failed to enumerate modules-load.d files: %s", strerror(-r));
++                k = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
++                if (k < 0) {
++                        log_error("Failed to enumerate modules-load.d files: %s", strerror(-k));
++                        if (r == 0)
++                                r = k;
+                         goto finish;
+                 }
diff --git a/debian/patches/localed-match-converted-keymaps-before-legacy.patch b/debian/patches/localed-match-converted-keymaps-before-legacy.patch
new file mode 100644 (file)
index 0000000..6f7906c
--- /dev/null
@@ -0,0 +1,323 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 18 Nov 2013 13:42:57 -0500
+Subject: localed: match converted keymaps before legacy
+
+Before, X11 keymap fr-pc105-oss would be converted to fr,
+even though fr-oss exists. Now, if
+/usr/lib/kbd/keymaps/xkb/<layout>[-<variant>].map[.gz] exists,
+<layout>[-<variant>] will be used as the console keymap,
+falling back to the legacy mappings otherwise.
+
+% sudo localectl set-x11-keymap pl pc105
+% localectl
+   System Locale: LANG=en_US.UTF-8
+       VC Keymap: pl                      (was pl2 before)
+      X11 Layout: pl
+       X11 Model: pc105
+% sudo localectl set-x11-keymap fr pc105 oss
+% localectl
+   System Locale: LANG=en_US.UTF-8
+       VC Keymap: fr-oss                  (was fr before)
+      X11 Layout: fr
+       X11 Model: pc105
+     X11 Variant: oss
+% sudo localectl set-x11-keymap fr pc105
+% localectl
+   System Locale: LANG=en_US.UTF-8
+       VC Keymap: fr
+      X11 Layout: fr
+       X11 Model: pc105
+% sudo localectl set-x11-keymap gb
+% localectl
+   System Locale: LANG=en_US.UTF-8
+       VC Keymap: gb                     (was uk before)
+      X11 Layout: gb
+
+Conflicts:
+       src/locale/localed.c
+       src/shared/def.h
+---
+ src/locale/localectl.c |   8 +--
+ src/locale/localed.c   | 189 ++++++++++++++++++++++++++++---------------------
+ src/shared/def.h       |  13 ++++
+ 3 files changed, 126 insertions(+), 84 deletions(-)
+
+diff --git a/src/locale/localectl.c b/src/locale/localectl.c
+index 8259c0a..d3c6152 100644
+--- a/src/locale/localectl.c
++++ b/src/locale/localectl.c
+@@ -38,6 +38,7 @@
+ #include "set.h"
+ #include "path-util.h"
+ #include "utf8.h"
++#include "def.h"
+ static bool arg_no_pager = false;
+ static enum transport {
+@@ -533,15 +534,14 @@ static int nftw_cb(
+ static int list_vconsole_keymaps(DBusConnection *bus, char **args, unsigned n) {
+         _cleanup_strv_free_ char **l = NULL;
++        const char *dir;
+         keymaps = set_new(string_hash_func, string_compare_func);
+         if (!keymaps)
+                 return log_oom();
+-        nftw("/usr/share/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
+-        nftw("/usr/share/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
+-        nftw("/usr/lib/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
+-        nftw("/lib/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
++        NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS)
++                nftw(dir, nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
+         l = set_get_strv(keymaps);
+         if (!l) {
+diff --git a/src/locale/localed.c b/src/locale/localed.c
+index e160c04..b9b98f4 100644
+--- a/src/locale/localed.c
++++ b/src/locale/localed.c
+@@ -792,105 +792,135 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
+         return 0;
+ }
+-static int convert_x11_to_vconsole(DBusConnection *connection) {
+-        bool modified = false;
++static int find_converted_keymap(char **new_keymap) {
++        const char *dir;
++        _cleanup_free_ char *n;
++
++        if (state.x11_variant)
++                n = strjoin(state.x11_layout, "-", state.x11_variant, NULL);
++        else
++                n = strdup(state.x11_layout);
++        if (!n)
++                return -ENOMEM;
+-        assert(connection);
++        NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS) {
++                _cleanup_free_ char *p = NULL, *pz = NULL;
+-        if (isempty(state.x11_layout)) {
++                p = strjoin(dir, "xkb/", n, ".map", NULL);
++                pz = strjoin(dir, "xkb/", n, ".map.gz", NULL);
++                if (!p || !pz)
++                        return -ENOMEM;
+-                modified =
+-                        !isempty(state.vc_keymap) ||
+-                        !isempty(state.vc_keymap_toggle);
++                if (access(p, F_OK) == 0 || access(pz, F_OK) == 0) {
++                        *new_keymap = n;
++                        n = NULL;
++                        return 1;
++                }
++        }
+-                free_data_x11();
+-        } else {
+-                FILE *f;
+-                unsigned n = 0;
+-                unsigned best_matching = 0;
+-                char *new_keymap = NULL;
++        return 0;
++}
+-                f = fopen(SYSTEMD_KBD_MODEL_MAP, "re");
+-                if (!f)
+-                        return -errno;
++static int find_legacy_keymap(char **new_keymap) {
++        _cleanup_fclose_ FILE *f;
++        unsigned n = 0;
++        unsigned best_matching = 0;
+-                for (;;) {
+-                        char **a;
+-                        unsigned matching = 0;
+-                        int r;
+-                        r = read_next_mapping(f, &n, &a);
+-                        if (r < 0) {
+-                                fclose(f);
+-                                return r;
+-                        }
++        f = fopen(SYSTEMD_KBD_MODEL_MAP, "re");
++        if (!f)
++                return -errno;
+-                        if (r == 0)
+-                                break;
++        for (;;) {
++                _cleanup_strv_free_ char **a = NULL;
++                unsigned matching = 0;
++                int r;
+-                        /* Determine how well matching this entry is */
+-                        if (streq_ptr(state.x11_layout, a[1]))
+-                                /* If we got an exact match, this is best */
+-                                matching = 10;
+-                        else {
+-                                size_t x;
+-
+-                                x = strcspn(state.x11_layout, ",");
+-
+-                                /* We have multiple X layouts, look
+-                                 * for an entry that matches our key
+-                                 * with the everything but the first
+-                                 * layout stripped off. */
+-                                if (x > 0 &&
+-                                    strlen(a[1]) == x &&
+-                                    strneq(state.x11_layout, a[1], x))
+-                                        matching = 5;
+-                                else  {
+-                                        size_t w;
+-
+-                                        /* If that didn't work, strip
+-                                         * off the other layouts from
+-                                         * the entry, too */
+-
+-                                        w = strcspn(a[1], ",");
+-
+-                                        if (x > 0 && x == w &&
+-                                            memcmp(state.x11_layout, a[1], x) == 0)
+-                                                matching = 1;
+-                                }
++                r = read_next_mapping(f, &n, &a);
++                if (r < 0)
++                        return r;
++                if (r == 0)
++                        break;
++
++                /* Determine how well matching this entry is */
++                if (streq_ptr(state.x11_layout, a[1]))
++                        /* If we got an exact match, this is best */
++                        matching = 10;
++                else {
++                        size_t x;
++
++                        x = strcspn(state.x11_layout, ",");
++
++                        /* We have multiple X layouts, look for an
++                         * entry that matches our key with everything
++                         * but the first layout stripped off. */
++                        if (x > 0 &&
++                            strlen(a[1]) == x &&
++                            strneq(state.x11_layout, a[1], x))
++                                matching = 5;
++                        else  {
++                                size_t w;
++
++                                /* If that didn't work, strip off the
++                                 * other layouts from the entry, too */
++                                w = strcspn(a[1], ",");
++
++                                if (x > 0 && x == w &&
++                                    memcmp(state.x11_layout, a[1], x) == 0)
++                                        matching = 1;
+                         }
++                }
++
++                if (matching > 0 &&
++                    streq_ptr(state.x11_model, a[2])) {
++                        matching++;
+-                        if (matching > 0 &&
+-                            streq_ptr(state.x11_model, a[2])) {
++                        if (streq_ptr(state.x11_variant, a[3])) {
+                                 matching++;
+-                                if (streq_ptr(state.x11_variant, a[3])) {
++                                if (streq_ptr(state.x11_options, a[4]))
+                                         matching++;
+-
+-                                        if (streq_ptr(state.x11_options, a[4]))
+-                                                matching++;
+-                                }
+                         }
++                }
+-                        /* The best matching entry so far, then let's
+-                         * save that */
+-                        if (matching > best_matching) {
+-                                best_matching = matching;
++                /* The best matching entry so far, then let's save that */
++                if (matching > best_matching) {
++                        best_matching = matching;
+-                                free(new_keymap);
+-                                new_keymap = strdup(a[0]);
++                        free(*new_keymap);
++                        *new_keymap = strdup(a[0]);
++                        if (!*new_keymap)
++                                return -ENOMEM;
++                }
++        }
+-                                if (!new_keymap) {
+-                                        strv_free(a);
+-                                        fclose(f);
+-                                        return -ENOMEM;
+-                                }
+-                        }
++        return 0;
++}
+-                        strv_free(a);
+-                }
++static int convert_x11_to_vconsole(DBusConnection *connection) {
++        bool modified = false;
++        int r;
+-                fclose(f);
++        assert(connection);
++
++        if (isempty(state.x11_layout)) {
++
++                modified =
++                        !isempty(state.vc_keymap) ||
++                        !isempty(state.vc_keymap_toggle);
++
++                free_data_x11();
++        } else {
++                char *new_keymap = NULL;
++
++                r = find_converted_keymap(&new_keymap);
++                if (r < 0)
++                        return r;
++                else if (r == 0) {
++                        r = find_legacy_keymap(&new_keymap);
++                        if (r < 0)
++                                return r;
++                }
+                 if (!streq_ptr(state.vc_keymap, new_keymap)) {
+                         free(state.vc_keymap);
+@@ -907,7 +937,6 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
+         if (modified) {
+                 dbus_bool_t b;
+                 DBusMessage *changed;
+-                int r;
+                 r = write_data_vconsole();
+                 if (r < 0)
+diff --git a/src/shared/def.h b/src/shared/def.h
+index e4ef735..58c834c 100644
+--- a/src/shared/def.h
++++ b/src/shared/def.h
+@@ -41,3 +41,16 @@
+ #define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz"
+ #define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ #define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS
++
++#ifdef HAVE_SPLIT_USR
++#define KBD_KEYMAP_DIRS                         \
++        "/usr/share/keymaps/\0"                 \
++        "/usr/share/kbd/keymaps/\0"             \
++        "/usr/lib/kbd/keymaps/\0"               \
++        "/lib/kbd/keymaps/\0"
++#else
++#define KBD_KEYMAP_DIRS                         \
++        "/usr/share/keymaps/\0"                 \
++        "/usr/share/kbd/keymaps/\0"             \
++        "/usr/lib/kbd/keymaps/\0"
++#endif
diff --git a/debian/patches/log-don-t-reopen-dev-console-each-time-we-call-log_o.patch b/debian/patches/log-don-t-reopen-dev-console-each-time-we-call-log_o.patch
new file mode 100644 (file)
index 0000000..19665e6
--- /dev/null
@@ -0,0 +1,50 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 18 Dec 2013 05:07:34 +0100
+Subject: log: don't reopen /dev/console each time we call log_open()
+
+Instead, force reopen it only if we really really have to.
+
+(cherry picked from commit 99f098257f5e4135609edc3df965ebf27975df18)
+---
+ src/core/main.c     | 1 +
+ src/core/shutdown.c | 1 +
+ src/shared/log.c    | 2 --
+ 3 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index 58c3a9e..935762f 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1347,6 +1347,7 @@ int main(int argc, char *argv[]) {
+                 /* Running inside a container, as PID 1 */
+                 arg_running_as = SYSTEMD_SYSTEM;
+                 log_set_target(LOG_TARGET_CONSOLE);
++                log_close_console(); /* force reopen of /dev/console */
+                 log_open();
+                 /* For the later on, see above... */
+diff --git a/src/core/shutdown.c b/src/core/shutdown.c
+index ea02b60..5e0f3ce 100644
+--- a/src/core/shutdown.c
++++ b/src/core/shutdown.c
+@@ -155,6 +155,7 @@ int main(int argc, char *argv[]) {
+         log_parse_environment();
+         log_set_target(LOG_TARGET_CONSOLE); /* syslog will die if not gone yet */
++        log_close_console(); /* force reopen of /dev/console */
+         log_open();
+         umask(0022);
+diff --git a/src/shared/log.c b/src/shared/log.c
+index 8f4995a..bd918fb 100644
+--- a/src/shared/log.c
++++ b/src/shared/log.c
+@@ -272,8 +272,6 @@ int log_open(void) {
+         log_close_journal();
+         log_close_syslog();
+-        /* Get the real /dev/console if we are PID=1, hence reopen */
+-        log_close_console();
+         return log_open_console();
+ }
diff --git a/debian/patches/log-log_error-and-friends-add-a-newline-after-each-l.patch b/debian/patches/log-log_error-and-friends-add-a-newline-after-each-l.patch
new file mode 100644 (file)
index 0000000..17cd59e
--- /dev/null
@@ -0,0 +1,1521 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 24 Dec 2013 16:39:37 +0100
+Subject: log: log_error() and friends add a newline after each line anyway,
+ so avoid including it in the log strings
+
+(cherry picked from commit 9f6445e34a57c270f013c9416c123e56261553dd)
+
+Conflicts:
+       src/bus-driverd/bus-driverd.c
+       src/bus-proxyd/bus-proxyd.c
+       src/shared/path-util.c
+       src/udev/net/link-config.c
+       src/udev/scsi_id/scsi_id.c
+       src/udev/scsi_id/scsi_serial.c
+       src/udev/udev-builtin-keyboard.c
+       src/udev/udev-event.c
+       src/udev/udev-rules.c
+       src/udev/udevadm-monitor.c
+       src/udev/udevadm-trigger.c
+       src/udev/udevd.c
+---
+ src/binfmt/binfmt.c                    |   2 +-
+ src/bootchart/bootchart.c              |   4 +-
+ src/journal/coredumpctl.c              |   2 +-
+ src/journal/journal-authenticate.c     |   2 +-
+ src/modules-load/modules-load.c        |   4 +-
+ src/sysctl/sysctl.c                    |   2 +-
+ src/test/test-udev.c                   |   8 +-
+ src/tmpfiles/tmpfiles.c                |   4 +-
+ src/udev/accelerometer/accelerometer.c |   2 +-
+ src/udev/ata_id/ata_id.c               |   6 +-
+ src/udev/cdrom_id/cdrom_id.c           | 160 ++++++++++++++++-----------------
+ src/udev/udev-builtin-blkid.c          |   2 +-
+ src/udev/udev-builtin-firmware.c       |  10 +--
+ src/udev/udev-builtin-input_id.c       |  14 +--
+ src/udev/udev-builtin-kmod.c           |  18 ++--
+ src/udev/udev-builtin-usb_id.c         |  22 ++---
+ src/udev/udev-ctrl.c                   |  22 ++---
+ src/udev/udev-node.c                   |  32 +++----
+ src/udev/udev-watch.c                  |  10 +--
+ src/udev/udevadm-hwdb.c                |  42 ++++-----
+ src/udev/udevadm-settle.c              |  16 ++--
+ src/udev/udevadm-test.c                |   4 +-
+ src/udev/udevadm.c                     |   2 +-
+ 23 files changed, 195 insertions(+), 195 deletions(-)
+
+diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
+index 5a42b3d..7ed1ae7 100644
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -94,7 +94,7 @@ static int apply_file(const char *path, bool ignore_enoent) {
+                 return r;
+         }
+-        log_debug("apply: %s\n", path);
++        log_debug("apply: %s", path);
+         for (;;) {
+                 char l[LINE_MAX], *p;
+                 int k;
+diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
+index 14ccd3e..9f99c1f 100644
+--- a/src/bootchart/bootchart.c
++++ b/src/bootchart/bootchart.c
+@@ -262,12 +262,12 @@ static void do_journal_append(char *file)
+         f = open(file, O_RDONLY);
+         if (f < 0) {
+-                log_error("Failed to read bootchart data: %m\n");
++                log_error("Failed to read bootchart data: %m");
+                 return;
+         }
+         n = loop_read(f, p + 10, BOOTCHART_MAX, false);
+         if (n < 0) {
+-                log_error("Failed to read bootchart data: %s\n", strerror(-n));
++                log_error("Failed to read bootchart data: %s", strerror(-n));
+                 close(f);
+                 return;
+         }
+diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c
+index 75c96cc..560a91b 100644
+--- a/src/journal/coredumpctl.c
++++ b/src/journal/coredumpctl.c
+@@ -417,7 +417,7 @@ static int dump_core(sd_journal* j) {
+         r = sd_journal_previous(j);
+         if (r >= 0)
+-                log_warning("More than one entry matches, ignoring rest.\n");
++                log_warning("More than one entry matches, ignoring rest.");
+         return 0;
+ }
+diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c
+index bd7100a..f416b79 100644
+--- a/src/journal/journal-authenticate.c
++++ b/src/journal/journal-authenticate.c
+@@ -60,7 +60,7 @@ int journal_file_append_tag(JournalFile *f) {
+         o->tag.seqnum = htole64(journal_file_tag_seqnum(f));
+         o->tag.epoch = htole64(FSPRG_GetEpoch(f->fsprg_state));
+-        log_debug("Writing tag %"PRIu64" for epoch %"PRIu64"\n",
++        log_debug("Writing tag %"PRIu64" for epoch %"PRIu64"",
+                   le64toh(o->tag.seqnum),
+                   FSPRG_GetEpoch(f->fsprg_state));
+diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
+index 49ee420..9789398 100644
+--- a/src/modules-load/modules-load.c
++++ b/src/modules-load/modules-load.c
+@@ -122,7 +122,7 @@ static int load_module(struct kmod_ctx *ctx, const char *m) {
+         struct kmod_list *itr, *modlist = NULL;
+         int r = 0;
+-        log_debug("load: %s\n", m);
++        log_debug("load: %s", m);
+         r = kmod_module_new_from_lookup(ctx, m, &modlist);
+         if (r < 0) {
+@@ -190,7 +190,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent
+                 return r;
+         }
+-        log_debug("apply: %s\n", path);
++        log_debug("apply: %s", path);
+         for (;;) {
+                 char line[LINE_MAX], *l;
+                 int k;
+diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
+index b5670db..8fb0eb6 100644
+--- a/src/sysctl/sysctl.c
++++ b/src/sysctl/sysctl.c
+@@ -132,7 +132,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
+                 return r;
+         }
+-        log_debug("parse: %s\n", path);
++        log_debug("parse: %s", path);
+         while (!feof(f)) {
+                 char l[LINE_MAX], *p, *value, *new_value, *property, *existing;
+                 void *v;
+diff --git a/src/test/test-udev.c b/src/test/test-udev.c
+index 17825f1..676669b 100644
+--- a/src/test/test-udev.c
++++ b/src/test/test-udev.c
+@@ -101,20 +101,20 @@ int main(int argc, char *argv[])
+         if (udev == NULL)
+                 return EXIT_FAILURE;
+-        log_debug("version %s\n", VERSION);
++        log_debug("version %s", VERSION);
+         label_init("/dev");
+         sigprocmask(SIG_SETMASK, NULL, &sigmask_orig);
+         action = argv[1];
+         if (action == NULL) {
+-                log_error("action missing\n");
++                log_error("action missing");
+                 goto out;
+         }
+         devpath = argv[2];
+         if (devpath == NULL) {
+-                log_error("devpath missing\n");
++                log_error("devpath missing");
+                 goto out;
+         }
+@@ -123,7 +123,7 @@ int main(int argc, char *argv[])
+         strscpyl(syspath, sizeof(syspath), "/sys", devpath, NULL);
+         dev = udev_device_new_from_syspath(udev, syspath);
+         if (dev == NULL) {
+-                log_debug("unknown device '%s'\n", devpath);
++                log_debug("unknown device '%s'", devpath);
+                 goto out;
+         }
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index e23847b..00f74c2 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -359,7 +359,7 @@ static int dir_cleanup(
+                                 continue;
+                         if (i->type != IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) {
+-                                log_debug("rmdir '%s'\n", sub_path);
++                                log_debug("rmdir '%s'", sub_path);
+                                 if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) {
+                                         if (errno != ENOENT && errno != ENOTEMPTY) {
+@@ -407,7 +407,7 @@ static int dir_cleanup(
+                         if (age >= cutoff)
+                                 continue;
+-                        log_debug("unlink '%s'\n", sub_path);
++                        log_debug("unlink '%s'", sub_path);
+                         if (unlinkat(dirfd(d), dent->d_name, 0) < 0) {
+                                 if (errno != ENOENT) {
+diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c
+index e611b48..9610d7c 100644
+--- a/src/udev/accelerometer/accelerometer.c
++++ b/src/udev/accelerometer/accelerometer.c
+@@ -334,7 +334,7 @@ int main (int argc, char** argv)
+                 return 0;
+         }
+-        log_debug("opening accelerometer device %s\n", devnode);
++        log_debug("opening accelerometer device %s", devnode);
+         test_orientation(udev, dev, devnode);
+         free(devnode);
+         log_close();
+diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c
+index d375d43..5e55f8d 100644
+--- a/src/udev/ata_id/ata_id.c
++++ b/src/udev/ata_id/ata_id.c
+@@ -462,14 +462,14 @@ int main(int argc, char *argv[])
+         node = argv[optind];
+         if (node == NULL) {
+-                log_error("no node specified\n");
++                log_error("no node specified");
+                 rc = 1;
+                 goto exit;
+         }
+         fd = open(node, O_RDONLY|O_NONBLOCK);
+         if (fd < 0) {
+-                log_error("unable to open '%s'\n", node);
++                log_error("unable to open '%s'", node);
+                 rc = 1;
+                 goto exit;
+         }
+@@ -501,7 +501,7 @@ int main(int argc, char *argv[])
+         } else {
+                 /* If this fails, then try HDIO_GET_IDENTITY */
+                 if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) {
+-                        log_debug("HDIO_GET_IDENTITY failed for '%s': %m\n", node);
++                        log_debug("HDIO_GET_IDENTITY failed for '%s': %m", node);
+                         rc = 2;
+                         goto close;
+                 }
+diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c
+index 1ad0459..1fc0dfa 100644
+--- a/src/udev/cdrom_id/cdrom_id.c
++++ b/src/udev/cdrom_id/cdrom_id.c
+@@ -137,10 +137,10 @@ static bool is_mounted(const char *device)
+ static void info_scsi_cmd_err(struct udev *udev, const char *cmd, int err)
+ {
+         if (err == -1) {
+-                log_debug("%s failed\n", cmd);
++                log_debug("%s failed", cmd);
+                 return;
+         }
+-        log_debug("%s failed with SK=%Xh/ASC=%02Xh/ACQ=%02Xh\n", cmd, SK(err), ASC(err), ASCQ(err));
++        log_debug("%s failed with SK=%Xh/ASC=%02Xh/ACQ=%02Xh", cmd, SK(err), ASC(err), ASCQ(err));
+ }
+ struct scsi_cmd {
+@@ -205,11 +205,11 @@ static int media_lock(struct udev *udev, int fd, bool lock)
+         /* disable the kernel's lock logic */
+         err = ioctl(fd, CDROM_CLEAR_OPTIONS, CDO_LOCK);
+         if (err < 0)
+-                log_debug("CDROM_CLEAR_OPTIONS, CDO_LOCK failed\n");
++                log_debug("CDROM_CLEAR_OPTIONS, CDO_LOCK failed");
+         err = ioctl(fd, CDROM_LOCKDOOR, lock ? 1 : 0);
+         if (err < 0)
+-                log_debug("CDROM_LOCKDOOR failed\n");
++                log_debug("CDROM_LOCKDOOR failed");
+         return err;
+ }
+@@ -237,7 +237,7 @@ static int cd_capability_compat(struct udev *udev, int fd)
+         capability = ioctl(fd, CDROM_GET_CAPABILITY, NULL);
+         if (capability < 0) {
+-                log_debug("CDROM_GET_CAPABILITY failed\n");
++                log_debug("CDROM_GET_CAPABILITY failed");
+                 return -1;
+         }
+@@ -261,7 +261,7 @@ static int cd_capability_compat(struct udev *udev, int fd)
+ static int cd_media_compat(struct udev *udev, int fd)
+ {
+         if (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) {
+-                log_debug("CDROM_DRIVE_STATUS != CDS_DISC_OK\n");
++                log_debug("CDROM_DRIVE_STATUS != CDS_DISC_OK");
+                 return -1;
+         }
+         cd_media = 1;
+@@ -285,11 +285,11 @@ static int cd_inquiry(struct udev *udev, int fd)
+         }
+         if ((inq[0] & 0x1F) != 5) {
+-                log_debug("not an MMC unit\n");
++                log_debug("not an MMC unit");
+                 return -1;
+         }
+-        log_debug("INQUIRY: [%.8s][%.16s][%.4s]\n", inq + 8, inq + 16, inq + 32);
++        log_debug("INQUIRY: [%.8s][%.16s][%.4s]", inq + 8, inq + 16, inq + 32);
+         return 0;
+ }
+@@ -299,105 +299,105 @@ static void feature_profile_media(struct udev *udev, int cur_profile)
+         case 0x03:
+         case 0x04:
+         case 0x05:
+-                log_debug("profile 0x%02x \n", cur_profile);
++                log_debug("profile 0x%02x ", cur_profile);
+                 cd_media = 1;
+                 cd_media_mo = 1;
+                 break;
+         case 0x08:
+-                log_debug("profile 0x%02x media_cd_rom\n", cur_profile);
++                log_debug("profile 0x%02x media_cd_rom", cur_profile);
+                 cd_media = 1;
+                 cd_media_cd_rom = 1;
+                 break;
+         case 0x09:
+-                log_debug("profile 0x%02x media_cd_r\n", cur_profile);
++                log_debug("profile 0x%02x media_cd_r", cur_profile);
+                 cd_media = 1;
+                 cd_media_cd_r = 1;
+                 break;
+         case 0x0a:
+-                log_debug("profile 0x%02x media_cd_rw\n", cur_profile);
++                log_debug("profile 0x%02x media_cd_rw", cur_profile);
+                 cd_media = 1;
+                 cd_media_cd_rw = 1;
+                 break;
+         case 0x10:
+-                log_debug("profile 0x%02x media_dvd_ro\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_ro", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_rom = 1;
+                 break;
+         case 0x11:
+-                log_debug("profile 0x%02x media_dvd_r\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_r", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_r = 1;
+                 break;
+         case 0x12:
+-                log_debug("profile 0x%02x media_dvd_ram\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_ram", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_ram = 1;
+                 break;
+         case 0x13:
+-                log_debug("profile 0x%02x media_dvd_rw_ro\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_rw_ro", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_rw = 1;
+                 cd_media_dvd_rw_ro = 1;
+                 break;
+         case 0x14:
+-                log_debug("profile 0x%02x media_dvd_rw_seq\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_rw_seq", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_rw = 1;
+                 cd_media_dvd_rw_seq = 1;
+                 break;
+         case 0x1B:
+-                log_debug("profile 0x%02x media_dvd_plus_r\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_plus_r", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_plus_r = 1;
+                 break;
+         case 0x1A:
+-                log_debug("profile 0x%02x media_dvd_plus_rw\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_plus_rw", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_plus_rw = 1;
+                 break;
+         case 0x2A:
+-                log_debug("profile 0x%02x media_dvd_plus_rw_dl\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_plus_rw_dl", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_plus_rw_dl = 1;
+                 break;
+         case 0x2B:
+-                log_debug("profile 0x%02x media_dvd_plus_r_dl\n", cur_profile);
++                log_debug("profile 0x%02x media_dvd_plus_r_dl", cur_profile);
+                 cd_media = 1;
+                 cd_media_dvd_plus_r_dl = 1;
+                 break;
+         case 0x40:
+-                log_debug("profile 0x%02x media_bd\n", cur_profile);
++                log_debug("profile 0x%02x media_bd", cur_profile);
+                 cd_media = 1;
+                 cd_media_bd = 1;
+                 break;
+         case 0x41:
+         case 0x42:
+-                log_debug("profile 0x%02x media_bd_r\n", cur_profile);
++                log_debug("profile 0x%02x media_bd_r", cur_profile);
+                 cd_media = 1;
+                 cd_media_bd_r = 1;
+                 break;
+         case 0x43:
+-                log_debug("profile 0x%02x media_bd_re\n", cur_profile);
++                log_debug("profile 0x%02x media_bd_re", cur_profile);
+                 cd_media = 1;
+                 cd_media_bd_re = 1;
+                 break;
+         case 0x50:
+-                log_debug("profile 0x%02x media_hddvd\n", cur_profile);
++                log_debug("profile 0x%02x media_hddvd", cur_profile);
+                 cd_media = 1;
+                 cd_media_hddvd = 1;
+                 break;
+         case 0x51:
+-                log_debug("profile 0x%02x media_hddvd_r\n", cur_profile);
++                log_debug("profile 0x%02x media_hddvd_r", cur_profile);
+                 cd_media = 1;
+                 cd_media_hddvd_r = 1;
+                 break;
+         case 0x52:
+-                log_debug("profile 0x%02x media_hddvd_rw\n", cur_profile);
++                log_debug("profile 0x%02x media_hddvd_rw", cur_profile);
+                 cd_media = 1;
+                 cd_media_hddvd_rw = 1;
+                 break;
+         default:
+-                log_debug("profile 0x%02x <ignored>\n", cur_profile);
++                log_debug("profile 0x%02x <ignored>", cur_profile);
+                 break;
+         }
+ }
+@@ -414,77 +414,77 @@ static int feature_profiles(struct udev *udev, const unsigned char *profiles, si
+                 case 0x03:
+                 case 0x04:
+                 case 0x05:
+-                        log_debug("profile 0x%02x mo\n", profile);
++                        log_debug("profile 0x%02x mo", profile);
+                         cd_mo = 1;
+                         break;
+                 case 0x08:
+-                        log_debug("profile 0x%02x cd_rom\n", profile);
++                        log_debug("profile 0x%02x cd_rom", profile);
+                         cd_cd_rom = 1;
+                         break;
+                 case 0x09:
+-                        log_debug("profile 0x%02x cd_r\n", profile);
++                        log_debug("profile 0x%02x cd_r", profile);
+                         cd_cd_r = 1;
+                         break;
+                 case 0x0A:
+-                        log_debug("profile 0x%02x cd_rw\n", profile);
++                        log_debug("profile 0x%02x cd_rw", profile);
+                         cd_cd_rw = 1;
+                         break;
+                 case 0x10:
+-                        log_debug("profile 0x%02x dvd_rom\n", profile);
++                        log_debug("profile 0x%02x dvd_rom", profile);
+                         cd_dvd_rom = 1;
+                         break;
+                 case 0x12:
+-                        log_debug("profile 0x%02x dvd_ram\n", profile);
++                        log_debug("profile 0x%02x dvd_ram", profile);
+                         cd_dvd_ram = 1;
+                         break;
+                 case 0x13:
+                 case 0x14:
+-                        log_debug("profile 0x%02x dvd_rw\n", profile);
++                        log_debug("profile 0x%02x dvd_rw", profile);
+                         cd_dvd_rw = 1;
+                         break;
+                 case 0x1B:
+-                        log_debug("profile 0x%02x dvd_plus_r\n", profile);
++                        log_debug("profile 0x%02x dvd_plus_r", profile);
+                         cd_dvd_plus_r = 1;
+                         break;
+                 case 0x1A:
+-                        log_debug("profile 0x%02x dvd_plus_rw\n", profile);
++                        log_debug("profile 0x%02x dvd_plus_rw", profile);
+                         cd_dvd_plus_rw = 1;
+                         break;
+                 case 0x2A:
+-                        log_debug("profile 0x%02x dvd_plus_rw_dl\n", profile);
++                        log_debug("profile 0x%02x dvd_plus_rw_dl", profile);
+                         cd_dvd_plus_rw_dl = 1;
+                         break;
+                 case 0x2B:
+-                        log_debug("profile 0x%02x dvd_plus_r_dl\n", profile);
++                        log_debug("profile 0x%02x dvd_plus_r_dl", profile);
+                         cd_dvd_plus_r_dl = 1;
+                         break;
+                 case 0x40:
+                         cd_bd = 1;
+-                        log_debug("profile 0x%02x bd\n", profile);
++                        log_debug("profile 0x%02x bd", profile);
+                         break;
+                 case 0x41:
+                 case 0x42:
+                         cd_bd_r = 1;
+-                        log_debug("profile 0x%02x bd_r\n", profile);
++                        log_debug("profile 0x%02x bd_r", profile);
+                         break;
+                 case 0x43:
+                         cd_bd_re = 1;
+-                        log_debug("profile 0x%02x bd_re\n", profile);
++                        log_debug("profile 0x%02x bd_re", profile);
+                         break;
+                 case 0x50:
+                         cd_hddvd = 1;
+-                        log_debug("profile 0x%02x hddvd\n", profile);
++                        log_debug("profile 0x%02x hddvd", profile);
+                         break;
+                 case 0x51:
+                         cd_hddvd_r = 1;
+-                        log_debug("profile 0x%02x hddvd_r\n", profile);
++                        log_debug("profile 0x%02x hddvd_r", profile);
+                         break;
+                 case 0x52:
+                         cd_hddvd_rw = 1;
+-                        log_debug("profile 0x%02x hddvd_rw\n", profile);
++                        log_debug("profile 0x%02x hddvd_rw", profile);
+                         break;
+                 default:
+-                        log_debug("profile 0x%02x <ignored>\n", profile);
++                        log_debug("profile 0x%02x <ignored>", profile);
+                         break;
+                 }
+         }
+@@ -507,13 +507,13 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd)
+         if ((err != 0)) {
+                 info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
+                 if (cd_media == 1) {
+-                        log_debug("no current profile, but disc is present; assuming CD-ROM\n");
++                        log_debug("no current profile, but disc is present; assuming CD-ROM");
+                         cd_media_cd_rom = 1;
+                         cd_media_track_count = 1;
+                         cd_media_track_count_data = 1;
+                         return 0;
+                 } else {
+-                        log_debug("no current profile, assuming no media\n");
++                        log_debug("no current profile, assuming no media");
+                         return -1;
+                 }
+         };
+@@ -522,13 +522,13 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd)
+         if (header[2] & 16) {
+                 cd_media_cd_rw = 1;
+-                log_debug("profile 0x0a media_cd_rw\n");
++                log_debug("profile 0x0a media_cd_rw");
+         } else if ((header[2] & 3) < 2 && cd_cd_r) {
+                 cd_media_cd_r = 1;
+-                log_debug("profile 0x09 media_cd_r\n");
++                log_debug("profile 0x09 media_cd_r");
+         } else {
+                 cd_media_cd_rom = 1;
+-                log_debug("profile 0x08 media_cd_rom\n");
++                log_debug("profile 0x08 media_cd_rom");
+         }
+         return 0;
+ }
+@@ -556,8 +556,8 @@ static int cd_profiles(struct udev *udev, int fd)
+                 info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
+                 /* handle pre-MMC2 drives which do not support GET CONFIGURATION */
+                 if (SK(err) == 0x5 && ASC(err) == 0x20) {
+-                        log_debug("drive is pre-MMC2 and does not support 46h get configuration command\n");
+-                        log_debug("trying to work around the problem\n");
++                        log_debug("drive is pre-MMC2 and does not support 46h get configuration command");
++                        log_debug("trying to work around the problem");
+                         ret = cd_profiles_old_mmc(udev, fd);
+                 }
+                 goto out;
+@@ -565,18 +565,18 @@ static int cd_profiles(struct udev *udev, int fd)
+         cur_profile = features[6] << 8 | features[7];
+         if (cur_profile > 0) {
+-                log_debug("current profile 0x%02x\n", cur_profile);
++                log_debug("current profile 0x%02x", cur_profile);
+                 feature_profile_media (udev, cur_profile);
+                 ret = 0; /* we have media */
+         } else {
+-                log_debug("no current profile, assuming no media\n");
++                log_debug("no current profile, assuming no media");
+         }
+         len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3];
+-        log_debug("GET CONFIGURATION: size of features buffer 0x%04x\n", len);
++        log_debug("GET CONFIGURATION: size of features buffer 0x%04x", len);
+         if (len > sizeof(features)) {
+-                log_debug("can not get features in a single query, truncating\n");
++                log_debug("can not get features in a single query, truncating");
+                 len = sizeof(features);
+         } else if (len <= 8) {
+                 len = sizeof(features);
+@@ -596,10 +596,10 @@ static int cd_profiles(struct udev *udev, int fd)
+         /* parse the length once more, in case the drive decided to have other features suddenly :) */
+         len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3];
+-        log_debug("GET CONFIGURATION: size of features buffer 0x%04x\n", len);
++        log_debug("GET CONFIGURATION: size of features buffer 0x%04x", len);
+         if (len > sizeof(features)) {
+-                log_debug("can not get features in a single query, truncating\n");
++                log_debug("can not get features in a single query, truncating");
+                 len = sizeof(features);
+         }
+@@ -611,11 +611,11 @@ static int cd_profiles(struct udev *udev, int fd)
+                 switch (feature) {
+                 case 0x00:
+-                        log_debug("GET CONFIGURATION: feature 'profiles', with %i entries\n", features[i+3] / 4);
++                        log_debug("GET CONFIGURATION: feature 'profiles', with %i entries", features[i+3] / 4);
+                         feature_profiles(udev, &features[i]+4, features[i+3]);
+                         break;
+                 default:
+-                        log_debug("GET CONFIGURATION: feature 0x%04x <ignored>, with 0x%02x bytes\n", feature, features[i+3]);
++                        log_debug("GET CONFIGURATION: feature 0x%04x <ignored>, with 0x%02x bytes", feature, features[i+3]);
+                         break;
+                 }
+         }
+@@ -646,8 +646,8 @@ static int cd_media_info(struct udev *udev, int fd)
+         };
+         cd_media = 1;
+-        log_debug("disk type %02x\n", header[8]);
+-        log_debug("hardware reported media status: %s\n", media_status[header[2] & 3]);
++        log_debug("disk type %02x", header[8]);
++        log_debug("hardware reported media status: %s", media_status[header[2] & 3]);
+         /* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
+         if (!cd_media_cd_rom)
+@@ -685,7 +685,7 @@ static int cd_media_info(struct udev *udev, int fd)
+                         }
+                         if (dvdstruct[4] & 0x02) {
+                                 cd_media_state = media_status[2];
+-                                log_debug("write-protected DVD-RAM media inserted\n");
++                                log_debug("write-protected DVD-RAM media inserted");
+                                 goto determined;
+                         }
+@@ -702,13 +702,13 @@ static int cd_media_info(struct udev *udev, int fd)
+                         len = format[3];
+                         if (len & 7 || len < 16) {
+-                                log_debug("invalid format capacities length\n");
++                                log_debug("invalid format capacities length");
+                                 return -1;
+                         }
+                         switch(format[8] & 3) {
+                             case 1:
+-                                log_debug("unformatted DVD-RAM media inserted\n");
++                                log_debug("unformatted DVD-RAM media inserted");
+                                 /* This means that last format was interrupted
+                                  * or failed, blank dvd-ram discs are factory
+                                  * formatted. Take no action here as it takes
+@@ -717,12 +717,12 @@ static int cd_media_info(struct udev *udev, int fd)
+                                 goto determined;
+                             case 2:
+-                                log_debug("formatted DVD-RAM media inserted\n");
++                                log_debug("formatted DVD-RAM media inserted");
+                                 break;
+                             case 3:
+                                 cd_media = 0; //return no media
+-                                log_debug("format capacities returned no media\n");
++                                log_debug("format capacities returned no media");
+                                 return -1;
+                         }
+                 }
+@@ -758,9 +758,9 @@ static int cd_media_info(struct udev *udev, int fd)
+                 if (!result) {
+                         cd_media_state = media_status[0];
+-                        log_debug("no data in blocks 0 or 16, assuming blank\n");
++                        log_debug("no data in blocks 0 or 16, assuming blank");
+                 } else {
+-                        log_debug("data in blocks 0 or 16, assuming complete\n");
++                        log_debug("data in blocks 0 or 16, assuming complete");
+                 }
+         }
+@@ -796,7 +796,7 @@ static int cd_media_toc(struct udev *udev, int fd)
+         }
+         len = (header[0] << 8 | header[1]) + 2;
+-        log_debug("READ TOC: len: %d, start track: %d, end track: %d\n", len, header[2], header[3]);
++        log_debug("READ TOC: len: %d, start track: %d, end track: %d", len, header[2], header[3]);
+         if (len > sizeof(toc))
+                 return -1;
+         if (len < 2)
+@@ -830,7 +830,7 @@ static int cd_media_toc(struct udev *udev, int fd)
+                 is_data_track = (p[1] & 0x04) != 0;
+                 block = p[4] << 24 | p[5] << 16 | p[6] << 8 | p[7];
+-                log_debug("track=%u info=0x%x(%s) start_block=%u\n",
++                log_debug("track=%u info=0x%x(%s) start_block=%u",
+                      p[2], p[1] & 0x0f, is_data_track ? "data":"audio", block);
+                 if (is_data_track)
+@@ -850,7 +850,7 @@ static int cd_media_toc(struct udev *udev, int fd)
+                 return -1;
+         }
+         len = header[4+4] << 24 | header[4+5] << 16 | header[4+6] << 8 | header[4+7];
+-        log_debug("last track %u starts at block %u\n", header[4+2], len);
++        log_debug("last track %u starts at block %u", header[4+2], len);
+         cd_media_session_last_offset = (unsigned long long int)len * 2048;
+         return 0;
+ }
+@@ -919,7 +919,7 @@ int main(int argc, char *argv[])
+         node = argv[optind];
+         if (!node) {
+-                log_error("no device\n");
++                log_error("no device");
+                 fprintf(stderr, "no device\n");
+                 rc = 1;
+                 goto exit;
+@@ -937,12 +937,12 @@ int main(int argc, char *argv[])
+                 nanosleep(&duration, NULL);
+         }
+         if (fd < 0) {
+-                log_debug("unable to open '%s'\n", node);
++                log_debug("unable to open '%s'", node);
+                 fprintf(stderr, "unable to open '%s'\n", node);
+                 rc = 1;
+                 goto exit;
+         }
+-        log_debug("probing: '%s'\n", node);
++        log_debug("probing: '%s'", node);
+         /* same data as original cdrom_id */
+         if (cd_capability_compat(udev, fd) < 0) {
+@@ -973,19 +973,19 @@ int main(int argc, char *argv[])
+ work:
+         /* lock the media, so we enable eject button events */
+         if (lock && cd_media) {
+-                log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (lock)\n");
++                log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (lock)");
+                 media_lock(udev, fd, true);
+         }
+         if (unlock && cd_media) {
+-                log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)\n");
++                log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)");
+                 media_lock(udev, fd, false);
+         }
+         if (eject) {
+-                log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)\n");
++                log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)");
+                 media_lock(udev, fd, false);
+-                log_debug("START_STOP_UNIT (eject)\n");
++                log_debug("START_STOP_UNIT (eject)");
+                 media_eject(udev, fd);
+         }
+diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c
+index b48dccc..c806bd6 100644
+--- a/src/udev/udev-builtin-blkid.c
++++ b/src/udev/udev-builtin-blkid.c
+@@ -190,7 +190,7 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t
+         if (err < 0)
+                 goto out;
+-        log_debug("probe %s %sraid offset=%llu\n",
++        log_debug("probe %s %sraid offset=%llu",
+                   udev_device_get_devnode(dev),
+                   noraid ? "no" : "", (unsigned long long) offset);
+diff --git a/src/udev/udev-builtin-firmware.c b/src/udev/udev-builtin-firmware.c
+index b80940b..8cfeed6 100644
+--- a/src/udev/udev-builtin-firmware.c
++++ b/src/udev/udev-builtin-firmware.c
+@@ -33,7 +33,7 @@ static bool set_loading(struct udev *udev, char *loadpath, const char *state)
+         ldfile = fopen(loadpath, "we");
+         if (ldfile == NULL) {
+-                log_error("error: can not open '%s'\n", loadpath);
++                log_error("error: can not open '%s'", loadpath);
+                 return false;
+         };
+         fprintf(ldfile, "%s\n", state);
+@@ -53,7 +53,7 @@ static bool copy_firmware(struct udev *udev, const char *source, const char *tar
+                 return false;
+         }
+-        log_debug("writing '%s' (%zi) to '%s'\n", source, size, target);
++        log_debug("writing '%s' (%zi) to '%s'", source, size, target);
+         fsource = fopen(source, "re");
+         if (fsource == NULL)
+@@ -90,7 +90,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo
+         firmware = udev_device_get_property_value(dev, "FIRMWARE");
+         if (firmware == NULL) {
+-                log_error("firmware parameter missing\n\n");
++                log_error("firmware parameter missing");
+                 rc = EXIT_FAILURE;
+                 goto exit;
+         }
+@@ -112,7 +112,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo
+         strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL);
+         if (fwfile == NULL) {
+-                log_debug("did not find firmware file '%s'\n", firmware);
++                log_debug("did not find firmware file '%s'", firmware);
+                 rc = EXIT_FAILURE;
+                 /*
+                  * Do not cancel the request in the initrd, the real root might have
+@@ -136,7 +136,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo
+         strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL);
+         if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) {
+-                log_error("error sending firmware '%s' to device\n", firmware);
++                log_error("error sending firmware '%s' to device", firmware);
+                 set_loading(udev, loadpath, "-1");
+                 rc = EXIT_FAILURE;
+                 goto exit;
+diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
+index 445b602..4691fc0 100644
+--- a/src/udev/udev-builtin-input_id.c
++++ b/src/udev/udev-builtin-input_id.c
+@@ -57,7 +57,7 @@ static void get_cap_mask(struct udev_device *dev,
+         unsigned long val;
+         snprintf(text, sizeof(text), "%s", udev_device_get_sysattr_value(pdev, attr));
+-        log_debug("%s raw kernel attribute: %s\n", attr, text);
++        log_debug("%s raw kernel attribute: %s", attr, text);
+         memset (bitmask, 0, bitmask_size);
+         i = 0;
+@@ -66,7 +66,7 @@ static void get_cap_mask(struct udev_device *dev,
+                 if (i < bitmask_size/sizeof(unsigned long))
+                         bitmask[i] = val;
+                 else
+-                        log_debug("ignoring %s block %lX which is larger than maximum size\n", attr, val);
++                        log_debug("ignoring %s block %lX which is larger than maximum size", attr, val);
+                 *word = '\0';
+                 ++i;
+         }
+@@ -74,12 +74,12 @@ static void get_cap_mask(struct udev_device *dev,
+         if (i < bitmask_size / sizeof(unsigned long))
+                 bitmask[i] = val;
+         else
+-                log_debug("ignoring %s block %lX which is larger than maximum size\n", attr, val);
++                log_debug("ignoring %s block %lX which is larger than maximum size", attr, val);
+         if (test) {
+                 /* printf pattern with the right unsigned long number of hex chars */
+                 snprintf(text, sizeof(text), "  bit %%4u: %%0%zilX\n", 2 * sizeof(unsigned long));
+-                log_debug("%s decoded bit map:\n", attr);
++                log_debug("%s decoded bit map:", attr);
+                 val = bitmask_size / sizeof (unsigned long);
+                 /* skip over leading zeros */
+                 while (bitmask[val-1] == 0 && val > 0)
+@@ -151,7 +151,7 @@ static void test_key (struct udev_device *dev,
+         /* do we have any KEY_* capability? */
+         if (!test_bit (EV_KEY, bitmask_ev)) {
+-                log_debug("test_key: no EV_KEY capability\n");
++                log_debug("test_key: no EV_KEY capability");
+                 return;
+         }
+@@ -159,13 +159,13 @@ static void test_key (struct udev_device *dev,
+         found = 0;
+         for (i = 0; i < BTN_MISC/BITS_PER_LONG; ++i) {
+                 found |= bitmask_key[i];
+-                log_debug("test_key: checking bit block %lu for any keys; found=%i\n", (unsigned long)i*BITS_PER_LONG, found > 0);
++                log_debug("test_key: checking bit block %lu for any keys; found=%i", (unsigned long)i*BITS_PER_LONG, found > 0);
+         }
+         /* If there are no keys in the lower block, check the higher block */
+         if (!found) {
+                 for (i = KEY_OK; i < BTN_TRIGGER_HAPPY; ++i) {
+                         if (test_bit (i, bitmask_key)) {
+-                                log_debug("test_key: Found key %x in high block\n", i);
++                                log_debug("test_key: Found key %x in high block", i);
+                                 found = 1;
+                                 break;
+                         }
+diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c
+index fc28121..097f881 100644
+--- a/src/udev/udev-builtin-kmod.c
++++ b/src/udev/udev-builtin-kmod.c
+@@ -44,18 +44,18 @@ static int load_module(struct udev *udev, const char *alias)
+                 return err;
+         if (list == NULL)
+-                log_debug("no module matches '%s'\n", alias);
++                log_debug("no module matches '%s'", alias);
+         kmod_list_foreach(l, list) {
+                 struct kmod_module *mod = kmod_module_get_module(l);
+                 err = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL);
+                 if (err == KMOD_PROBE_APPLY_BLACKLIST)
+-                        log_debug("module '%s' is blacklisted\n", kmod_module_get_name(mod));
++                        log_debug("module '%s' is blacklisted", kmod_module_get_name(mod));
+                 else if (err == 0)
+-                        log_debug("inserted '%s'\n", kmod_module_get_name(mod));
++                        log_debug("inserted '%s'", kmod_module_get_name(mod));
+                 else
+-                        log_debug("failed to insert '%s'\n", kmod_module_get_name(mod));
++                        log_debug("failed to insert '%s'", kmod_module_get_name(mod));
+                 kmod_module_unref(mod);
+         }
+@@ -79,12 +79,12 @@ static int builtin_kmod(struct udev_device *dev, int argc, char *argv[], bool te
+                 return 0;
+         if (argc < 3 || !streq(argv[1], "load")) {
+-                log_error("expect: %s load <module>\n", argv[0]);
++                log_error("expect: %s load <module>", argv[0]);
+                 return EXIT_FAILURE;
+         }
+         for (i = 2; argv[i]; i++) {
+-                log_debug("execute '%s' '%s'\n", argv[1], argv[i]);
++                log_debug("execute '%s' '%s'", argv[1], argv[i]);
+                 load_module(udev, argv[i]);
+         }
+@@ -101,7 +101,7 @@ static int builtin_kmod_init(struct udev *udev)
+         if (!ctx)
+                 return -ENOMEM;
+-        log_debug("load module index\n");
++        log_debug("load module index");
+         kmod_set_log_fn(ctx, udev_kmod_log, udev);
+         kmod_load_resources(ctx);
+         return 0;
+@@ -110,14 +110,14 @@ static int builtin_kmod_init(struct udev *udev)
+ /* called on udev shutdown and reload request */
+ static void builtin_kmod_exit(struct udev *udev)
+ {
+-        log_debug("unload module index\n");
++        log_debug("unload module index");
+         ctx = kmod_unref(ctx);
+ }
+ /* called every couple of seconds during event activity; 'true' if config has changed */
+ static bool builtin_kmod_validate(struct udev *udev)
+ {
+-        log_debug("validate module index\n");
++        log_debug("validate module index");
+         if (!ctx)
+                 return false;
+         return (kmod_validate_resources(ctx) != KMOD_RESOURCES_OK);
+diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c
+index 3e2f43e..1b9f824 100644
+--- a/src/udev/udev-builtin-usb_id.c
++++ b/src/udev/udev-builtin-usb_id.c
+@@ -275,7 +275,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+         /* usb interface directory */
+         dev_interface = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface");
+         if (dev_interface == NULL) {
+-                log_debug("unable to access usb_interface device of '%s'\n",
++                log_debug("unable to access usb_interface device of '%s'",
+                      udev_device_get_syspath(dev));
+                 return EXIT_FAILURE;
+         }
+@@ -285,7 +285,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+         if_class = udev_device_get_sysattr_value(dev_interface, "bInterfaceClass");
+         if (!if_class) {
+-                log_debug("%s: cannot get bInterfaceClass attribute\n",
++                log_debug("%s: cannot get bInterfaceClass attribute",
+                      udev_device_get_sysname(dev));
+                 return EXIT_FAILURE;
+         }
+@@ -300,13 +300,13 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+                 set_usb_iftype(type_str, if_class_num, sizeof(type_str)-1);
+         }
+-        log_debug("%s: if_class %d protocol %d\n",
++        log_debug("%s: if_class %d protocol %d",
+              udev_device_get_syspath(dev_interface), if_class_num, protocol);
+         /* usb device directory */
+         dev_usb = udev_device_get_parent_with_subsystem_devtype(dev_interface, "usb", "usb_device");
+         if (!dev_usb) {
+-                log_debug("unable to find parent 'usb' device of '%s'\n",
++                log_debug("unable to find parent 'usb' device of '%s'",
+                      udev_device_get_syspath(dev));
+                 return EXIT_FAILURE;
+         }
+@@ -323,19 +323,19 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+                 /* get scsi device */
+                 dev_scsi = udev_device_get_parent_with_subsystem_devtype(dev, "scsi", "scsi_device");
+                 if (dev_scsi == NULL) {
+-                        log_debug("unable to find parent 'scsi' device of '%s'\n",
++                        log_debug("unable to find parent 'scsi' device of '%s'",
+                              udev_device_get_syspath(dev));
+                         goto fallback;
+                 }
+                 if (sscanf(udev_device_get_sysname(dev_scsi), "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4) {
+-                        log_debug("invalid scsi device '%s'\n", udev_device_get_sysname(dev_scsi));
++                        log_debug("invalid scsi device '%s'", udev_device_get_sysname(dev_scsi));
+                         goto fallback;
+                 }
+                 /* Generic SPC-2 device */
+                 scsi_vendor = udev_device_get_sysattr_value(dev_scsi, "vendor");
+                 if (!scsi_vendor) {
+-                        log_debug("%s: cannot get SCSI vendor attribute\n",
++                        log_debug("%s: cannot get SCSI vendor attribute",
+                              udev_device_get_sysname(dev_scsi));
+                         goto fallback;
+                 }
+@@ -345,7 +345,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+                 scsi_model = udev_device_get_sysattr_value(dev_scsi, "model");
+                 if (!scsi_model) {
+-                        log_debug("%s: cannot get SCSI model attribute\n",
++                        log_debug("%s: cannot get SCSI model attribute",
+                              udev_device_get_sysname(dev_scsi));
+                         goto fallback;
+                 }
+@@ -355,7 +355,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+                 scsi_type = udev_device_get_sysattr_value(dev_scsi, "type");
+                 if (!scsi_type) {
+-                        log_debug("%s: cannot get SCSI type attribute\n",
++                        log_debug("%s: cannot get SCSI type attribute",
+                              udev_device_get_sysname(dev_scsi));
+                         goto fallback;
+                 }
+@@ -363,7 +363,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
+                 scsi_rev = udev_device_get_sysattr_value(dev_scsi, "rev");
+                 if (!scsi_rev) {
+-                        log_debug("%s: cannot get SCSI revision attribute\n",
++                        log_debug("%s: cannot get SCSI revision attribute",
+                              udev_device_get_sysname(dev_scsi));
+                         goto fallback;
+                 }
+@@ -389,7 +389,7 @@ fallback:
+                 if (!usb_vendor)
+                         usb_vendor = vendor_id;
+                 if (!usb_vendor) {
+-                        log_debug("No USB vendor information available\n");
++                        log_debug("No USB vendor information available");
+                         return EXIT_FAILURE;
+                 }
+                 udev_util_encode_string(usb_vendor, vendor_str_enc, sizeof(vendor_str_enc));
+diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c
+index e60da90..1898685 100644
+--- a/src/udev/udev-ctrl.c
++++ b/src/udev/udev-ctrl.c
+@@ -84,7 +84,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd)
+         if (fd < 0) {
+                 uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
+                 if (uctrl->sock < 0) {
+-                        log_error("error getting socket: %m\n");
++                        log_error("error getting socket: %m");
+                         udev_ctrl_unref(uctrl);
+                         return NULL;
+                 }
+@@ -118,14 +118,14 @@ int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl)
+                 if (err < 0) {
+                         err = -errno;
+-                        log_error("bind failed: %m\n");
++                        log_error("bind failed: %m");
+                         return err;
+                 }
+                 err = listen(uctrl->sock, 0);
+                 if (err < 0) {
+                         err = -errno;
+-                        log_error("listen failed: %m\n");
++                        log_error("listen failed: %m");
+                         return err;
+                 }
+@@ -193,7 +193,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl)
+         conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
+         if (conn->sock < 0) {
+                 if (errno != EINTR)
+-                        log_error("unable to receive ctrl connection: %m\n");
++                        log_error("unable to receive ctrl connection: %m");
+                 goto err;
+         }
+@@ -204,7 +204,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl)
+                 goto err;
+         }
+         if (ucred.uid > 0) {
+-                log_error("sender uid=%i, message ignored\n", ucred.uid);
++                log_error("sender uid=%i, message ignored", ucred.uid);
+                 goto err;
+         }
+@@ -367,11 +367,11 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn)
+                                 continue;
+                         goto err;
+                 } else if (r == 0) {
+-                        log_error("timeout waiting for ctrl message\n");
++                        log_error("timeout waiting for ctrl message");
+                         goto err;
+                 } else {
+                         if (!(pfd[0].revents & POLLIN)) {
+-                                log_error("ctrl connection error: %m\n");
++                                log_error("ctrl connection error: %m");
+                                 goto err;
+                         }
+                 }
+@@ -388,24 +388,24 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn)
+         smsg.msg_controllen = sizeof(cred_msg);
+         size = recvmsg(conn->sock, &smsg, 0);
+         if (size <  0) {
+-                log_error("unable to receive ctrl message: %m\n");
++                log_error("unable to receive ctrl message: %m");
+                 goto err;
+         }
+         cmsg = CMSG_FIRSTHDR(&smsg);
+         cred = (struct ucred *) CMSG_DATA(cmsg);
+         if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) {
+-                log_error("no sender credentials received, message ignored\n");
++                log_error("no sender credentials received, message ignored");
+                 goto err;
+         }
+         if (cred->uid != 0) {
+-                log_error("sender uid=%i, message ignored\n", cred->uid);
++                log_error("sender uid=%i, message ignored", cred->uid);
+                 goto err;
+         }
+         if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) {
+-                log_error("message magic 0x%08x doesn't match, ignore it\n", uctrl_msg->ctrl_msg_wire.magic);
++                log_error("message magic 0x%08x doesn't match, ignore it", uctrl_msg->ctrl_msg_wire.magic);
+                 goto err;
+         }
+diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c
+index 1148a15..ca3d781 100644
+--- a/src/udev/udev-node.c
++++ b/src/udev/udev-node.c
+@@ -65,7 +65,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
+         /* preserve link with correct target, do not replace node of other device */
+         if (lstat(slink, &stats) == 0) {
+                 if (S_ISBLK(stats.st_mode) || S_ISCHR(stats.st_mode)) {
+-                        log_error("conflicting device node '%s' found, link to '%s' will not be created\n", slink, node);
++                        log_error("conflicting device node '%s' found, link to '%s' will not be created", slink, node);
+                         goto exit;
+                 } else if (S_ISLNK(stats.st_mode)) {
+                         char buf[UTIL_PATH_SIZE];
+@@ -75,7 +75,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
+                         if (len > 0 && len < (int)sizeof(buf)) {
+                                 buf[len] = '\0';
+                                 if (streq(target, buf)) {
+-                                        log_debug("preserve already existing symlink '%s' to '%s'\n", slink, target);
++                                        log_debug("preserve already existing symlink '%s' to '%s'", slink, target);
+                                         label_fix(slink, true, false);
+                                         utimensat(AT_FDCWD, slink, NULL, AT_SYMLINK_NOFOLLOW);
+                                         goto exit;
+@@ -83,7 +83,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
+                         }
+                 }
+         } else {
+-                log_debug("creating symlink '%s' to '%s'\n", slink, target);
++                log_debug("creating symlink '%s' to '%s'", slink, target);
+                 do {
+                         err = mkdir_parents_label(slink, 0755);
+                         if (err != 0 && err != -ENOENT)
+@@ -98,7 +98,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
+                         goto exit;
+         }
+-        log_debug("atomically replace '%s'\n", slink);
++        log_debug("atomically replace '%s'", slink);
+         strscpyl(slink_tmp, sizeof(slink_tmp), slink, ".tmp-", udev_device_get_id_filename(dev), NULL);
+         unlink(slink_tmp);
+         do {
+@@ -112,12 +112,12 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
+                 label_context_clear();
+         } while (err == -ENOENT);
+         if (err != 0) {
+-                log_error("symlink '%s' '%s' failed: %m\n", target, slink_tmp);
++                log_error("symlink '%s' '%s' failed: %m", target, slink_tmp);
+                 goto exit;
+         }
+         err = rename(slink_tmp, slink);
+         if (err != 0) {
+-                log_error("rename '%s' '%s' failed: %m\n", slink_tmp, slink);
++                log_error("rename '%s' '%s' failed: %m", slink_tmp, slink);
+                 unlink(slink_tmp);
+         }
+ exit:
+@@ -151,7 +151,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons
+                 if (dent->d_name[0] == '.')
+                         continue;
+-                log_debug("found '%s' claiming '%s'\n", dent->d_name, stackdir);
++                log_debug("found '%s' claiming '%s'", dent->d_name, stackdir);
+                 /* did we find ourself? */
+                 if (streq(dent->d_name, udev_device_get_id_filename(dev)))
+@@ -164,7 +164,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons
+                         devnode = udev_device_get_devnode(dev_db);
+                         if (devnode != NULL) {
+                                 if (target == NULL || udev_device_get_devlink_priority(dev_db) > priority) {
+-                                        log_debug("'%s' claims priority %i for '%s'\n",
++                                        log_debug("'%s' claims priority %i for '%s'",
+                                                   udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir);
+                                         priority = udev_device_get_devlink_priority(dev_db);
+                                         strscpy(buf, bufsize, devnode);
+@@ -197,11 +197,11 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
+         target = link_find_prioritized(dev, add, dirname, buf, sizeof(buf));
+         if (target == NULL) {
+-                log_debug("no reference left, remove '%s'\n", slink);
++                log_debug("no reference left, remove '%s'", slink);
+                 if (unlink(slink) == 0)
+                         util_delete_path(udev, slink);
+         } else {
+-                log_debug("creating link '%s' to '%s'\n", slink, target);
++                log_debug("creating link '%s' to '%s'", slink, target);
+                 node_symlink(dev, target, slink);
+         }
+@@ -246,7 +246,7 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev
+                 if (found)
+                         continue;
+-                log_debug("update old name, '%s' no longer belonging to '%s'\n",
++                log_debug("update old name, '%s' no longer belonging to '%s'",
+                      name, udev_device_get_devpath(dev));
+                 link_update(dev, name, false);
+         }
+@@ -266,24 +266,24 @@ static int node_permissions_apply(struct udev_device *dev, bool apply, mode_t mo
+         if (lstat(devnode, &stats) != 0) {
+                 err = -errno;
+-                log_debug("can not stat() node '%s' (%m)\n", devnode);
++                log_debug("can not stat() node '%s' (%m)", devnode);
+                 goto out;
+         }
+         if (((stats.st_mode & S_IFMT) != (mode & S_IFMT)) || (stats.st_rdev != devnum)) {
+                 err = -EEXIST;
+-                log_debug("found node '%s' with non-matching devnum %s, skip handling\n",
++                log_debug("found node '%s' with non-matching devnum %s, skip handling",
+                           udev_device_get_devnode(dev), udev_device_get_id_filename(dev));
+                 goto out;
+         }
+         if (apply) {
+                 if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) {
+-                        log_debug("set permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid);
++                        log_debug("set permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
+                         chmod(devnode, mode);
+                         chown(devnode, uid, gid);
+                 } else {
+-                        log_debug("preserve permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid);
++                        log_debug("preserve permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
+                 }
+                 label_fix(devnode, true, false);
+         }
+@@ -299,7 +299,7 @@ void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid,
+         char filename[UTIL_PATH_SIZE];
+         struct udev_list_entry *list_entry;
+-        log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d\n",
++        log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d",
+                   udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid);
+         if (node_permissions_apply(dev, apply, mode, uid, gid) < 0)
+diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c
+index 9b694c6..cbe0c37 100644
+--- a/src/udev/udev-watch.c
++++ b/src/udev/udev-watch.c
+@@ -40,7 +40,7 @@ int udev_watch_init(struct udev *udev)
+ {
+         inotify_fd = inotify_init1(IN_CLOEXEC);
+         if (inotify_fd < 0)
+-                log_error("inotify_init failed: %m\n");
++                log_error("inotify_init failed: %m");
+         return inotify_fd;
+ }
+@@ -79,7 +79,7 @@ void udev_watch_restore(struct udev *udev)
+                         if (dev == NULL)
+                                 goto unlink;
+-                        log_debug("restoring old watch on '%s'\n", udev_device_get_devnode(dev));
++                        log_debug("restoring old watch on '%s'", udev_device_get_devnode(dev));
+                         udev_watch_begin(udev, dev);
+                         udev_device_unref(dev);
+ unlink:
+@@ -103,10 +103,10 @@ void udev_watch_begin(struct udev *udev, struct udev_device *dev)
+         if (inotify_fd < 0)
+                 return;
+-        log_debug("adding watch on '%s'\n", udev_device_get_devnode(dev));
++        log_debug("adding watch on '%s'", udev_device_get_devnode(dev));
+         wd = inotify_add_watch(inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);
+         if (wd < 0) {
+-                log_error("inotify_add_watch(%d, %s, %o) failed: %m\n",
++                log_error("inotify_add_watch(%d, %s, %o) failed: %m",
+                     inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);
+                 return;
+         }
+@@ -133,7 +133,7 @@ void udev_watch_end(struct udev *udev, struct udev_device *dev)
+         if (wd < 0)
+                 return;
+-        log_debug("removing watch on '%s'\n", udev_device_get_devnode(dev));
++        log_debug("removing watch on '%s'", udev_device_get_devnode(dev));
+         inotify_rm_watch(inotify_fd, wd);
+         snprintf(filename, sizeof(filename), "/run/udev/watch/%d", wd);
+diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c
+index d9dc73b..fe56758 100644
+--- a/src/udev/udevadm-hwdb.c
++++ b/src/udev/udevadm-hwdb.c
+@@ -389,17 +389,17 @@ static int trie_store(struct trie *trie, const char *filename) {
+                 goto out;
+         }
+-        log_debug("=== trie on-disk ===\n");
+-        log_debug("size:             %8llu bytes\n", (unsigned long long)size);
+-        log_debug("header:           %8zu bytes\n", sizeof(struct trie_header_f));
+-        log_debug("nodes:            %8llu bytes (%8llu)\n",
++        log_debug("=== trie on-disk ===");
++        log_debug("size:             %8llu bytes", (unsigned long long)size);
++        log_debug("header:           %8zu bytes", sizeof(struct trie_header_f));
++        log_debug("nodes:            %8llu bytes (%8llu)",
+                   (unsigned long long)t.nodes_count * sizeof(struct trie_node_f), (unsigned long long)t.nodes_count);
+-        log_debug("child pointers:   %8llu bytes (%8llu)\n",
++        log_debug("child pointers:   %8llu bytes (%8llu)",
+                   (unsigned long long)t.children_count * sizeof(struct trie_child_entry_f), (unsigned long long)t.children_count);
+-        log_debug("value pointers:   %8llu bytes (%8llu)\n",
++        log_debug("value pointers:   %8llu bytes (%8llu)",
+                   (unsigned long long)t.values_count * sizeof(struct trie_value_entry_f), (unsigned long long)t.values_count);
+-        log_debug("string store:     %8llu bytes\n", (unsigned long long)trie->strings->len);
+-        log_debug("strings start:    %8llu\n", (unsigned long long) t.strings_off);
++        log_debug("string store:     %8llu bytes", (unsigned long long)trie->strings->len);
++        log_debug("strings start:    %8llu", (unsigned long long) t.strings_off);
+ out:
+         free(filename_tmp);
+         return err;
+@@ -412,7 +412,7 @@ static int insert_data(struct trie *trie, struct udev_list *match_list,
+         value = strchr(line, '=');
+         if (!value) {
+-                log_error("Error, key/value pair expected but got '%s' in '%s':\n", line, filename);
++                log_error("Error, key/value pair expected but got '%s' in '%s':", line, filename);
+                 return -EINVAL;
+         }
+@@ -420,7 +420,7 @@ static int insert_data(struct trie *trie, struct udev_list *match_list,
+         value++;
+         if (line[0] == '\0' || value[0] == '\0') {
+-                log_error("Error, empty key or value '%s' in '%s':\n", line, filename);
++                log_error("Error, empty key or value '%s' in '%s':", line, filename);
+                 return -EINVAL;
+         }
+@@ -471,7 +471,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
+                                 break;
+                         if (line[0] == ' ') {
+-                                log_error("Error, MATCH expected but got '%s' in '%s':\n", line, filename);
++                                log_error("Error, MATCH expected but got '%s' in '%s':", line, filename);
+                                 break;
+                         }
+@@ -482,7 +482,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
+                 case HW_MATCH:
+                         if (len == 0) {
+-                                log_error("Error, DATA expected but got empty line in '%s':\n", filename);
++                                log_error("Error, DATA expected but got empty line in '%s':", filename);
+                                 state = HW_NONE;
+                                 udev_list_cleanup(&match_list);
+                                 break;
+@@ -508,7 +508,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
+                         }
+                         if (line[0] != ' ') {
+-                                log_error("Error, DATA expected but got '%s' in '%s':\n", line, filename);
++                                log_error("Error, DATA expected but got '%s' in '%s':", line, filename);
+                                 state = HW_NONE;
+                                 udev_list_cleanup(&match_list);
+                                 break;
+@@ -602,7 +602,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
+                 err = conf_files_list_strv(&files, ".hwdb", root, conf_file_dirs);
+                 if (err < 0) {
+-                        log_error("failed to enumerate hwdb files: %s\n", strerror(-err));
++                        log_error("failed to enumerate hwdb files: %s", strerror(-err));
+                         rc = EXIT_FAILURE;
+                         goto out;
+                 }
+@@ -614,18 +614,18 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
+                 strbuf_complete(trie->strings);
+-                log_debug("=== trie in-memory ===\n");
+-                log_debug("nodes:            %8zu bytes (%8zu)\n",
++                log_debug("=== trie in-memory ===");
++                log_debug("nodes:            %8zu bytes (%8zu)",
+                           trie->nodes_count * sizeof(struct trie_node), trie->nodes_count);
+-                log_debug("children arrays:  %8zu bytes (%8zu)\n",
++                log_debug("children arrays:  %8zu bytes (%8zu)",
+                           trie->children_count * sizeof(struct trie_child_entry), trie->children_count);
+-                log_debug("values arrays:    %8zu bytes (%8zu)\n",
++                log_debug("values arrays:    %8zu bytes (%8zu)",
+                           trie->values_count * sizeof(struct trie_value_entry), trie->values_count);
+-                log_debug("strings:          %8zu bytes\n",
++                log_debug("strings:          %8zu bytes",
+                           trie->strings->len);
+-                log_debug("strings incoming: %8zu bytes (%8zu)\n",
++                log_debug("strings incoming: %8zu bytes (%8zu)",
+                           trie->strings->in_len, trie->strings->in_count);
+-                log_debug("strings dedup'ed: %8zu bytes (%8zu)\n",
++                log_debug("strings dedup'ed: %8zu bytes (%8zu)",
+                           trie->strings->dedup_len, trie->strings->dedup_count);
+                 if (asprintf(&hwdb_bin, "%s/etc/udev/hwdb.bin", root) < 0) {
+diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
+index c4fc4ee..a131e3f 100644
+--- a/src/udev/udevadm-settle.c
++++ b/src/udev/udevadm-settle.c
+@@ -113,20 +113,20 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
+                         end = udev_queue_get_kernel_seqnum(udev_queue);
+                 if (start > end) {
+-                        log_error("seq-start larger than seq-end, ignoring\n");
++                        log_error("seq-start larger than seq-end, ignoring");
+                         start = 0;
+                         end = 0;
+                 }
+                 if (start > kernel_seq || end > kernel_seq) {
+-                        log_error("seq-start or seq-end larger than current kernel value, ignoring\n");
++                        log_error("seq-start or seq-end larger than current kernel value, ignoring");
+                         start = 0;
+                         end = 0;
+                 }
+-                log_debug("start=%llu end=%llu current=%llu\n", (unsigned long long)start, (unsigned long long)end, kernel_seq);
++                log_debug("start=%llu end=%llu current=%llu", (unsigned long long)start, (unsigned long long)end, kernel_seq);
+         } else {
+                 if (end > 0) {
+-                        log_error("seq-end needs seq-start parameter, ignoring\n");
++                        log_error("seq-end needs seq-start parameter, ignoring");
+                         end = 0;
+                 }
+         }
+@@ -138,7 +138,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
+                 uctrl = udev_ctrl_new(udev);
+                 if (uctrl != NULL) {
+                         if (udev_ctrl_send_ping(uctrl, timeout) < 0) {
+-                                log_debug("no connection to daemon\n");
++                                log_debug("no connection to daemon");
+                                 udev_ctrl_unref(uctrl);
+                                 rc = EXIT_SUCCESS;
+                                 goto out;
+@@ -150,10 +150,10 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
+         pfd[0].events = POLLIN;
+         pfd[0].fd = inotify_init1(IN_CLOEXEC);
+         if (pfd[0].fd < 0) {
+-                log_error("inotify_init failed: %m\n");
++                log_error("inotify_init failed: %m");
+         } else {
+                 if (inotify_add_watch(pfd[0].fd, "/run/udev" , IN_MOVED_TO) < 0) {
+-                        log_error("watching /run/udev failed\n");
++                        log_error("watching /run/udev failed");
+                         close(pfd[0].fd);
+                         pfd[0].fd = -1;
+                 }
+@@ -206,7 +206,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
+                                 struct udev_list_entry *list_entry;
+                                 if (!quiet && udev_queue_get_queued_list_entry(udev_queue) != NULL) {
+-                                        log_debug("timeout waiting for udev queue\n");
++                                        log_debug("timeout waiting for udev queue");
+                                         printf("\nudevadm settle - timeout of %i seconds reached, the event queue contains:\n", timeout);
+                                         udev_list_entry_foreach(list_entry, udev_queue_get_queued_list_entry(udev_queue))
+                                                 printf("  %s (%s)\n",
+diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c
+index df1409b..3aa3274 100644
+--- a/src/udev/udevadm-test.c
++++ b/src/udev/udevadm-test.c
+@@ -52,7 +52,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
+                 {}
+         };
+-        log_debug("version %s\n", VERSION);
++        log_debug("version %s", VERSION);
+         for (;;) {
+                 int option;
+@@ -74,7 +74,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
+                                 resolve_names = -1;
+                         } else {
+                                 fprintf(stderr, "resolve-names must be early, late or never\n");
+-                                log_error("resolve-names must be early, late or never\n");
++                                log_error("resolve-names must be early, late or never");
+                                 exit(EXIT_FAILURE);
+                         }
+                         break;
+diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c
+index e14b3ca..dbca369 100644
+--- a/src/udev/udevadm.c
++++ b/src/udev/udevadm.c
+@@ -79,7 +79,7 @@ static int run_command(struct udev *udev, const struct udevadm_cmd *cmd, int arg
+ {
+         if (cmd->debug)
+                 log_set_max_level(LOG_DEBUG);
+-        log_debug("calling: %s\n", cmd->name);
++        log_debug("calling: %s", cmd->name);
+         return cmd->cmd(udev, argc, argv);
+ }
diff --git a/debian/patches/log-when-we-log-to-dev-console-and-got-disconnected-.patch b/debian/patches/log-when-we-log-to-dev-console-and-got-disconnected-.patch
new file mode 100644 (file)
index 0000000..9c79022
--- /dev/null
@@ -0,0 +1,42 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 18 Dec 2013 16:49:15 +0100
+Subject: log: when we log to /dev/console and got disconnected (maybe due to
+ vhangup) reconnect
+
+(cherry picked from commit 0e6eaa2d98fffa86d29a9616485b7ade5c160638)
+---
+ src/shared/log.c | 21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/log.c b/src/shared/log.c
+index bd918fb..de770ca 100644
+--- a/src/shared/log.c
++++ b/src/shared/log.c
+@@ -335,8 +335,25 @@ static int write_to_console(
+                 IOVEC_SET_STRING(iovec[n++], ANSI_HIGHLIGHT_OFF);
+         IOVEC_SET_STRING(iovec[n++], "\n");
+-        if (writev(console_fd, iovec, n) < 0)
+-                return -errno;
++        if (writev(console_fd, iovec, n) < 0) {
++
++                if (errno == EIO && getpid() == 1) {
++
++                        /* If somebody tried to kick us from our
++                         * console tty (via vhangup() or suchlike),
++                         * try to reconnect */
++
++                        log_close_console();
++                        log_open_console();
++
++                        if (console_fd < 0)
++                                return 0;
++
++                        if (writev(console_fd, iovec, n) < 0)
++                                return -errno;
++                } else
++                        return -errno;
++        }
+         return 1;
+ }
diff --git a/debian/patches/logging-reduce-send-timeout-to-something-more-sensib.patch b/debian/patches/logging-reduce-send-timeout-to-something-more-sensib.patch
new file mode 100644 (file)
index 0000000..11e236f
--- /dev/null
@@ -0,0 +1,50 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Dec 2013 11:54:26 -0500
+Subject: logging: reduce send timeout to something more sensible
+
+For a user, the timeout of 1 min per message seems equivalent to a hang.
+If journald cannot process a message from PID1 for 10 ms then something
+is significantly wrong. It's better to lose the message and continue.
+
+(cherry picked from commit 4d89874af6a798744a32deb314001a13a28f0559)
+---
+ src/shared/log.c       | 5 ++++-
+ src/shared/time-util.c | 7 +++----
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/src/shared/log.c b/src/shared/log.c
+index de770ca..2267764 100644
+--- a/src/shared/log.c
++++ b/src/shared/log.c
+@@ -126,7 +126,10 @@ static int create_log_socket(int type) {
+         /* We need a blocking fd here since we'd otherwise lose
+         messages way too early. However, let's not hang forever in the
+         unlikely case of a deadlock. */
+-        timeval_store(&tv, 1*USEC_PER_MINUTE);
++        if (getpid() == 1)
++                timeval_store(&tv, 10 * USEC_PER_MSEC);
++        else
++                timeval_store(&tv, 10 * USEC_PER_SEC);
+         setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof(tv));
+         return fd;
+diff --git a/src/shared/time-util.c b/src/shared/time-util.c
+index d31401b..505b280 100644
+--- a/src/shared/time-util.c
++++ b/src/shared/time-util.c
+@@ -141,12 +141,11 @@ struct timeval *timeval_store(struct timeval *tv, usec_t u) {
+         if (u == (usec_t) -1) {
+                 tv->tv_sec = (time_t) -1;
+                 tv->tv_usec = (suseconds_t) -1;
+-                return tv;
++        } else {
++                tv->tv_sec = (time_t) (u / USEC_PER_SEC);
++                tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC);
+         }
+-        tv->tv_sec = (time_t) (u / USEC_PER_SEC);
+-        tv->tv_usec = (suseconds_t) (u % USEC_PER_SEC);
+-
+         return tv;
+ }
index e8fb2998475574b8f2c60e19537cf9efcb7400d3..0895d1f833f1cc571c2fd5e298a7e88f669d58d2 100644 (file)
@@ -7,6 +7,8 @@ With the current logic, a user will never be garbage-collected, since its
 manager will always be around. Change the logic such that a user is
 garbage-collected when it has no sessions and linger is disabled.
 
+(cherry picked from commit 63966da86d8e71b1f3f2b57d5448770d526421f9)
+
 Conflicts:
        src/login/logind-user.c
 ---
index cca4615f5bd03b0453e23ddfb82606dfa9783a4c..43baae2edf70e7d7af8eb45cb5c218541752988f 100644 (file)
@@ -9,7 +9,7 @@ error-paths might corrupt random memory.
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/login/sd-login.c b/src/login/sd-login.c
-index 9bfe43c..7e25041 100644
+index 71d8c29..6c27dfe 100644
 --- a/src/login/sd-login.c
 +++ b/src/login/sd-login.c
 @@ -350,7 +350,7 @@ _public_ int sd_session_get_tty(const char *session, char **tty) {
index 8271e2aa63f525ae1c177e3284354d58f71bf4a5..4bacc442626277b0d3819cf04df374df76f16d09 100644 (file)
@@ -9,7 +9,7 @@ an error.
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/src/login/sd-login.c b/src/login/sd-login.c
-index 71d8c29..9bfe43c 100644
+index 6c27dfe..7e25041 100644
 --- a/src/login/sd-login.c
 +++ b/src/login/sd-login.c
 @@ -354,7 +354,7 @@ _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) {
diff --git a/debian/patches/loginctl-when-showing-device-tree-of-seats-with-no-d.patch b/debian/patches/loginctl-when-showing-device-tree-of-seats-with-no-d.patch
new file mode 100644 (file)
index 0000000..997c99a
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 18 Dec 2013 17:16:33 +0100
+Subject: loginctl: when showing device tree of seats with no devices show
+ something useful
+
+(cherry picked from commit ddae67fa1bdd86b480a60ad6fc1d90d6f35a03d0)
+---
+ src/login/sysfs-show.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
+index f7d11dd..cb12ebf 100644
+--- a/src/login/sysfs-show.c
++++ b/src/login/sysfs-show.c
+@@ -181,6 +181,8 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
+         first = udev_enumerate_get_list_entry(e);
+         if (first)
+                 show_sysfs_one(udev, seat, &first, "/", prefix, n_columns);
++        else
++                printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT), "(none)");
+         return r;
+ }
diff --git a/debian/patches/logind-add-forgotten-call-to-user_send_changed.patch b/debian/patches/logind-add-forgotten-call-to-user_send_changed.patch
new file mode 100644 (file)
index 0000000..c2fd91d
--- /dev/null
@@ -0,0 +1,20 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 10 Mar 2014 18:11:45 +0100
+Subject: logind: add forgotten call to user_send_changed()
+
+---
+ src/login/logind-session.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index f31961a..e519d35 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -587,6 +587,7 @@ int session_start(Session *s) {
+         /* Send signals */
+         session_send_signal(s, true);
++        user_send_changed(s->user, "Sessions\0");
+         if (s->seat) {
+                 if (s->seat->active == s)
diff --git a/debian/patches/logind-add-forgotten-return-statement.patch b/debian/patches/logind-add-forgotten-return-statement.patch
new file mode 100644 (file)
index 0000000..95a628d
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Thu, 13 Mar 2014 11:18:27 +0100
+Subject: logind: add forgotten return statement
+
+---
+ src/login/logind-session.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 730f11d..ece222a 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -782,6 +782,8 @@ void session_release(Session *s) {
+                 goto out;
+         }
++        return;
++
+ out:
+         if (s->timer_fd >= 0) {
+                 close_nointr(s->timer_fd);
diff --git a/debian/patches/logind-allow-unprivileged-session-device-access.patch b/debian/patches/logind-allow-unprivileged-session-device-access.patch
new file mode 100644 (file)
index 0000000..73bf8d8
--- /dev/null
@@ -0,0 +1,45 @@
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Tue, 15 Oct 2013 21:13:39 +0200
+Subject: logind: allow unprivileged session-device access
+
+The session-device/control API was introduced for unprivileged device
+access from within a session. Add the required dbus policy to the default
+logind policies.
+
+Note: logind validates that only root and the user of a session can
+use the API. Furthermore, only a single API user gets access at a time.
+---
+ src/login/org.freedesktop.login1.conf | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/login/org.freedesktop.login1.conf b/src/login/org.freedesktop.login1.conf
+index 0407609..04e735e 100644
+--- a/src/login/org.freedesktop.login1.conf
++++ b/src/login/org.freedesktop.login1.conf
+@@ -148,6 +148,26 @@
+                        send_interface="org.freedesktop.login1.Session"
+                        send_member="SetIdleHint"/>
++                <allow send_destination="org.freedesktop.login1"
++                       send_interface="org.freedesktop.login1.Session"
++                       send_member="TakeControl"/>
++
++                <allow send_destination="org.freedesktop.login1"
++                       send_interface="org.freedesktop.login1.Session"
++                       send_member="ReleaseControl"/>
++
++                <allow send_destination="org.freedesktop.login1"
++                       send_interface="org.freedesktop.login1.Session"
++                       send_member="TakeDevice"/>
++
++                <allow send_destination="org.freedesktop.login1"
++                       send_interface="org.freedesktop.login1.Session"
++                       send_member="ReleaseDevice"/>
++
++                <allow send_destination="org.freedesktop.login1"
++                       send_interface="org.freedesktop.login1.Session"
++                       send_member="PauseDeviceComplete"/>
++
+                 <allow receive_sender="org.freedesktop.login1"/>
+         </policy>
diff --git a/debian/patches/logind-also-escape-external-data-when-saving-to-run.patch b/debian/patches/logind-also-escape-external-data-when-saving-to-run.patch
new file mode 100644 (file)
index 0000000..99df9ff
--- /dev/null
@@ -0,0 +1,75 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 10:35:28 +0900
+Subject: logind: also escape external data when saving to /run
+
+Better be safe than sorry...
+
+(cherry picked from commit 558c6490b1df7f82a63d0a747fda7412c4d28b0c)
+(cherry picked from commit 1be1ff309f703b077bf87020d520469d33546e03)
+
+Conflicts:
+       src/login/logind-session.c
+---
+ src/login/logind-session.c | 40 +++++++++++++++++++++++++++++++++-------
+ 1 file changed, 33 insertions(+), 7 deletions(-)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 13de549..9c87e43 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -202,7 +202,6 @@ int session_save(Session *s) {
+         if (s->scope)
+                 fprintf(f, "SCOPE=%s\n", s->scope);
+-
+         if (s->scope_job)
+                 fprintf(f, "SCOPE_JOB=%s\n", s->scope_job);
+@@ -218,14 +217,41 @@ int session_save(Session *s) {
+         if (s->display)
+                 fprintf(f, "DISPLAY=%s\n", s->display);
+-        if (s->remote_host)
+-                fprintf(f, "REMOTE_HOST=%s\n", s->remote_host);
++        if (s->remote_host) {
++                _cleanup_free_ char *escaped;
++
++                escaped = cescape(s->remote_host);
++                if (!escaped) {
++                        r = -ENOMEM;
++                        goto finish;
++                }
+-        if (s->remote_user)
+-                fprintf(f, "REMOTE_USER=%s\n", s->remote_user);
++                fprintf(f, "REMOTE_HOST=%s\n", escaped);
++        }
++
++        if (s->remote_user) {
++                _cleanup_free_ char *escaped;
++
++                escaped = cescape(s->remote_user);
++                if (!escaped) {
++                        r = -ENOMEM;
++                        goto finish;
++                }
+-        if (s->service)
+-                fprintf(f, "SERVICE=%s\n", s->service);
++                fprintf(f, "REMOTE_USER=%s\n", escaped);
++        }
++
++        if (s->service) {
++                _cleanup_free_ char *escaped;
++
++                escaped = cescape(s->service);
++                if (!escaped) {
++                        r = -ENOMEM;
++                        goto finish;
++                }
++
++                fprintf(f, "SERVICE=%s\n", escaped);
++        }
+         if (s->seat && seat_has_vts(s->seat))
+                 fprintf(f, "VTNR=%i\n", s->vtnr);
diff --git a/debian/patches/logind-bring-polkit-policy-for-hibernate-in-line-wit.patch b/debian/patches/logind-bring-polkit-policy-for-hibernate-in-line-wit.patch
new file mode 100644 (file)
index 0000000..c2d9db6
--- /dev/null
@@ -0,0 +1,27 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 15 May 2014 18:30:07 +0200
+Subject: logind: bring polkit policy for hibernate in line with
+ suspend/poweroff/reboot
+
+THere's no reason why hibernate should be better protected then
+suspendor poweroff, so sync the policies.
+
+(cherry picked from commit 301f9684e6465df5d0590f6c571fe3229ded966d)
+(cherry picked from commit 219b39885311455d16fd03922e043f93d8c35595)
+---
+ src/login/org.freedesktop.login1.policy.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/org.freedesktop.login1.policy.in b/src/login/org.freedesktop.login1.policy.in
+index b96d32d..b8e90f1 100644
+--- a/src/login/org.freedesktop.login1.policy.in
++++ b/src/login/org.freedesktop.login1.policy.in
+@@ -254,7 +254,7 @@
+                 <defaults>
+                         <allow_any>auth_admin_keep</allow_any>
+                         <allow_inactive>auth_admin_keep</allow_inactive>
+-                        <allow_active>auth_admin_keep</allow_active>
++                        <allow_active>yes</allow_active>
+                 </defaults>
+                 <annotate key="org.freedesktop.policykit.imply">org.freedesktop.login1.hibernate</annotate>
+         </action>
diff --git a/debian/patches/logind-fix-bus-introspection-data-for-TakeControl.patch b/debian/patches/logind-fix-bus-introspection-data-for-TakeControl.patch
new file mode 100644 (file)
index 0000000..ab72740
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 4 Oct 2013 21:16:40 +0200
+Subject: logind: fix bus introspection data for TakeControl()
+
+---
+ src/login/logind-session-dbus.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
+index 5f6bafb..be4e01c 100644
+--- a/src/login/logind-session-dbus.c
++++ b/src/login/logind-session-dbus.c
+@@ -41,7 +41,7 @@
+         "   <arg name=\"who\" type=\"s\"/>\n"                           \
+         "   <arg name=\"signal\" type=\"s\"/>\n"                        \
+         "  </method>\n"                                                 \
+-        "  <method name=\"TakeControl\"/>\n"                            \
++        "  <method name=\"TakeControl\">\n"                             \
+         "   <arg name=\"force\" type=\"b\"/>\n"                         \
+         "  </method>\n"                                                 \
+         "  <method name=\"ReleaseControl\"/>\n"                         \
diff --git a/debian/patches/logind-fix-policykit-checks.patch b/debian/patches/logind-fix-policykit-checks.patch
new file mode 100644 (file)
index 0000000..833a16e
--- /dev/null
@@ -0,0 +1,39 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 10 Mar 2014 08:25:15 -0400
+Subject: logind: fix policykit checks
+
+(cherry picked from commit 055d406624cb9e01963558767420b71e5f75d2d3)
+(cherry picked from commit 10ff861167dc4b03ad9e515141f535845fcfd38a)
+---
+ src/login/logind-dbus.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index e1f0c9a..a5ab19c 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -1302,18 +1302,24 @@ static int bus_manager_do_shutdown_or_sleep(
+                 r = verify_polkit(connection, message, action_multiple_sessions, interactive, NULL, error);
+                 if (r < 0)
+                         return r;
++                if (r == 0)
++                        return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+         }
+         if (blocked) {
+                 r = verify_polkit(connection, message, action_ignore_inhibit, interactive, NULL, error);
+                 if (r < 0)
+                         return r;
++                if (r == 0)
++                        return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+         }
+         if (!multiple_sessions && !blocked) {
+                 r = verify_polkit(connection, message, action, interactive, NULL, error);
+                 if (r < 0)
+                         return r;
++                if (r == 0)
++                        return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+         }
+         r = bus_manager_shutdown_or_sleep_now_or_later(m, unit_name, w, error);
diff --git a/debian/patches/logind-fix-reference-to-systemd-user-sessions.servic.patch b/debian/patches/logind-fix-reference-to-systemd-user-sessions.servic.patch
new file mode 100644 (file)
index 0000000..5c8a1f1
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 10 Mar 2014 17:47:35 +0100
+Subject: logind: fix reference to systemd-user-sessions.service
+
+---
+ src/login/logind-session.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 2bac0a2..f31961a 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -518,7 +518,7 @@ static int session_start_scope(Session *s) {
+                 if (!scope)
+                         return log_oom();
+-                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-session.service", &error, &job);
++                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-sessions.service", &error, &job);
+                 if (r < 0) {
+                         log_error("Failed to start session scope %s: %s %s",
+                                   scope, bus_error(&error, r), error.name);
diff --git a/debian/patches/logind-given-that-we-can-now-relatively-safely-shutd.patch b/debian/patches/logind-given-that-we-can-now-relatively-safely-shutd.patch
new file mode 100644 (file)
index 0000000..c76ff99
--- /dev/null
@@ -0,0 +1,42 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Tue, 4 Mar 2014 17:00:54 +0100
+Subject: logind: given that we can now relatively safely shutdown sessions
+ copes without working cgroup empty notifications there's no need to set the
+ stop timeout of sessions scopes low
+
+Based-on: a50df72b37ce2a7caf7775c70d18c3f9504b9e80
+---
+ src/login/logind-dbus.c | 11 +----------
+ 1 file changed, 1 insertion(+), 10 deletions(-)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index c1c3d7f..e1f0c9a 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -2548,10 +2548,9 @@ int manager_start_scope(
+                 DBusError *error,
+                 char **job) {
+-        const char *timeout_stop_property = "TimeoutStopUSec", *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs", *after_property = "After";
++        const char *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs", *after_property = "After";
+         _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL;
+         DBusMessageIter iter, sub, sub2, sub3, sub4;
+-        uint64_t timeout = 500 * USEC_PER_MSEC;
+         dbus_bool_t send_sighup = true;
+         const char *fail = "fail";
+         uint32_t u;
+@@ -2631,14 +2630,6 @@ int manager_start_scope(
+          * stop timeout for sessions, so that we don't wait
+          * forever. */
+-        if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
+-            !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &timeout_stop_property) ||
+-            !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "t", &sub3) ||
+-            !dbus_message_iter_append_basic(&sub3, DBUS_TYPE_UINT64, &timeout) ||
+-            !dbus_message_iter_close_container(&sub2, &sub3) ||
+-            !dbus_message_iter_close_container(&sub, &sub2))
+-                return log_oom();
+-
+         /* Make sure that the session shells are terminated with
+          * SIGHUP since bash and friends tend to ignore SIGTERM */
+         if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
diff --git a/debian/patches/logind-ignore-failing-close-on-session-devices.patch b/debian/patches/logind-ignore-failing-close-on-session-devices.patch
new file mode 100644 (file)
index 0000000..7b86c3a
--- /dev/null
@@ -0,0 +1,56 @@
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Thu, 28 Nov 2013 14:51:40 +0100
+Subject: logind: ignore failing close() on session-devices
+
+Unfortunately, close() on a revoked/removed character-device fails with
+ENODEV. I tried tracking this down in the kernel, but couldn't figure out
+were exactly it comes from. However, can be easily reproduced with:
+  fd = open("/dev/input/event0", O_RDWR);
+  ioctl(fd, EVIOCREVOKE, 0);
+  r = close(fd);
+A second close on @fd would return EBADF so the close is actually valid.
+
+We simply ignore close() errors for all session-devices as their access
+may be revoked asynchronously, or the device might get unplugged.
+We use close_nointr() in case anyone ever looks at the return value (or
+anyone runs "grep 'close(' -r src/" to find broken close() calls).
+
+Fixes:
+  systemd-logind[31992]: Assertion 'close_nointr(fd) == 0' failed at src/shared/util.c:185, function close_nointr_nofail(). Aborting.
+
+(cherry picked from commit d1107170f9e0fa2cb6e8d18586a003f0d96abfc3)
+---
+ src/login/logind-session-device.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c
+index 6605935..fd02b43 100644
+--- a/src/login/logind-session-device.c
++++ b/src/login/logind-session-device.c
+@@ -162,7 +162,7 @@ static int session_device_open(SessionDevice *sd, bool active) {
+                          * state. */
+                         r = sd_drmsetmaster(fd);
+                         if (r < 0) {
+-                                close(fd);
++                                close_nointr(fd);
+                                 return r;
+                         }
+                 } else {
+@@ -209,7 +209,7 @@ static int session_device_start(SessionDevice *sd) {
+                 r = session_device_open(sd, true);
+                 if (r < 0)
+                         return r;
+-                close_nointr_nofail(sd->fd);
++                close_nointr(sd->fd);
+                 sd->fd = r;
+                 break;
+         case DEVICE_TYPE_UNKNOWN:
+@@ -407,7 +407,7 @@ void session_device_free(SessionDevice *sd) {
+         session_device_stop(sd);
+         session_device_notify(sd, SESSION_DEVICE_RELEASE);
+-        close_nointr_nofail(sd->fd);
++        close_nointr(sd->fd);
+         LIST_REMOVE(SessionDevice, sd_by_device, sd->device->session_devices, sd);
diff --git a/debian/patches/logind-initialize-timer_fd.patch b/debian/patches/logind-initialize-timer_fd.patch
new file mode 100644 (file)
index 0000000..64d3ab8
--- /dev/null
@@ -0,0 +1,20 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Tue, 11 Mar 2014 13:26:38 +0100
+Subject: logind: initialize timer_fd
+
+---
+ src/login/logind-session.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 2a2a670..d7c3187 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -89,6 +89,7 @@ Session* session_new(Manager *m, const char *id) {
+         s->manager = m;
+         s->fifo_fd = -1;
++        s->timer_fd = -1;
+         return s;
+ }
diff --git a/debian/patches/logind-order-all-scopes-after-both-systemd-logind.se.patch b/debian/patches/logind-order-all-scopes-after-both-systemd-logind.se.patch
new file mode 100644 (file)
index 0000000..f5eee1c
--- /dev/null
@@ -0,0 +1,86 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 3 Mar 2014 16:07:39 +0100
+Subject: logind: order all scopes after both systemd-logind.service and
+ systemd-user-sessions.service
+
+This way at shutdown we can be sure that the sessions go away before the
+network.
+
+Based-on: ba4c5d93b73ef7bba0ae0c6bf2b36a42360f7a34
+---
+ src/login/logind-dbus.c    | 17 ++++++++++++++---
+ src/login/logind-session.c |  2 +-
+ src/login/logind.h         |  2 +-
+ 3 files changed, 16 insertions(+), 5 deletions(-)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index 63f0d3c..c1c3d7f 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -2544,10 +2544,11 @@ int manager_start_scope(
+                 const char *slice,
+                 const char *description,
+                 const char *after,
++                const char *after2,
+                 DBusError *error,
+                 char **job) {
+-        const char *timeout_stop_property = "TimeoutStopUSec", *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs";
++        const char *timeout_stop_property = "TimeoutStopUSec", *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs", *after_property = "After";
+         _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL;
+         DBusMessageIter iter, sub, sub2, sub3, sub4;
+         uint64_t timeout = 500 * USEC_PER_MSEC;
+@@ -2602,8 +2603,6 @@ int manager_start_scope(
+         }
+         if (!isempty(after)) {
+-                const char *after_property = "After";
+-
+                 if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
+                     !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &after_property) ||
+                     !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "as", &sub3) ||
+@@ -2615,6 +2614,18 @@ int manager_start_scope(
+                         return log_oom();
+         }
++        if (!isempty(after2)) {
++                if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
++                    !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &after_property) ||
++                    !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "as", &sub3) ||
++                    !dbus_message_iter_open_container(&sub3, DBUS_TYPE_ARRAY, "s", &sub4) ||
++                    !dbus_message_iter_append_basic(&sub4, DBUS_TYPE_STRING, &after2) ||
++                    !dbus_message_iter_close_container(&sub3, &sub4) ||
++                    !dbus_message_iter_close_container(&sub2, &sub3) ||
++                    !dbus_message_iter_close_container(&sub, &sub2))
++                        return log_oom();
++        }
++
+         /* cgroup empty notification is not available in containers
+          * currently. To make this less problematic, let's shorten the
+          * stop timeout for sessions, so that we don't wait
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 78e6d74..2bac0a2 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -518,7 +518,7 @@ static int session_start_scope(Session *s) {
+                 if (!scope)
+                         return log_oom();
+-                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", &error, &job);
++                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-session.service", &error, &job);
+                 if (r < 0) {
+                         log_error("Failed to start session scope %s: %s %s",
+                                   scope, bus_error(&error, r), error.name);
+diff --git a/src/login/logind.h b/src/login/logind.h
+index 0d2248f..540572f 100644
+--- a/src/login/logind.h
++++ b/src/login/logind.h
+@@ -184,7 +184,7 @@ int manager_send_changed(Manager *manager, const char *properties);
+ int manager_dispatch_delayed(Manager *manager);
+-int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, DBusError *error, char **job);
++int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, const char *after2, DBusError *error, char **job);
+ int manager_start_unit(Manager *manager, const char *unit, DBusError *error, char **job);
+ int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char **job);
+ int manager_abandon_scope(Manager *manager, const char *scope, DBusError *error);
diff --git a/debian/patches/logind-pass-pointer-to-User-object-to-user_save.patch b/debian/patches/logind-pass-pointer-to-User-object-to-user_save.patch
new file mode 100644 (file)
index 0000000..621051e
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Tue, 11 Mar 2014 20:42:42 +0100
+Subject: logind: pass pointer to User object to user_save()
+
+---
+ src/login/logind-session.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index d7c3187..b0e4bf6 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -686,7 +686,7 @@ int session_stop(Session *s) {
+         s->stopping = true;
+         session_save(s);
+-        user_save(s);
++        user_save(s->user);
+         return r;
+ }
diff --git a/debian/patches/logind-remove-dead-variable.patch b/debian/patches/logind-remove-dead-variable.patch
new file mode 100644 (file)
index 0000000..e9d0fbc
--- /dev/null
@@ -0,0 +1,37 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 19 Dec 2013 14:16:46 -0500
+Subject: logind: remove dead variable
+
+Noticed-by: Jan Alexander Steffens <jan.steffens@gmail.com>
+(cherry picked from commit eb53c37e2eb1ff9e2dbf370985dd53c62a98fa66)
+---
+ src/login/logind-user.c | 3 ---
+ src/login/logind-user.h | 1 -
+ 2 files changed, 4 deletions(-)
+
+diff --git a/src/login/logind-user.c b/src/login/logind-user.c
+index e2fce5c..b87311c 100644
+--- a/src/login/logind-user.c
++++ b/src/login/logind-user.c
+@@ -648,9 +648,6 @@ UserState user_get_state(User *u) {
+         assert(u);
+-        if (u->closing)
+-                return USER_CLOSING;
+-
+         if (u->slice_job || u->service_job)
+                 return USER_OPENING;
+diff --git a/src/login/logind-user.h b/src/login/logind-user.h
+index b9171d3..a36f456 100644
+--- a/src/login/logind-user.h
++++ b/src/login/logind-user.h
+@@ -61,7 +61,6 @@ struct User {
+         bool in_gc_queue:1;
+         bool started:1;
+-        bool closing:1;
+         LIST_HEAD(Session, sessions);
+         LIST_FIELDS(User, gc_queue);
diff --git a/debian/patches/logind-rework-session-shutdown-logic.patch b/debian/patches/logind-rework-session-shutdown-logic.patch
new file mode 100644 (file)
index 0000000..348e007
--- /dev/null
@@ -0,0 +1,596 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 3 Mar 2014 15:37:49 +0100
+Subject: logind: rework session shutdown logic
+
+Simplify the shutdown logic a bit:
+
+- Keep the session FIFO around in the PAM module, even after the session
+  shutdown hook has been finished. This allows logind to track precisely
+  when the PAM handler goes away.
+
+- In the ReleaseSession() call start a timer, that will stop terminate
+  the session when elapsed.
+
+- Never fiddle with the KillMode of scopes to configure whether user
+  processes should be killed or not. Instead, simply leave the scope
+  units around when we terminate a session whose processes should not be
+  killed.
+
+- When killing is enabled, stop the session scope on FIFO EOF or after
+  the ReleaseSession() timeout. When killing is disabled, simply tell
+  PID 1 to abandon the scope.
+
+Because the scopes stay around and hence all processes are always member
+of a scope, the system shutdown logic should be more robust, as the
+scopes can be shutdown as part of the usual shutdown logic.
+
+Based-on: 5f41d1f10fd97e93517b6a762b1bec247f4d1171
+---
+ src/login/logind-dbus.c    |  51 +++++++++++-------
+ src/login/logind-session.c | 130 +++++++++++++++++++++++++++++++++++----------
+ src/login/logind-session.h |   4 ++
+ src/login/logind-user.c    |  23 +++++---
+ src/login/logind-user.h    |   1 +
+ src/login/logind.c         |  23 ++++++--
+ src/login/logind.h         |   4 +-
+ src/login/pam-module.c     |  11 ++--
+ 8 files changed, 182 insertions(+), 65 deletions(-)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index 6f3e442..63f0d3c 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -1746,13 +1746,7 @@ static DBusHandlerResult manager_message_handler(
+                 if (!session)
+                         return bus_send_error_reply(connection, message, &error, -ENOENT);
+-                /* We use the FIFO to detect stray sessions where the
+-                process invoking PAM dies abnormally. We need to make
+-                sure that that process is not killed if at the clean
+-                end of the session it closes the FIFO. Hence, with
+-                this call explicitly turn off the FIFO logic, so that
+-                the PAM code can finish clean up on its own */
+-                session_remove_fifo(session);
++                session_release(session);
+                 reply = dbus_message_new_method_return(message);
+                 if (!reply)
+@@ -2550,7 +2544,6 @@ int manager_start_scope(
+                 const char *slice,
+                 const char *description,
+                 const char *after,
+-                const char *kill_mode,
+                 DBusError *error,
+                 char **job) {
+@@ -2622,18 +2615,6 @@ int manager_start_scope(
+                         return log_oom();
+         }
+-        if (!isempty(kill_mode)) {
+-                const char *kill_mode_property = "KillMode";
+-
+-                if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
+-                    !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &kill_mode_property) ||
+-                    !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "s", &sub3) ||
+-                    !dbus_message_iter_append_basic(&sub3, DBUS_TYPE_STRING, &kill_mode) ||
+-                    !dbus_message_iter_close_container(&sub2, &sub3) ||
+-                    !dbus_message_iter_close_container(&sub, &sub2))
+-                        return log_oom();
+-        }
+-
+         /* cgroup empty notification is not available in containers
+          * currently. To make this less problematic, let's shorten the
+          * stop timeout for sessions, so that we don't wait
+@@ -2792,6 +2773,36 @@ int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char
+         return 1;
+ }
++int manager_abandon_scope(Manager *manager, const char *scope, DBusError *error) {
++        _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
++        _cleanup_free_ char *path = NULL;
++        int r;
++
++        assert(manager);
++        assert(scope);
++
++        path = unit_dbus_path_from_name(scope);
++        if (!path)
++                return -ENOMEM;
++
++        r = bus_method_call_with_reply(
++                manager->bus,
++                "org.freedesktop.systemd1",
++                path,
++                "org.freedesktop.systemd1.Scope",
++                "Abandon",
++                &reply,
++                error,
++                DBUS_TYPE_INVALID);
++
++        if (r < 0) {
++                log_error("Failed to abandon scope %s", scope);
++                return r;
++        }
++
++        return 1;
++}
++
+ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo, DBusError *error) {
+         _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
+         const char *w;
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 27aa335..78e6d74 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -24,6 +24,7 @@
+ #include <unistd.h>
+ #include <sys/epoll.h>
+ #include <fcntl.h>
++#include <sys/timerfd.h>
+ #include <systemd/sd-id128.h>
+ #include <systemd/sd-messages.h>
+@@ -36,6 +37,8 @@
+ #include "dbus-common.h"
+ #include "logind-session.h"
++#define RELEASE_SEC 20
++
+ static unsigned devt_hash_func(const void *p) {
+         uint64_t u = *(const dev_t*)p;
+@@ -505,7 +508,6 @@ static int session_start_scope(Session *s) {
+         if (!s->scope) {
+                 _cleanup_free_ char *description = NULL;
+-                const char *kill_mode;
+                 char *scope, *job;
+                 description = strjoin("Session ", s->id, " of user ", s->user->name, NULL);
+@@ -516,9 +518,7 @@ static int session_start_scope(Session *s) {
+                 if (!scope)
+                         return log_oom();
+-                kill_mode = manager_shall_kill(s->manager, s->user->name) ? "control-group" : "none";
+-
+-                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-user-sessions.service", kill_mode, &error, &job);
++                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", &error, &job);
+                 if (r < 0) {
+                         log_error("Failed to start session scope %s: %s %s",
+                                   scope, bus_error(&error, r), error.name);
+@@ -579,23 +579,22 @@ int session_start(Session *s) {
+         s->started = true;
+-        /* Save session data */
++        /* Save data */
+         session_save(s);
+         user_save(s->user);
++        if (s->seat)
++                seat_save(s->seat);
++        /* Send signals */
+         session_send_signal(s, true);
+         if (s->seat) {
+-                seat_save(s->seat);
+-
+                 if (s->seat->active == s)
+                         seat_send_changed(s->seat, "Sessions\0ActiveSession\0");
+                 else
+                         seat_send_changed(s->seat, "Sessions\0");
+         }
+-        user_send_changed(s->user, "Sessions\0");
+-
+         return 0;
+ }
+@@ -611,15 +610,24 @@ static int session_stop_scope(Session *s) {
+         if (!s->scope)
+                 return 0;
+-        r = manager_stop_unit(s->manager, s->scope, &error, &job);
+-        if (r < 0) {
+-                log_error("Failed to stop session scope: %s", bus_error(&error, r));
+-                dbus_error_free(&error);
+-                return r;
+-        }
++        if (manager_shall_kill(s->manager, s->user->name)) {
++                r = manager_stop_unit(s->manager, s->scope, &error, &job);
++                if (r < 0) {
++                        log_error("Failed to stop session scope: %s", bus_error(&error, r));
++                        dbus_error_free(&error);
++                        return r;
++                }
+-        free(s->scope_job);
+-        s->scope_job = job;
++                free(s->scope_job);
++                s->scope_job = job;
++        } else {
++                r = manager_abandon_scope(s->manager, s->scope, &error);
++                if (r < 0) {
++                        log_error("Failed to abandon session scope: %s", bus_error(&error, r));
++                        dbus_error_free(&error);
++                        return r;
++                }
++        }
+         return 0;
+ }
+@@ -644,6 +652,19 @@ static int session_unlink_x11_socket(Session *s) {
+         return r < 0 ? -errno : 0;
+ }
++static void session_close_timer_fd(Session *s) {
++        assert(s);
++
++        if (s->timer_fd <= 0)
++                return;
++
++        hashmap_remove(s->manager->timer_fds, INT_TO_PTR(s->timer_fd + 1));
++        epoll_ctl(s->manager->epoll_fd, EPOLL_CTL_DEL, s->timer_fd, NULL);
++
++        close_nointr(s->timer_fd);
++        s->timer_fd = -1;
++}
++
+ int session_stop(Session *s) {
+         int r;
+@@ -652,11 +673,18 @@ int session_stop(Session *s) {
+         if (!s->user)
+                 return -ESTALE;
++        session_close_timer_fd(s);
++
++        /* We are going down, don't care about FIFOs anymore */
++        session_remove_fifo(s);
++
+         /* Kill cgroup */
+         r = session_stop_scope(s);
+         session_save(s);
++        s->stopping = true;
++
+         return r;
+ }
+@@ -678,6 +706,8 @@ int session_finalize(Session *s) {
+                            "MESSAGE=Removed session %s.", s->id,
+                            NULL);
++        session_close_timer_fd(s);
++
+         /* Kill session devices */
+         while ((sd = hashmap_first(s->devices)))
+                 session_device_free(sd);
+@@ -698,16 +728,64 @@ int session_finalize(Session *s) {
+                 if (s->seat->active == s)
+                         seat_set_active(s->seat, NULL);
+-                seat_send_changed(s->seat, "Sessions\0");
+                 seat_save(s->seat);
++                seat_send_changed(s->seat, "Sessions\0");
+         }
+-        user_send_changed(s->user, "Sessions\0");
+         user_save(s->user);
++        user_send_changed(s->user, "Sessions\0");
+         return r;
+ }
++void session_release(Session *s) {
++        int r;
++
++        struct itimerspec its = { .it_value.tv_sec = RELEASE_SEC };
++        struct epoll_event ev = {};
++
++        assert(s);
++
++        if (!s->started || s->stopping)
++                return;
++
++        if (s->timer_fd >= 0)
++                return;
++
++        s->timer_fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC);
++        if (s->timer_fd < 0) {
++                log_error("Failed to create session release timer fd");
++                goto out;
++        }
++
++        r = hashmap_put(s->manager->timer_fds, INT_TO_PTR(s->timer_fd + 1), s);
++        if (r < 0) {
++                log_error("Failed to store session release timer fd");
++                goto out;
++        }
++
++        ev.events = EPOLLONESHOT;
++        ev.data.u32 = FD_OTHER_BASE + s->timer_fd;
++
++        r = epoll_ctl(s->manager->epoll_fd, EPOLL_CTL_ADD, s->timer_fd, &ev);
++        if (r < 0) {
++                log_error("Failed to add session release timer fd to epoll instance");
++                goto out;
++        }
++
++        r = timerfd_settime(s->timer_fd, TFD_TIMER_ABSTIME, &its, NULL);
++        if (r < 0) {
++                log_error("Failed to arm timer : %m");
++                goto out;
++        }
++
++out:
++        if (s->timer_fd >= 0) {
++                close_nointr(s->timer_fd);
++                s->timer_fd = -1;
++        }
++}
++
+ bool session_is_active(Session *s) {
+         assert(s);
+@@ -904,8 +982,6 @@ void session_remove_fifo(Session *s) {
+ }
+ int session_check_gc(Session *s, bool drop_not_started) {
+-        int r;
+-
+         assert(s);
+         if (drop_not_started && !s->started)
+@@ -915,11 +991,7 @@ int session_check_gc(Session *s, bool drop_not_started) {
+                 return 0;
+         if (s->fifo_fd >= 0) {
+-                r = pipe_eof(s->fifo_fd);
+-                if (r < 0)
+-                        return r;
+-
+-                if (r == 0)
++                if (pipe_eof(s->fifo_fd) <= 0)
+                         return 1;
+         }
+@@ -945,15 +1017,15 @@ void session_add_to_gc_queue(Session *s) {
+ SessionState session_get_state(Session *s) {
+         assert(s);
++        if (s->stopping || s->timer_fd >= 0)
++                return SESSION_CLOSING;
++
+         if (s->closing)
+                 return SESSION_CLOSING;
+         if (s->scope_job)
+                 return SESSION_OPENING;
+-        if (s->fifo_fd < 0)
+-                return SESSION_CLOSING;
+-
+         if (session_is_active(s))
+                 return SESSION_ACTIVE;
+diff --git a/src/login/logind-session.h b/src/login/logind-session.h
+index f175a89..9b76582 100644
+--- a/src/login/logind-session.h
++++ b/src/login/logind-session.h
+@@ -98,11 +98,14 @@ struct Session {
+         int fifo_fd;
+         char *fifo_path;
++        int timer_fd;
++
+         bool idle_hint;
+         dual_timestamp idle_hint_timestamp;
+         bool in_gc_queue:1;
+         bool started:1;
++        bool stopping:1;
+         bool closing:1;
+         DBusMessage *create_message;
+@@ -130,6 +133,7 @@ void session_remove_fifo(Session *s);
+ int session_start(Session *s);
+ int session_stop(Session *s);
+ int session_finalize(Session *s);
++void session_release(Session *s);
+ int session_save(Session *s);
+ int session_load(Session *s);
+ int session_kill(Session *s, KillWho who, int signo);
+diff --git a/src/login/logind-user.c b/src/login/logind-user.c
+index ddf19eb..3aeac13 100644
+--- a/src/login/logind-user.c
++++ b/src/login/logind-user.c
+@@ -529,6 +529,8 @@ int user_stop(User *u) {
+         if (k < 0)
+                 r = k;
++        u->stopping = true;
++
+         user_save(u);
+         return r;
+@@ -650,22 +652,27 @@ void user_add_to_gc_queue(User *u) {
+ UserState user_get_state(User *u) {
+         Session *i;
+-        bool all_closing = true;
+         assert(u);
++        if (u->stopping)
++                return USER_CLOSING;
++
+         if (u->slice_job || u->service_job)
+                 return USER_OPENING;
+-        LIST_FOREACH(sessions_by_user, i, u->sessions) {
+-                if (session_is_active(i))
+-                        return USER_ACTIVE;
+-                if (session_get_state(i) != SESSION_CLOSING)
+-                        all_closing = false;
+-        }
++        if (u->sessions) {
++                bool all_closing = true;
++
++                LIST_FOREACH(sessions_by_user, i, u->sessions) {
++                        if (session_is_active(i))
++                                return USER_ACTIVE;
++                        if (session_get_state(i) != SESSION_CLOSING)
++                                all_closing = false;
++                }
+-        if (u->sessions)
+                 return all_closing ? USER_CLOSING : USER_ONLINE;
++        }
+         if (user_check_linger_file(u) > 0)
+                 return USER_LINGERING;
+diff --git a/src/login/logind-user.h b/src/login/logind-user.h
+index a36f456..a12532e 100644
+--- a/src/login/logind-user.h
++++ b/src/login/logind-user.h
+@@ -61,6 +61,7 @@ struct User {
+         bool in_gc_queue:1;
+         bool started:1;
++        bool stopping:1;
+         LIST_HEAD(Session, sessions);
+         LIST_FIELDS(User, gc_queue);
+diff --git a/src/login/logind.c b/src/login/logind.c
+index 0628032..5180be7 100644
+--- a/src/login/logind.c
++++ b/src/login/logind.c
+@@ -80,10 +80,11 @@ Manager *manager_new(void) {
+         m->session_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
+         m->inhibitor_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
+         m->button_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
++        m->timer_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
+         if (!m->devices || !m->seats || !m->sessions || !m->users || !m->inhibitors || !m->buttons || !m->busnames ||
+             !m->user_units || !m->session_units ||
+-            !m->session_fds || !m->inhibitor_fds || !m->button_fds) {
++            !m->session_fds || !m->inhibitor_fds || !m->button_fds || !m->timer_fds) {
+                 manager_free(m);
+                 return NULL;
+         }
+@@ -149,6 +150,7 @@ void manager_free(Manager *m) {
+         hashmap_free(m->session_fds);
+         hashmap_free(m->inhibitor_fds);
+         hashmap_free(m->button_fds);
++        hashmap_free(m->timer_fds);
+         if (m->console_active_fd >= 0)
+                 close_nointr_nofail(m->console_active_fd);
+@@ -620,6 +622,13 @@ static void manager_dispatch_other(Manager *m, int fd) {
+                 return;
+         }
++        s = hashmap_get(m->timer_fds, INT_TO_PTR(fd + 1));
++        if (s) {
++                assert(s->timer_fd == fd);
++                session_stop(s);
++                return;
++        }
++
+         i = hashmap_get(m->inhibitor_fds, INT_TO_PTR(fd + 1));
+         if (i) {
+                 assert(i->fifo_fd == fd);
+@@ -942,8 +951,12 @@ void manager_gc(Manager *m, bool drop_not_started) {
+                 LIST_REMOVE(Session, gc_queue, m->session_gc_queue, session);
+                 session->in_gc_queue = false;
+-                if (session_check_gc(session, drop_not_started) == 0) {
++                /* First, if we are not closing yet, initiate stopping */
++                if (!session_check_gc(session, drop_not_started) &&
++                    session_get_state(session) != SESSION_CLOSING)
+                         session_stop(session);
++
++                if (!session_check_gc(session, drop_not_started)) {
+                         session_finalize(session);
+                         session_free(session);
+                 }
+@@ -953,8 +966,11 @@ void manager_gc(Manager *m, bool drop_not_started) {
+                 LIST_REMOVE(User, gc_queue, m->user_gc_queue, user);
+                 user->in_gc_queue = false;
+-                if (user_check_gc(user, drop_not_started) == 0) {
++                if (!user_check_gc(user, drop_not_started) &&
++                    user_get_state(user) != USER_CLOSING)
+                         user_stop(user);
++
++                if (!user_check_gc(user, drop_not_started)) {
+                         user_finalize(user);
+                         user_free(user);
+                 }
+@@ -1032,6 +1048,7 @@ finish:
+         return r;
+ }
++
+ int manager_startup(Manager *m) {
+         int r;
+         Seat *seat;
+diff --git a/src/login/logind.h b/src/login/logind.h
+index 9e6296c..0d2248f 100644
+--- a/src/login/logind.h
++++ b/src/login/logind.h
+@@ -88,6 +88,7 @@ struct Manager {
+         Hashmap *session_fds;
+         Hashmap *inhibitor_fds;
+         Hashmap *button_fds;
++        Hashmap *timer_fds;
+         usec_t inhibit_delay_max;
+@@ -183,9 +184,10 @@ int manager_send_changed(Manager *manager, const char *properties);
+ int manager_dispatch_delayed(Manager *manager);
+-int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, const char *kill_mode, DBusError *error, char **job);
++int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, DBusError *error, char **job);
+ int manager_start_unit(Manager *manager, const char *unit, DBusError *error, char **job);
+ int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char **job);
++int manager_abandon_scope(Manager *manager, const char *scope, DBusError *error);
+ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo, DBusError *error);
+ int manager_unit_is_active(Manager *manager, const char *unit);
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index 5baf1b7..6259450 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -489,7 +489,7 @@ _public_ PAM_EXTERN int pam_sm_close_session(
+                 int flags,
+                 int argc, const char **argv) {
+-        const void *p = NULL, *existing = NULL;
++        const void *existing = NULL;
+         const char *id;
+         DBusConnection *bus = NULL;
+         DBusMessage *m = NULL, *reply = NULL;
+@@ -546,12 +546,15 @@ _public_ PAM_EXTERN int pam_sm_close_session(
+                 }
+         }
++
++        /* Note that we are knowingly leaking the FIFO fd here. This
++         * way, logind can watch us die. If we closed it here it would
++         * not have any clue when that is completed. Given that one
++         * cannot really have multiple PAM sessions open from the same
++         * process this means we will leak one FD at max. */
+         r = PAM_SUCCESS;
+ finish:
+-        pam_get_data(handle, "systemd.session-fd", &p);
+-        if (p)
+-                close_nointr(PTR_TO_INT(p) - 1);
+         dbus_error_free(&error);
diff --git a/debian/patches/logind-save-session-after-setting-the-stopping-flag.patch b/debian/patches/logind-save-session-after-setting-the-stopping-flag.patch
new file mode 100644 (file)
index 0000000..6f77fbd
--- /dev/null
@@ -0,0 +1,24 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 10 Mar 2014 18:22:55 +0100
+Subject: logind: save session after setting the stopping flag
+
+---
+ src/login/logind-session.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index e519d35..3ab41e6 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -682,10 +682,9 @@ int session_stop(Session *s) {
+         /* Kill cgroup */
+         r = session_stop_scope(s);
+-        session_save(s);
+-
+         s->stopping = true;
++        session_save(s);
+         return r;
+ }
diff --git a/debian/patches/logind-save-user-state-after-stopping-the-session.patch b/debian/patches/logind-save-user-state-after-stopping-the-session.patch
new file mode 100644 (file)
index 0000000..8bf8b53
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 10 Mar 2014 18:26:34 +0100
+Subject: logind: save user state after stopping the session
+
+---
+ src/login/logind-session.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index 3ab41e6..2a2a670 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -685,6 +685,8 @@ int session_stop(Session *s) {
+         s->stopping = true;
+         session_save(s);
++        user_save(s);
++
+         return r;
+ }
diff --git a/debian/patches/logind-uninitialized-timer_fd-is-set-to-1.patch b/debian/patches/logind-uninitialized-timer_fd-is-set-to-1.patch
new file mode 100644 (file)
index 0000000..caa4b9f
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Thu, 13 Mar 2014 11:16:36 +0100
+Subject: logind: uninitialized timer_fd is set to -1
+
+---
+ src/login/logind-session.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index b0e4bf6..730f11d 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -657,7 +657,7 @@ static int session_unlink_x11_socket(Session *s) {
+ static void session_close_timer_fd(Session *s) {
+         assert(s);
+-        if (s->timer_fd <= 0)
++        if (s->timer_fd < 0)
+                 return;
+         hashmap_remove(s->manager->timer_fds, INT_TO_PTR(s->timer_fd + 1));
diff --git a/debian/patches/logind-use-correct-who-enum-values-with-KillUnit.patch b/debian/patches/logind-use-correct-who-enum-values-with-KillUnit.patch
new file mode 100644 (file)
index 0000000..4807e94
--- /dev/null
@@ -0,0 +1,31 @@
+From: Marius Vollmer <mvollmer@redhat.com>
+Date: Thu, 31 Oct 2013 15:55:07 +0200
+Subject: logind: use correct "who" enum values with KillUnit.
+
+NB This is already fixed differently in systemd 209 with the port to kdbus
+---
+ src/login/logind-dbus.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index bb85c7d..583d62e 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -2799,7 +2799,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo
+         assert(manager);
+         assert(unit);
+-        w = who == KILL_LEADER ? "process" : "cgroup";
++        w = who == KILL_LEADER ? "control" : "all";
+         assert_cc(sizeof(signo) == sizeof(int32_t));
+         r = bus_method_call_with_reply(
+@@ -2815,7 +2815,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo
+                         DBUS_TYPE_INT32, &signo,
+                         DBUS_TYPE_INVALID);
+         if (r < 0) {
+-                log_error("Failed to stop unit %s: %s", unit, bus_error(error, r));
++                log_error("Failed to kill unit %s: %s", unit, bus_error(error, r));
+                 return r;
+         }
diff --git a/debian/patches/logs-show-fix-corrupt-output-with-empty-messages.patch b/debian/patches/logs-show-fix-corrupt-output-with-empty-messages.patch
new file mode 100644 (file)
index 0000000..53785bc
--- /dev/null
@@ -0,0 +1,39 @@
+From: Uoti Urpala <uoti.urpala@pp1.inet.fi>
+Date: Thu, 20 Feb 2014 03:00:09 +0200
+Subject: logs-show: fix corrupt output with empty messages
+
+If a message had zero length, journalctl would print no newline, and
+two output lines would be concatenated. Fix. The problem was
+introduced in commit 31f7bf199452 ("logs-show: print multiline
+messages"). Affected short and verbose output modes.
+
+Before fix:
+
+Feb 09 21:16:17 glyph dhclient[1323]: Feb 09 21:16:17 glyph NetworkManager[788]: <info> (enp4s2): DHCPv4 state changed nbi -> preinit
+
+after:
+
+Feb 09 21:16:17 glyph dhclient[1323]:
+Feb 09 21:16:17 glyph NetworkManager[788]: <info> (enp4s2): DHCPv4 state changed nbi -> preinit
+
+(cherry picked from commit 47d80904a1f72d559962cc5ad32fffd46672a34a)
+---
+ src/shared/logs-show.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
+index 7bb19b4..91eefb3 100644
+--- a/src/shared/logs-show.c
++++ b/src/shared/logs-show.c
+@@ -121,6 +121,11 @@ static bool print_multiline(FILE *f, unsigned prefix, unsigned n_columns, Output
+                 }
+         }
++        /* A special case: make sure that we print a newline when
++           the message is empty. */
++        if (message_len == 0)
++                fputs("\n", f);
++
+         for (pos = message;
+              pos < message + message_len;
+              pos = end + 1, line++) {
diff --git a/debian/patches/machine-escape-fields-we-store-in-run-so-that-they-c.patch b/debian/patches/machine-escape-fields-we-store-in-run-so-that-they-c.patch
new file mode 100644 (file)
index 0000000..5e0abd6
--- /dev/null
@@ -0,0 +1,67 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 10:26:23 +0900
+Subject: machine: escape fields we store in /run,
+ so that they can be properly unescaped by parse_env_file()
+
+(cherry picked from commit ca5405bb4fb1fabd1fe43e4ee23edf58914bdfae)
+(cherry picked from commit 0be4e0b695a297e4ad0a57860798a58053a2f916)
+
+Conflicts:
+       src/machine/machine.c
+---
+ src/machine/machine.c | 37 +++++++++++++++++++++++++++++++------
+ 1 file changed, 31 insertions(+), 6 deletions(-)
+
+diff --git a/src/machine/machine.c b/src/machine/machine.c
+index 602aa18..3df9c45 100644
+--- a/src/machine/machine.c
++++ b/src/machine/machine.c
+@@ -120,17 +120,42 @@ int machine_save(Machine *m) {
+                 "NAME=%s\n",
+                 m->name);
+-        if (m->scope)
+-                fprintf(f, "SCOPE=%s\n", m->scope);
++        if (m->scope) {
++                _cleanup_free_ char *escaped;
++
++                escaped = cescape(m->scope);
++                if (!escaped) {
++                        r = -ENOMEM;
++                        goto finish;
++                }
++
++                fprintf(f, "SCOPE=%s\n", escaped);
++        }
+         if (m->scope_job)
+                 fprintf(f, "SCOPE_JOB=%s\n", m->scope_job);
+-        if (m->service)
+-                fprintf(f, "SERVICE=%s\n", m->service);
++        if (m->service) {
++                _cleanup_free_ char *escaped;
+-        if (m->root_directory)
+-                fprintf(f, "ROOT=%s\n", m->root_directory);
++                escaped = cescape(m->service);
++                if (!escaped) {
++                        r = -ENOMEM;
++                        goto finish;
++                }
++                fprintf(f, "SERVICE=%s\n", escaped);
++        }
++
++        if (m->root_directory) {
++                _cleanup_free_ char *escaped;
++
++                escaped = cescape(m->root_directory);
++                if (!escaped) {
++                        r = -ENOMEM;
++                        goto finish;
++                }
++                fprintf(f, "ROOT=%s\n", escaped);
++        }
+         if (!sd_id128_equal(m->id, SD_ID128_NULL))
+                 fprintf(f, "ID=" SD_ID128_FORMAT_STR "\n", SD_ID128_FORMAT_VAL(m->id));
diff --git a/debian/patches/machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch b/debian/patches/machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch
new file mode 100644 (file)
index 0000000..6772c84
--- /dev/null
@@ -0,0 +1,80 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 28 Apr 2014 18:11:40 +0200
+Subject: machine-id: only look into KVM uuid when we are not running in a
+ container
+
+(cherry picked from commit 0b36bbc42d3a408531517a02acaf56105b863d55)
+
+Conflicts:
+       src/core/machine-id-setup.c
+
+(cherry picked from commit 0ade4b119d9d00252ce51f85b9b9019d0717c183)
+---
+ src/core/machine-id-setup.c | 47 +++++++++++++++++++++++----------------------
+ 1 file changed, 24 insertions(+), 23 deletions(-)
+
+diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
+index 18e015f..dcd1630 100644
+--- a/src/core/machine-id-setup.c
++++ b/src/core/machine-id-setup.c
+@@ -88,29 +88,6 @@ static int generate(char id[34]) {
+                 }
+         }
+-        /* If that didn't work, see if we are running in qemu/kvm and a
+-         * machine ID was passed in via -uuid on the qemu/kvm command
+-         * line */
+-
+-        r = detect_vm(&vm_id);
+-        if (r > 0 && streq(vm_id, "kvm")) {
+-                char uuid[37];
+-
+-                fd = open("/sys/class/dmi/id/product_uuid", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
+-                if (fd >= 0) {
+-                        k = loop_read(fd, uuid, 36, false);
+-                        close_nointr_nofail(fd);
+-
+-                        if (k >= 36) {
+-                                r = shorten_uuid(id, uuid);
+-                                if (r >= 0) {
+-                                        log_info("Initializing machine ID from KVM UUID.");
+-                                        return 0;
+-                                }
+-                        }
+-                }
+-        }
+-
+         /* If that didn't work either, see if we are running in a
+          * container, and a machine ID was passed in via
+          * $container_uuid the way libvirt/LXC does it */
+@@ -128,6 +105,30 @@ static int generate(char id[34]) {
+                                 }
+                         }
+                 }
++
++        } else {
++                /* If we are not running in a container, see if we are
++                 * running in qemu/kvm and a machine ID was passed in
++                 * via -uuid on the qemu/kvm command line */
++
++                r = detect_vm(&vm_id);
++                if (r > 0 && streq(vm_id, "kvm")) {
++                        char uuid[37];
++
++                        fd = open("/sys/class/dmi/id/product_uuid", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
++                        if (fd >= 0) {
++                                k = loop_read(fd, uuid, 36, false);
++                                close_nointr_nofail(fd);
++
++                                if (k >= 36) {
++                                        r = shorten_uuid(id, uuid);
++                                        if (r >= 0) {
++                                                log_info("Initializing machine ID from KVM UUID.");
++                                                return 0;
++                                        }
++                                }
++                        }
++                }
+         }
+         /* If that didn't work, generate a random machine id */
diff --git a/debian/patches/machinectl-add-bash-completion.patch b/debian/patches/machinectl-add-bash-completion.patch
new file mode 100644 (file)
index 0000000..9f020ee
--- /dev/null
@@ -0,0 +1,243 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 18 Feb 2014 21:09:05 +0100
+Subject: machinectl: add bash completion
+
+(cherry picked from commit e56056e93d33619a3acf13e483900b4f8938228f)
+
+Default to --no-legend if !on_tty().
+
+Conflicts:
+       man/machinectl.xml
+       src/machine/machinectl.c
+---
+ Makefile.am                      |  3 ++
+ man/machinectl.xml               |  8 ++++
+ shell-completion/bash/machinectl | 97 ++++++++++++++++++++++++++++++++++++++++
+ src/machine/machinectl.c         | 24 +++++++---
+ 4 files changed, 126 insertions(+), 6 deletions(-)
+ create mode 100644 shell-completion/bash/machinectl
+
+diff --git a/Makefile.am b/Makefile.am
+index 6233a7f..033bbfa 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3726,6 +3726,9 @@ machinectl_LDADD = \
+ rootbin_PROGRAMS += \
+       machinectl
++dist_bashcompletion_DATA += \
++      shell-completion/bash/machinectl
++
+ test_machine_tables_SOURCES = \
+       src/machine/test-machine-tables.c
+diff --git a/man/machinectl.xml b/man/machinectl.xml
+index bb88395..f00d212 100644
+--- a/man/machinectl.xml
++++ b/man/machinectl.xml
+@@ -130,6 +130,14 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><option>--no-legend</option></term>
++
++                                <listitem><para>Do not print the legend,
++                                        i.e. the column headers and the
++                                        footer.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
+                                 <term><option>--no-ask-password</option></term>
+                                 <listitem><para>Do not query the user
+diff --git a/shell-completion/bash/machinectl b/shell-completion/bash/machinectl
+new file mode 100644
+index 0000000..3789492
+--- /dev/null
++++ b/shell-completion/bash/machinectl
+@@ -0,0 +1,97 @@
++# machinectl(1) completion                      -*- shell-script -*-
++#
++# This file is part of systemd.
++#
++# Copyright 2014 Thomas H.P. Andersen
++#
++# systemd is free software; you can redistribute it and/or modify it
++# under the terms of the GNU Lesser General Public License as published by
++# the Free Software Foundation; either version 2.1 of the License, or
++# (at your option) any later version.
++#
++# systemd is distributed in the hope that it will be useful, but
++# WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++# General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public License
++# along with systemd; If not, see <http://www.gnu.org/licenses/>.
++
++__contains_word() {
++        local w word=$1; shift
++        for w in "$@"; do
++                [[ $w = "$word" ]] && return
++        done
++}
++
++__get_machines() {
++        local a b
++        machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; };
++}
++
++_machinectl() {
++        local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
++        local i verb comps
++
++        local -A OPTS=(
++               [STANDALONE]='--all -a --full --help -h --no-ask-password --no-legend --no-pager --version'
++                      [ARG]='--host -H --kill-who -M --machine --property -p --signal -s'
++        )
++
++        local -A VERBS=(
++               [STANDALONE]='list'
++                 [MACHINES]='status show terminate kill reboot login'
++        )
++
++        _init_completion || return
++
++        for ((i=0; i <= COMP_CWORD; i++)); do
++                if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} &&
++                 ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then
++                        verb=${COMP_WORDS[i]}
++                        break
++                fi
++        done
++
++        if __contains_word "$prev" ${OPTS[ARG]}; then
++                case $prev in
++                        --signal|-s)
++                                comps=$(compgen -A signal)
++                        ;;
++                        --kill-who)
++                                comps='all leader'
++                        ;;
++                        --host|-H)
++                                comps=$(compgen -A hostname)
++                        ;;
++                        --machine|-M)
++                                comps=$( __get_machines )
++                        ;;
++                        --property|-p)
++                                comps=''
++                        ;;
++                esac
++                COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++                return 0
++        fi
++
++        if [[ "$cur" = -* ]]; then
++                COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") )
++                return 0
++        fi
++
++        if [[ -z $verb ]]; then
++                comps=${VERBS[*]}
++
++        elif __contains_word "$verb" ${VERBS[STANDALONE]}; then
++                comps=''
++
++        elif __contains_word "$verb" ${VERBS[MACHINES]}; then
++                comps=$( __get_machines )
++        fi
++
++        COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
++        return 0
++}
++
++complete -F _machinectl machinectl
+diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
+index 97c2193..88cf8d5 100644
+--- a/src/machine/machinectl.c
++++ b/src/machine/machinectl.c
+@@ -43,6 +43,7 @@ static char **arg_property = NULL;
+ static bool arg_all = false;
+ static bool arg_full = false;
+ static bool arg_no_pager = false;
++static bool arg_legend = true;
+ static const char *arg_kill_who = NULL;
+ static int arg_signal = SIGTERM;
+ static enum transport {
+@@ -90,11 +91,11 @@ static int list_machines(DBusConnection *bus, char **args, unsigned n) {
+                 return -EIO;
+         }
+-        dbus_message_iter_recurse(&iter, &sub);
+-
+-        if (on_tty())
++        if (arg_legend)
+                 printf("%-32s %-9s %-16s\n", "MACHINE", "CONTAINER", "SERVICE");
++        dbus_message_iter_recurse(&iter, &sub);
++
+         while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) {
+                 const char *name, *class, *service, *object;
+@@ -120,7 +121,7 @@ static int list_machines(DBusConnection *bus, char **args, unsigned n) {
+                 dbus_message_iter_next(&sub);
+         }
+-        if (on_tty())
++        if (arg_legend)
+                 printf("\n%u machines listed.\n", k);
+         return 0;
+@@ -559,10 +560,12 @@ static int help(void) {
+                "     --kill-who=WHO      Who to send signal to\n"
+                "  -l --full              Do not ellipsize output\n"
+                "  -s --signal=SIGNAL     Which signal to send\n"
+-               "     --no-ask-password   Don't prompt for password\n"
+                "  -H --host=[USER@]HOST  Show information for remote host\n"
+                "  -P --privileged        Acquire privileges before execution\n"
+-               "     --no-pager          Do not pipe output into a pager\n\n"
++               "     --no-pager          Do not pipe output into a pager\n"
++               "     --no-legend         Do not show the headers and footers\n"
++               "     --no-ask-password   Don't prompt for password\n\n"
++
+                "Commands:\n"
+                "  list                   List running VMs and containers\n"
+                "  status [NAME...]       Show VM/container status\n"
+@@ -579,6 +582,7 @@ static int parse_argv(int argc, char *argv[]) {
+         enum {
+                 ARG_VERSION = 0x100,
+                 ARG_NO_PAGER,
++                ARG_NO_LEGEND,
+                 ARG_KILL_WHO,
+                 ARG_NO_ASK_PASSWORD,
+         };
+@@ -590,6 +594,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "all",             no_argument,       NULL, 'a'                 },
+                 { "full",            no_argument,       NULL, 'l'                 },
+                 { "no-pager",        no_argument,       NULL, ARG_NO_PAGER        },
++                { "no-legend",       no_argument,       NULL, ARG_NO_LEGEND       },
+                 { "kill-who",        required_argument, NULL, ARG_KILL_WHO        },
+                 { "signal",          required_argument, NULL, 's'                 },
+                 { "host",            required_argument, NULL, 'H'                 },
+@@ -645,6 +650,10 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_no_pager = true;
+                         break;
++                case ARG_NO_LEGEND:
++                        arg_legend = false;
++                        break;
++
+                 case ARG_NO_ASK_PASSWORD:
+                         arg_ask_password = false;
+                         break;
+@@ -679,6 +688,9 @@ static int parse_argv(int argc, char *argv[]) {
+                 }
+         }
++        if (!on_tty())
++                arg_legend = false;
++
+         return 1;
+ }
diff --git a/debian/patches/macro-add-a-macro-to-test-whether-a-value-is-in-a-sp.patch b/debian/patches/macro-add-a-macro-to-test-whether-a-value-is-in-a-sp.patch
new file mode 100644 (file)
index 0000000..d4bbb11
--- /dev/null
@@ -0,0 +1,74 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 2 Dec 2013 23:08:25 +0100
+Subject: macro: add a macro to test whether a value is in a specified list
+
+Introduce IN_SET() macro to nicely check whether a value a is one of a
+few listed values.
+
+This makes writing this:
+
+        if (a == 1 || a == 7 || a == 8 || a == 9)
+
+nicer, by allowing this:
+
+        if (IN_SET(a, 1, 7, 8, 9))
+
+This is particularly useful for state machine enums.
+
+(cherry picked from commit cabb78068899232c152f4585f19d023e373aa73d)
+---
+ src/shared/macro.h   | 13 +++++++++++++
+ src/test/test-util.c | 11 +++++++++++
+ 2 files changed, 24 insertions(+)
+
+diff --git a/src/shared/macro.h b/src/shared/macro.h
+index bc5b3c1..5f3e522 100644
+--- a/src/shared/macro.h
++++ b/src/shared/macro.h
+@@ -294,4 +294,17 @@ do {                                                                    \
+ #define SET_FLAG(v, flag, b) \
+         (v) = (b) ? ((v) | (flag)) : ((v) & ~(flag))
++#define IN_SET(x, ...) ({                                               \
++        typeof(x) _x = (x);                                             \
++        unsigned _i;                                                    \
++        bool _found = false;                                            \
++        for (_i = 0; _i < sizeof((typeof(_x)[]) { __VA_ARGS__ })/sizeof(typeof(_x)); _i++) \
++                if (((typeof(_x)[]) { __VA_ARGS__ })[_i] == _x) {       \
++                        _found = true;                                  \
++                        break;                                          \
++                }                                                       \
++        _found;                                                         \
++        })
++
++
+ #include "log.h"
+diff --git a/src/test/test-util.c b/src/test/test-util.c
+index c5762ed..7566adc 100644
+--- a/src/test/test-util.c
++++ b/src/test/test-util.c
+@@ -591,6 +591,16 @@ static void test_get_files_in_directory(void) {
+         assert_se(get_files_in_directory(".", NULL) >= 0);
+ }
++static void test_in_set(void) {
++        assert_se(IN_SET(1, 1));
++        assert_se(IN_SET(1, 1, 2, 3, 4));
++        assert_se(IN_SET(2, 1, 2, 3, 4));
++        assert_se(IN_SET(3, 1, 2, 3, 4));
++        assert_se(IN_SET(4, 1, 2, 3, 4));
++        assert_se(!IN_SET(0, 1));
++        assert_se(!IN_SET(0, 1, 2, 3, 4));
++}
++
+ int main(int argc, char *argv[]) {
+         test_streq_ptr();
+         test_first_word();
+@@ -628,6 +638,7 @@ int main(int argc, char *argv[]) {
+         test_split_pair();
+         test_fstab_node_to_udev_node();
+         test_get_files_in_directory();
++        test_in_set();
+         return 0;
+ }
diff --git a/debian/patches/man-Improve-the-description-of-parameter-X-in-tmpfil.patch b/debian/patches/man-Improve-the-description-of-parameter-X-in-tmpfil.patch
new file mode 100644 (file)
index 0000000..4e613a1
--- /dev/null
@@ -0,0 +1,40 @@
+From: =?utf-8?q?V=C3=A1clav_Pavl=C3=ADn?= <vpavlin@redhat.com>
+Date: Thu, 3 Oct 2013 15:47:26 +0200
+Subject: man: Improve the description of parameter X in tmpfiles.d page
+
+---
+ man/tmpfiles.d.xml | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index 9fc4b7c..e8b630d 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -184,15 +184,18 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                                 <varlistentry>
+                                         <term><varname>X</varname></term>
+                                         <listitem><para>Ignore a path
+-                                        during cleanup. Use this type
+-                                        to prevent path removal as
+-                                        controlled with the Age parameter.
+-                                        Note that if path is a directory,
+-                                        content of a directory is not
+-                                        excluded from clean-up, only
+-                                        directory itself. Lines of this
+-                                        type accept shell-style globs
+-                                        in place of normal path
++                                        during cleaning. Use this type
++                                        to exclude paths from clean-up
++                                        as controlled with the Age
++                                        parameter. Unlike x this
++                                        parameter will not exclude the
++                                        content if path is a directory,
++                                        but only directory itself.
++                                        Note that lines of this type do
++                                        not influence the effect of r
++                                        or R lines. Lines of this type
++                                        accept shell-style globs in
++                                        place of normal path
+                                         names.</para></listitem>
+                                 </varlistentry>
diff --git a/debian/patches/man-Searching-for-an-explanation-of-what-a-slice-uni.patch b/debian/patches/man-Searching-for-an-explanation-of-what-a-slice-uni.patch
new file mode 100644 (file)
index 0000000..8782d04
--- /dev/null
@@ -0,0 +1,33 @@
+From: Mark Eichin <eichin@thok.org>
+Date: Mon, 9 Jun 2014 01:57:19 -0400
+Subject: man: Searching for an explanation of what a "slice unit" was,
+ found this, felt compelled to send in fixes for the obvious typos
+
+(cherry picked from commit 299a55075d1bf478b9190191caefd5c1b934340d)
+(cherry picked from commit e3d71d5dc2872bef8dbd20b29be5f6ba444a171f)
+---
+ man/systemd.slice.xml | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/man/systemd.slice.xml b/man/systemd.slice.xml
+index 4d27ddf..f82e6c3 100644
+--- a/man/systemd.slice.xml
++++ b/man/systemd.slice.xml
+@@ -56,13 +56,13 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     <para>A unit configuration file whose name ends in
+     <literal>.slice</literal> encodes information about a slice which
+-    is a concept for hierarchially managing resources of a group of
++    is a concept for hierarchically managing resources of a group of
+     processes. This management is performed by creating a node in the
+     Linux Control Group (cgroup) tree. Units that manage processes
+-    (primarilly scope and service units) may be assigned to a specific
+-    slice. For each slice, certain resource limits may the be set that
++    (primarily scope and service units) may be assigned to a specific
++    slice. For each slice, certain resource limits may be set that
+     apply to all processes of all units contained in that
+-    slice. Slices are organized hierarchially in a tree. The name of
++    slice. Slices are organized hierarchically in a tree. The name of
+     the slice encodes the location in the tree. The name consists of a
+     dash-separated series of names, which describes the path to the
+     slice from the root slice. The root slice is named,
diff --git a/debian/patches/man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch b/debian/patches/man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch
new file mode 100644 (file)
index 0000000..33ff989
--- /dev/null
@@ -0,0 +1,60 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Tue, 17 Dec 2013 19:40:02 -0500
+Subject: man: add DOI for refereed article on Forward Secure Sealing to
+ journald.conf(5)
+
+In journalctl(1), be more explicit about the reference to "Seal=" in
+journald.conf(5) and what information can be found there.
+
+(cherry picked from commit 06d9d3efa554ffc63b5977f1d86e393edeef8ad1)
+---
+ man/journalctl.xml    |  8 ++++++--
+ man/journald.conf.xml | 10 +++++-----
+ 2 files changed, 11 insertions(+), 7 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index dced90f..d75c758 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -781,10 +781,14 @@
+                                 sealing key is stored in the journal
+                                 data directory and shall remain on the
+                                 host. The verification key should be
+-                                stored externally. Also see the
++                                stored externally. Refer to the
+                                 <option>Seal=</option> option in
+                                 <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+-                                for details.</para></listitem>
++                                for information on Forward Secure
++                                Sealing and for a link to a refereed
++                                scholarly paper detailing the
++                                cryptographic theory it is based on.
++                                </para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index 7aa2e78..8e642a3 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -130,15 +130,15 @@
+                                 by
+                                 <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s
+                                 <option>--setup-keys</option>
+-                                command), forward secure sealing (FSS)
++                                command), Forward Secure Sealing (FSS)
+                                 for all persistent journal files is
+                                 enabled. FSS is based on <ulink
+                                 url="https://eprint.iacr.org/2013/397">Seekable
+                                 Sequential Key Generators</ulink> by
+-                                G. A. Marson and B. Poettering and
+-                                may be used to protect journal files
+-                                from unnoticed
+-                                alteration.</para></listitem>
++                                G. A. Marson and B. Poettering
++                                (doi:10.1007/978-3-642-40203-6_7)
++                                and may be used to protect journal files
++                                from unnoticed alteration.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
diff --git a/debian/patches/man-add-a-note-about-propagating-signals.patch b/debian/patches/man-add-a-note-about-propagating-signals.patch
new file mode 100644 (file)
index 0000000..72585cd
--- /dev/null
@@ -0,0 +1,61 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 27 Dec 2013 15:27:24 -0500
+Subject: man: add a note about propagating signals
+
+(cherry picked from commit a9a305332b7faf0d0d16db04909badaf6a095fef)
+---
+ man/systemd.service.xml | 39 +++++++++++++++++++++++++--------------
+ 1 file changed, 25 insertions(+), 14 deletions(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 71bcfb4..af3e0f2 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -734,22 +734,33 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}
+                                 considered successful termination, in
+                                 addition to the normal successful exit
+                                 code 0 and the signals <constant>SIGHUP</constant>, <constant>SIGINT</constant>,
+-                                <constant>SIGTERM</constant> and <constant>SIGPIPE</constant>. Exit status
++                                <constant>SIGTERM</constant>, and <constant>SIGPIPE</constant>. Exit status
+                                 definitions can either be numeric exit
+                                 codes or termination signal names,
+-                                separated by spaces. Example:
+-                                <literal>SuccessExitStatus=1 2 8
+-                                <constant>SIGKILL</constant></literal>, ensures that exit
+-                                codes 1, 2, 8 and the termination
+-                                signal <constant>SIGKILL</constant> are considered clean
+-                                service terminations. This option may
+-                                appear more than once in which case
+-                                the list of successful exit statuses
+-                                is merged. If the empty string is
+-                                assigned to this option, the list is
+-                                reset, all prior assignments of this
+-                                option will have no
+-                                effect.</para></listitem>
++                                separated by spaces. For example:
++                              <programlisting>SuccessExitStatus=1 2 8 <constant>SIGKILL</constant></programlisting>
++                              ensures that exit codes 1, 2, 8 and
++                              the termination signal
++                              <constant>SIGKILL</constant> are
++                              considered clean service terminations.
++                              </para>
++
++                              <para>Note that if a process has a
++                              signal handler installed and exits by
++                              calling
++                              <citerefentry><refentrytitle>_exit</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++                              in response to a signal, the
++                              information about the signal is lost.
++                              Programs should instead perform cleanup and kill themselves with the same signal instead. See
++                              <ulink url="http://www.cons.org/cracauer/sigint.html">Proper handling of SIGINT/SIGQUIT — How to be a proper program</ulink>.</para>
++
++                              <para>This option may appear more than once
++                              in which case the list of successful
++                              exit statuses is merged. If the empty
++                              string is assigned to this option, the
++                              list is reset, all prior assignments
++                              of this option will have no
++                              effect.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
diff --git a/debian/patches/man-add-bootctl-8.patch b/debian/patches/man-add-bootctl-8.patch
new file mode 100644 (file)
index 0000000..a2329c4
--- /dev/null
@@ -0,0 +1,162 @@
+From: Marko Myllynen <myllynen@redhat.com>
+Date: Wed, 13 Nov 2013 11:06:13 +0200
+Subject: man: add bootctl(8)
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1014303
+---
+ Makefile-man.am |   9 ++++
+ man/bootctl.xml | 125 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 134 insertions(+)
+ create mode 100644 man/bootctl.xml
+
+diff --git a/Makefile-man.am b/Makefile-man.am
+index b8c8acc..3f626e8 100644
+--- a/Makefile-man.am
++++ b/Makefile-man.am
+@@ -650,6 +650,15 @@ MANPAGES_ALIAS += \
+ endif
++if ENABLE_EFI
++MANPAGES += \
++      man/bootctl.1
++MANPAGES_ALIAS += \
++      #
++
++
++endif
++
+ if ENABLE_HOSTNAMED
+ MANPAGES += \
+       man/hostnamectl.1 \
+diff --git a/man/bootctl.xml b/man/bootctl.xml
+new file mode 100644
+index 0000000..28f1b92
+--- /dev/null
++++ b/man/bootctl.xml
+@@ -0,0 +1,125 @@
++<?xml version='1.0'?> <!--*-nxml-*-->
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
++
++<!--
++  This file is part of systemd.
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++-->
++
++<refentry id="bootctl" conditional='ENABLE_EFI'>
++
++        <refentryinfo>
++                <title>bootctl</title>
++                <productname>systemd</productname>
++
++                <authorgroup>
++                        <author>
++                                <contrib>Developer</contrib>
++                                <firstname>Kay</firstname>
++                                <surname>Sievers</surname>
++                                <email>kay@vrfy.org</email>
++                        </author>
++                </authorgroup>
++        </refentryinfo>
++
++        <refmeta>
++                <refentrytitle>bootctl</refentrytitle>
++                <manvolnum>1</manvolnum>
++        </refmeta>
++
++        <refnamediv>
++                <refname>bootctl</refname>
++                <refpurpose>Control the firmware and boot manager settings</refpurpose>
++        </refnamediv>
++
++        <refsynopsisdiv>
++                <cmdsynopsis>
++                        <command>bootctl</command>
++                        <arg choice="opt" rep="repeat">OPTIONS</arg>
++                        <arg choice="req">COMMAND</arg>
++                </cmdsynopsis>
++        </refsynopsisdiv>
++
++        <refsect1>
++                <title>Description</title>
++
++                <para><command>bootctl</command> may be used to
++                query or (in the future) change the firmware and boot
++                manager settings.</para>
++
++                <para>Firmware information is available only on EFI
++                systems.</para>
++
++                <para>Currently, only the <citerefentry><refentrytitle>gummiboot</refentrytitle><manvolnum>8</manvolnum></citerefentry> boot
++                manager implements the required boot loader interface
++                to provide complete boot manager information.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>Options</title>
++
++                <para>The following options are understood:</para>
++
++                <variablelist>
++                        <varlistentry>
++                                <term><option>-h</option></term>
++                                <term><option>--help</option></term>
++
++                                <listitem><para>Prints a short help
++                                text and exits.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term><option>--version</option></term>
++
++                                <listitem><para>Prints a short version
++                                string and exits.</para></listitem>
++                        </varlistentry>
++                </variablelist>
++
++                <para>The following commands are understood:</para>
++
++                <variablelist>
++                        <varlistentry>
++                                <term><command>status</command></term>
++
++                                <listitem><para>Show firmware and boot
++                                manager information about the system,
++                                including secure boot mode status and
++                                selected firmware entry (where
++                                available).</para></listitem>
++                        </varlistentry>
++                </variablelist>
++
++        </refsect1>
++
++        <refsect1>
++                <title>Exit status</title>
++
++                <para>On success, 0 is returned, a non-zero failure
++                code otherwise.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>See Also</title>
++                <para>
++                        <ulink url="http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface">Boot loader interface</ulink>,
++                        <ulink url="http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec">Boot loader specification</ulink>,
++                        <ulink url="http://www.freedesktop.org/wiki/Software/gummiboot/">gummiboot</ulink>
++                </para>
++        </refsect1>
++
++</refentry>
diff --git a/debian/patches/man-add-busctl-1.patch b/debian/patches/man-add-busctl-1.patch
new file mode 100644 (file)
index 0000000..c5de4a2
--- /dev/null
@@ -0,0 +1,240 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 11 Jan 2014 23:44:34 -0500
+Subject: man: add busctl(1)
+
+(cherry picked from commit 708c143c7cd2bbd748ac0fa993496ff44e72701c)
+
+Conflicts:
+       Makefile-man.am
+       TODO
+       man/systemd-bus-proxyd.xml
+---
+ Makefile-man.am |   1 +
+ man/busctl.xml  | 206 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 207 insertions(+)
+ create mode 100644 man/busctl.xml
+
+diff --git a/Makefile-man.am b/Makefile-man.am
+index 3f626e8..9c3cb35 100644
+--- a/Makefile-man.am
++++ b/Makefile-man.am
+@@ -3,6 +3,7 @@
+ MANPAGES += \
+       man/bootup.7 \
++      man/busctl.1 \
+       man/daemon.7 \
+       man/halt.8 \
+       man/hostname.5 \
+diff --git a/man/busctl.xml b/man/busctl.xml
+new file mode 100644
+index 0000000..0c5f05a
+--- /dev/null
++++ b/man/busctl.xml
+@@ -0,0 +1,206 @@
++<?xml version='1.0'?> <!--*-nxml-*-->
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
++
++<!--
++This file is part of systemd.
++
++Copyright 2014 Zbigniew Jędrzejewski-Szmek
++
++systemd is free software; you can redistribute it and/or modify it
++under the terms of the GNU Lesser General Public License as published by
++the Free Software Foundation; either version 2.1 of the License, or
++(at your option) any later version.
++
++systemd is distributed in the hope that it will be useful, but
++WITHOUT ANY WARRANTY; without even the implied warranty of
++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++Lesser General Public License for more details.
++
++You should have received a copy of the GNU Lesser General Public License
++along with systemd; If not, see <http://www.gnu.org/licenses/>.
++-->
++
++<refentry id="busctl">
++
++  <refentryinfo>
++    <title>busctl</title>
++    <productname>systemd</productname>
++
++    <authorgroup>
++      <author>
++        <contrib>A monkey with a typewriter</contrib>
++        <firstname>Zbigniew</firstname>
++        <surname>Jędrzejewski-Szmek</surname>
++        <email>zbyszek@in.waw.pl</email>
++      </author>
++    </authorgroup>
++  </refentryinfo>
++
++  <refmeta>
++    <refentrytitle>busctl</refentrytitle>
++    <manvolnum>1</manvolnum>
++  </refmeta>
++
++  <refnamediv>
++    <refname>busctl</refname>
++    <refpurpose>Introspect the bus</refpurpose>
++  </refnamediv>
++
++  <refsynopsisdiv>
++    <cmdsynopsis>
++      <command>busctl</command>
++      <arg choice="opt" rep="repeat">OPTIONS</arg>
++      <arg choice="opt">COMMAND</arg>
++      <arg choice="opt" rep="repeat"><replaceable>NAME</replaceable></arg>
++    </cmdsynopsis>
++  </refsynopsisdiv>
++
++  <refsect1>
++    <title>Description</title>
++
++    <para><command>busctl</command> may be used to
++    introspect and monitor the D-Bus bus.</para>
++  </refsect1>
++
++  <refsect1>
++    <title>Options</title>
++
++    <para>The following options are understood:</para>
++
++    <variablelist>
++      <varlistentry>
++        <term><option>-h</option></term>
++        <term><option>--help</option></term>
++
++        <listitem><para>Print a short help text and exit.
++        </para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><option>--version</option></term>
++
++        <listitem>
++          <para>Print a short version string and exit.</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><option>--no-pager</option></term>
++
++        <listitem>
++          <para>Do not pipe output into a pager.</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><option>--system</option></term>
++
++        <listitem>
++          <para>Talk to the systemd system manager (the
++          default).</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><option>--user</option></term>
++
++        <listitem>
++          <para>Talk to the systemd manager of the calling
++          user.</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
++          <term><option>--address=<replaceable>ADDRESS</replaceable></option></term>
++
++          <listitem><para>Connect to the bus specified by
++          <replaceable>ADDRESS</replaceable> instead of using suitable
++          defaults for either the system or user bus (see
++          <option>--system</option> and <option>--user</option>
++          options).</para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++          <term><option>--show-machine</option></term>
++
++          <listitem><para>When showing the list of endpoints, show a
++          column containing the names of containers they belong to.
++          See
++          <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
++          </para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++          <term><option>--unique</option></term>
++
++          <listitem><para>When showing the list of endpoints, show
++          only "unique" names (of the form
++          <literal>:<replaceable>number</replaceable>.<replaceable>number</replaceable></literal>).
++          </para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++          <term><option>--acquired</option></term>
++
++          <listitem><para>The opposite of <option>--unique</option> —
++          only "well-known" names will be shown.</para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++          <term><option>--activatable</option></term>
++
++          <listitem><para>When showing the list of endpoints, show
++          only endpoints which haven't actually been activated yet,
++          but may be started automatically if accessed.</para>
++          </listitem>
++      </varlistentry>
++
++      <varlistentry>
++          <term><option>--match=<replaceable>MATCH</replaceable></option></term>
++
++          <listitem><para>When showing messages being exchanged, show only the
++          subset matching <replaceable>MATCH</replaceable>.</para></listitem>
++          <!-- TODO: link to sd_bus_add_match when it is written? -->
++      </varlistentry>
++    </variablelist>
++  </refsect1>
++
++  <refsect1>
++    <title>Commands</title>
++
++    <para>The following commands are understood:</para>
++
++    <variablelist>
++      <varlistentry>
++        <term><command>list</command></term>
++
++        <listitem><para>Show endpoints attached to the bus. This is
++        the default if no command is specified.</para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><command>monitor</command>  <arg choice="opt" rep="repeat"><replaceable>NAME</replaceable></arg></term>
++
++        <listitem><para>Dump messages being exchanged. If
++        <replaceable>NAME</replaceable> is specified, show messages
++        to or from this endpoint. Otherwsise, show all messages on the
++        bus.</para></listitem>
++      </varlistentry>
++    </variablelist>
++  </refsect1>
++
++  <refsect1>
++    <title>See Also</title>
++
++    <para>
++      <citerefentry><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <ulink url="http://freedesktop.org/wiki/Software/dbus">D-Bus</ulink>,
++      <ulink url="https://code.google.com/p/d-bus/">kdbus</ulink>,
++      <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry><refentrytitle>systemd-bus-proxyd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++    </para>
++  </refsect1>
++</refentry>
diff --git a/debian/patches/man-add-docs-for-sd_is_special-and-some-man-page-sym.patch b/debian/patches/man-add-docs-for-sd_is_special-and-some-man-page-sym.patch
new file mode 100644 (file)
index 0000000..201974c
--- /dev/null
@@ -0,0 +1,133 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 7 Nov 2013 17:51:09 +0100
+Subject: man: add docs for sd_is_special() and some man page symlinks
+
+Conflicts:
+       Makefile.am
+---
+ Makefile-man.am            | 15 +++++++++++++++
+ man/sd_is_fifo.xml         | 17 +++++++++++++++++
+ man/sd_seat_get_active.xml |  2 ++
+ 3 files changed, 34 insertions(+)
+
+diff --git a/Makefile-man.am b/Makefile-man.am
+index c8a4342..b8c8acc 100644
+--- a/Makefile-man.am
++++ b/Makefile-man.am
+@@ -138,6 +138,7 @@ MANPAGES_ALIAS += \
+       man/sd_is_socket.3 \
+       man/sd_is_socket_inet.3 \
+       man/sd_is_socket_unix.3 \
++      man/sd_is_special.3 \
+       man/sd_journal.3 \
+       man/sd_journal_add_conjunction.3 \
+       man/sd_journal_add_disjunction.3 \
+@@ -238,6 +239,7 @@ man/sd_is_mq.3: man/sd_is_fifo.3
+ man/sd_is_socket.3: man/sd_is_fifo.3
+ man/sd_is_socket_inet.3: man/sd_is_fifo.3
+ man/sd_is_socket_unix.3: man/sd_is_fifo.3
++man/sd_is_special.3: man/sd_is_fifo.3
+ man/sd_journal.3: man/sd_journal_open.3
+ man/sd_journal_add_conjunction.3: man/sd_journal_add_match.3
+ man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3
+@@ -410,6 +412,9 @@ man/sd_is_socket_inet.html: man/sd_is_fifo.html
+ man/sd_is_socket_unix.html: man/sd_is_fifo.html
+       $(html-alias)
++man/sd_is_special.html: man/sd_is_fifo.html
++      $(html-alias)
++
+ man/sd_journal.html: man/sd_journal_open.html
+       $(html-alias)
+@@ -844,7 +849,9 @@ MANPAGES_ALIAS += \
+       man/sd_pid_get_slice.3 \
+       man/sd_pid_get_unit.3 \
+       man/sd_pid_get_user_unit.3 \
++      man/sd_seat_can_graphical.3 \
+       man/sd_seat_can_multi_session.3 \
++      man/sd_seat_can_tty.3 \
+       man/sd_seat_get_sessions.3 \
+       man/sd_session_get_class.3 \
+       man/sd_session_get_display.3 \
+@@ -873,7 +880,9 @@ man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3
+ man/sd_pid_get_slice.3: man/sd_pid_get_session.3
+ man/sd_pid_get_unit.3: man/sd_pid_get_session.3
+ man/sd_pid_get_user_unit.3: man/sd_pid_get_session.3
++man/sd_seat_can_graphical.3: man/sd_seat_get_active.3
+ man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3
++man/sd_seat_can_tty.3: man/sd_seat_get_active.3
+ man/sd_seat_get_sessions.3: man/sd_seat_get_active.3
+ man/sd_session_get_class.3: man/sd_session_is_active.3
+ man/sd_session_get_display.3: man/sd_session_is_active.3
+@@ -930,9 +939,15 @@ man/sd_pid_get_unit.html: man/sd_pid_get_session.html
+ man/sd_pid_get_user_unit.html: man/sd_pid_get_session.html
+       $(html-alias)
++man/sd_seat_can_graphical.html: man/sd_seat_get_active.html
++      $(html-alias)
++
+ man/sd_seat_can_multi_session.html: man/sd_seat_get_active.html
+       $(html-alias)
++man/sd_seat_can_tty.html: man/sd_seat_get_active.html
++      $(html-alias)
++
+ man/sd_seat_get_sessions.html: man/sd_seat_get_active.html
+       $(html-alias)
+diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
+index 2bc860c..4d9cd79 100644
+--- a/man/sd_is_fifo.xml
++++ b/man/sd_is_fifo.xml
+@@ -48,6 +48,7 @@
+                 <refname>sd_is_socket_inet</refname>
+                 <refname>sd_is_socket_unix</refname>
+                 <refname>sd_is_mq</refname>
++                <refname>sd_is_special</refname>
+                 <refpurpose>Check the type of a file descriptor</refpurpose>
+         </refnamediv>
+@@ -93,6 +94,12 @@
+                                 <paramdef>const char *<parameter>path</parameter></paramdef>
+                         </funcprototype>
++                        <funcprototype>
++                                <funcdef>int <function>sd_is_special</function></funcdef>
++                                <paramdef>int <parameter>fd</parameter></paramdef>
++                                <paramdef>const char *<parameter>path</parameter></paramdef>
++                        </funcprototype>
++
+                 </funcsynopsis>
+         </refsynopsisdiv>
+@@ -153,6 +160,16 @@
+                 <parameter>path</parameter> parameter is not
+                 <constant>NULL</constant>, it is checked whether the
+                 message queue is bound to the specified name.</para>
++
++                <para><function>sd_is_special()</function> may be
++                called to check whether the specified file descriptor
++                refers to a special file. If the
++                <parameter>path</parameter> parameter is not
++                <constant>NULL</constant>, it is checked whether file
++                descriptor is bound to the specified file
++                name. Special files in this context are character
++                device nodes and files in <filename>/proc</filename>
++                or <filename>/sys</filename>.</para>
+         </refsect1>
+         <refsect1>
+diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
+index 1610d3e..cd87696 100644
+--- a/man/sd_seat_get_active.xml
++++ b/man/sd_seat_get_active.xml
+@@ -46,6 +46,8 @@
+                 <refname>sd_seat_get_active</refname>
+                 <refname>sd_seat_get_sessions</refname>
+                 <refname>sd_seat_can_multi_session</refname>
++                <refname>sd_seat_can_tty</refname>
++                <refname>sd_seat_can_graphical</refname>
+                 <refpurpose>Determine state of a specific seat</refpurpose>
+         </refnamediv>
diff --git a/debian/patches/man-add-missing-comma.patch b/debian/patches/man-add-missing-comma.patch
new file mode 100644 (file)
index 0000000..84bfa8f
--- /dev/null
@@ -0,0 +1,25 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 6 Mar 2014 23:54:13 -0500
+Subject: man: add missing comma
+
+marcosf0> missing comma in udevadm "see also" section
+
+(cherry picked from commit 7d06ef0a5cd2f0a4e021d3d12f3841cce529e0f2)
+(cherry picked from commit a478182ddc3abcacd006ecef8de8829c3ec51b13)
+---
+ man/udevadm.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index b172266..112652c 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -514,7 +514,7 @@
+     <title>See Also</title>
+     <para><citerefentry>
+         <refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum>
+-    </citerefentry>
++    </citerefentry>,
+     <citerefentry>
+         <refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum>
+     </citerefentry></para>
diff --git a/debian/patches/man-add-more-markup-to-udevadm-8.patch b/debian/patches/man-add-more-markup-to-udevadm-8.patch
new file mode 100644 (file)
index 0000000..9e1d91c
--- /dev/null
@@ -0,0 +1,93 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 13 Oct 2013 19:43:19 -0400
+Subject: man: add more markup to udevadm(8)
+
+---
+ man/udevadm.xml | 49 +++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 33 insertions(+), 16 deletions(-)
+
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index b959216..a1ffe42 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -61,9 +61,10 @@
+   </refsynopsisdiv>
+   <refsect1><title>Description</title>
+-    <para>udevadm expects a command and command specific options.  It
+-    controls the runtime behavior of udev, requests kernel events,
+-    manages the event queue, and provides simple debugging mechanisms.</para>
++    <para><command>udevadm</command> expects a command and command
++    specific options.  It controls the runtime behavior of
++    <command>systemd-udevd</command>, requests kernel events, manages
++    the event queue, and provides simple debugging mechanisms.</para>
+   </refsect1>
+   <refsect1><title>OPTIONS</title>
+@@ -97,23 +98,37 @@
+         <varlistentry>
+           <term><option>--query=<replaceable>type</replaceable></option></term>
+           <listitem>
+-            <para>Query the database for specified type of device data. It needs the
+-            <option>--path</option> or <option>--name</option> to identify the specified
+-            device. Valid queries are:
+-            <command>name</command>, <command>symlink</command>, <command>path</command>,
+-            <command>property</command>, <command>all</command>.</para>
++            <para>Query the database for specified type of device
++            data. It needs the <option>--path</option> or
++            <option>--name</option> to identify the specified
++            device. Valid queries are: <constant>name</constant>,
++            <constant>symlink</constant>, <constant>path</constant>,
++            <constant>property</constant>,
++            <constant>all</constant>.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term><option>--path=<replaceable>devpath</replaceable></option></term>
+           <listitem>
+-            <para>The devpath of the device to query.</para>
++            <para>The <filename>/sys</filename> path of the device to
++            query, e.g.
++            <filename><optional>/sys</optional>/class/block/sda</filename>.
++            Note that this option usually isn't very useful, since
++            <command>udev</command> can guess the type of the
++            argument, so <command>udevadm
++            --devpath=/class/block/sda</command> is equivalent to
++            <command>udevadm /sys/class/block/sda</command>.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term><option>--name=<replaceable>file</replaceable></option></term>
+           <listitem>
+-            <para>The name of the device node or a symlink to query</para>
++            <para>The name of the device node or a symlink to query,
++            e.g. <filename><optional>/dev</optional>/sda</filename>.
++            Note that this option usually isn't very useful, since
++            <command>udev</command> can guess the type of the
++            argument, so <command>udevadm --name=sda</command> is
++            equivalent to <command>udevadm /dev/sda</command>.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+@@ -462,13 +477,15 @@
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+-          <term><option>--resolve-names=<replaceable>early|late|never</replaceable></option></term>
++          <term><option>--resolve-names=<constant>early</constant>|<constant>late</constant>|<constant>never</constant></option></term>
+           <listitem>
+-            <para>Specify when udevadm should resolve names of users and groups.
+-              When set to early (the default) names will be resolved when the
+-              rules are parsed. When set to late names will be resolved for
+-              every event. When set to never names will never be resolved and
+-              all devices will be owned by root.</para>
++            <para>Specify when udevadm should resolve names of users
++            and groups.  When set to <constant>early</constant> (the
++            default) names will be resolved when the rules are
++            parsed. When set to <constant>late</constant> names will
++            be resolved for every event. When set to
++            <constant>never</constant> names will never be resolved
++            and all devices will be owned by root.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
diff --git a/debian/patches/man-add-rationale-into-systemd-halt-8.patch b/debian/patches/man-add-rationale-into-systemd-halt-8.patch
new file mode 100644 (file)
index 0000000..57c1863
--- /dev/null
@@ -0,0 +1,27 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Thu, 7 Nov 2013 01:17:49 +0100
+Subject: man: add rationale into systemd-halt(8)
+
+The explanation is from
+http://people.debian.org/~stapelberg/docs/systemd-dependencies.html
+---
+ man/systemd-halt.service.xml | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
+index 812281e..90b443f 100644
+--- a/man/systemd-halt.service.xml
++++ b/man/systemd-halt.service.xml
+@@ -83,6 +83,12 @@
+                 remaining swap devices, detach all remaining storage
+                 devices and kill all remaining processes.</para>
++                <para>It is necessary to have this code in a separate binary
++                because otherwise rebooting after an upgrade might be broken —
++                the running PID 1 could still depend on libraries which are not
++                available any more, thus keeping the filesystem busy, which
++                then cannot be re-mounted read-only.</para>
++
+                 <para>Immediately before executing the actual system
+                 halt/poweroff/reboot/kexec
+                 <filename>systemd-shutdown</filename> will run all
diff --git a/debian/patches/man-always-place-programlisting-and-programlisting-i.patch b/debian/patches/man-always-place-programlisting-and-programlisting-i.patch
new file mode 100644 (file)
index 0000000..a566a1a
--- /dev/null
@@ -0,0 +1,346 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 14 Feb 2014 15:56:19 +0100
+Subject: man: always place <programlisting> and </programlisting> in a line
+ with actual sources,
+ so that we don't get spurious newlines in the man page output
+
+(cherry picked from commit 9fccdb0f64d12bc09a71442dd0af2248c1aa3e89)
+
+Conflicts:
+       man/systemd-socket-proxyd.xml
+---
+ man/daemon.xml                           |  3 +--
+ man/kernel-install.xml                   |  8 ++------
+ man/nss-myhostname.xml                   | 12 ++++--------
+ man/sd_journal_get_fd.xml                |  3 +--
+ man/systemctl.xml                        |  3 +--
+ man/systemd-delta.xml                    | 12 ++++--------
+ man/systemd-journal-gatewayd.service.xml | 16 +++++-----------
+ man/systemd-run.xml                      |  3 +--
+ man/systemd-sleep.conf.xml               |  6 ++----
+ man/systemd.service.xml                  | 13 ++++---------
+ man/timedatectl.xml                      | 18 ++++++------------
+ man/tmpfiles.d.xml                       |  7 ++-----
+ 12 files changed, 33 insertions(+), 71 deletions(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 105826a..17d9dd6 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -777,8 +777,7 @@ AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitd
+          [with_systemdsystemunitdir=$def_systemdsystemunitdir])])
+ AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
+       [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
+-AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"])
+-</programlisting>
++AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"])</programlisting>
+                         <para>This snippet allows automatic
+                         installation of the unit files on systemd
+diff --git a/man/kernel-install.xml b/man/kernel-install.xml
+index 929ceef..3612b7d 100644
+--- a/man/kernel-install.xml
++++ b/man/kernel-install.xml
+@@ -90,9 +90,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+           <filename>/usr/lib/kernel/install.d/*.install</filename> and
+           <filename>/etc/kernel/install.d/*.install</filename> with
+           the arguments
+-          <programlisting>
+-add <replaceable>KERNEL-VERSION</replaceable> <filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/</filename>
+-          </programlisting>
++          <programlisting>add <replaceable>KERNEL-VERSION</replaceable> <filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/</filename></programlisting>
+           </para>
+           <para>The kernel-install plugin <filename>50-depmod.install</filename> runs depmod for the <replaceable>KERNEL-VERSION</replaceable>.</para>
+@@ -114,9 +112,7 @@ add <replaceable>KERNEL-VERSION</replaceable> <filename>/boot/<replaceable>MACHI
+         <listitem>
+           <para>Calls every executable <filename>/usr/lib/kernel/install.d/*.install</filename>
+           and <filename>/etc/kernel/install.d/*.install</filename> with the arguments
+-          <programlisting>
+-remove <replaceable>KERNEL-VERSION</replaceable> <filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/</filename>
+-          </programlisting>
++          <programlisting>remove <replaceable>KERNEL-VERSION</replaceable> <filename>/boot/<replaceable>MACHINE-ID</replaceable>/<replaceable>KERNEL-VERSION</replaceable>/</filename></programlisting>
+           </para>
+           <para><command>kernel-install</command> removes the entire directory
+diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml
+index efbadac..cca3a99 100644
+--- a/man/nss-myhostname.xml
++++ b/man/nss-myhostname.xml
+@@ -86,8 +86,7 @@
+         <refsect1>
+                 <title>Example</title>
+-                <programlisting>
+-# /etc/nsswitch.conf
++<programlisting># /etc/nsswitch.conf
+ passwd:         compat
+ group:          compat
+@@ -101,20 +100,17 @@ services:       db files
+ ethers:         db files
+ rpc:            db files
+-netgroup:       nis
+-                </programlisting>
++netgroup:       nis</programlisting>
+                 <para>To test, use <command>glibc</command>'s <command>getent</command> tool:</para>
+-                <programlisting>
+-$ getent ahosts `hostname`
++                <programlisting>$ getent ahosts `hostname`
+ ::1             STREAM omega
+ ::1             DGRAM
+ ::1             RAW
+ 127.0.0.2       STREAM
+ 127.0.0.2       DGRAM
+-127.0.0.2       RAW
+-                </programlisting>
++127.0.0.2       RAW</programlisting>
+                 <para>In this case the local hostname is <varname>omega</varname>.</para>
+diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml
+index 4b36f97..df7632f 100644
+--- a/man/sd_journal_get_fd.xml
++++ b/man/sd_journal_get_fd.xml
+@@ -330,8 +330,7 @@ int wait_for_changes(sd_journal *j) {
+         pollfd.events = sd_journal_get_events(j);
+         poll(&amp;pollfd, 1, msec);
+         return sd_journal_process(j);
+-}
+-                </programlisting>
++}</programlisting>
+         </refsect1>
+         <refsect1>
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 25b03d8..cde1694 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -544,8 +544,7 @@ LISTEN           UNIT                        ACTIVATES
+ [::]:22          sshd.socket                 sshd.service
+ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+-5 sockets listed.
+-            </programlisting>
++5 sockets listed.</programlisting>
+             Note: because the addresses might contains spaces, this output
+             is not suitable for programmatic consumption.
+             </para>
+diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
+index ebaa349..f802aa5 100644
+--- a/man/systemd-delta.xml
++++ b/man/systemd-delta.xml
+@@ -204,20 +204,16 @@
+               <title>Examples</title>
+               <para>To see all local configuration:</para>
+-              <programlisting>systemd-delta
+-              </programlisting>
++              <programlisting>systemd-delta</programlisting>
+               <para>To see all runtime configuration:</para>
+-              <programlisting>systemd-delta /run
+-              </programlisting>
++              <programlisting>systemd-delta /run</programlisting>
+               <para>To see all system unit configuration changes:</para>
+-              <programlisting>systemd-delta systemd/system
+-              </programlisting>
++              <programlisting>systemd-delta systemd/system</programlisting>
+               <para>To see all runtime "drop-in" changes for system units:</para>
+-              <programlisting>systemd-delta --type=extended /run/systemd/system
+-              </programlisting>
++              <programlisting>systemd-delta --type=extended /run/systemd/system</programlisting>
+       </refsect1>
+         <refsect1>
+diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml
+index 0b6fd70..f639811 100644
+--- a/man/systemd-journal-gatewayd.service.xml
++++ b/man/systemd-journal-gatewayd.service.xml
+@@ -154,14 +154,12 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+         <listitem><para>Return a JSON structure describing the machine.</para>
+         <para>Example:
+-        <programlisting>
+-{ "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446",
++        <programlisting>{ "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446",
+   "boot_id" : "3d3c9efaf556496a9b04259ee35df7f7",
+   "hostname" : "fedora",
+   "os_pretty_name" : "Fedora 19 (Rawhide)",
+   "virtualization" : "kvm",
+-  ...}
+-        </programlisting>
++  ...}</programlisting>
+         </para>
+         </listitem>
+       </varlistentry>
+@@ -295,16 +293,12 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     in <ulink
+     url="http://www.freedesktop.org/wiki/Software/systemd/export">Journal
+     Export Format</ulink>:
+-    <programlisting>
+-curl --silent -H'Accept: application/vnd.fdo.journal' \
+-       'http://localhost:19531/entries?boot'
+-    </programlisting>
++    <programlisting>curl --silent -H'Accept: application/vnd.fdo.journal' \
++       'http://localhost:19531/entries?boot'</programlisting>
+     </para>
+     <para>Listen for core dumps:
+-    <programlisting>
+-curl 'http://localhost:19531/entries?follow&amp;MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1'
+-    </programlisting></para>
++    <programlisting>curl 'http://localhost:19531/entries?follow&amp;MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1'</programlisting></para>
+   </refsect1>
+   <refsect1>
+diff --git a/man/systemd-run.xml b/man/systemd-run.xml
+index 48a0715..97ddf44 100644
+--- a/man/systemd-run.xml
++++ b/man/systemd-run.xml
+@@ -209,8 +209,7 @@ Sep 08 07:37:21 bupkis systemd[1]: Starting /usr/bin/env...
+ Sep 08 07:37:21 bupkis systemd[1]: Started /usr/bin/env.
+ Sep 08 07:37:21 bupkis env[19948]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+ Sep 08 07:37:21 bupkis env[19948]: LANG=en_US.UTF-8
+-Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20.x86_64
+-    </programlisting>
++Sep 08 07:37:21 bupkis env[19948]: BOOT_IMAGE=/vmlinuz-3.11.0-0.rc5.git6.2.fc20.x86_64</programlisting>
+   </refsect1>
+   <refsect1>
+diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml
+index dc4b0da..4622205 100644
+--- a/man/systemd-sleep.conf.xml
++++ b/man/systemd-sleep.conf.xml
+@@ -160,10 +160,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     <para>Example: to exploit the <quote>freeze</quote> mode added
+     in Linux 3.9, one can use <command>systemctl suspend</command>
+     with
+-    <programlisting>
+-[Sleep]
+-SuspendState=freeze
+-    </programlisting></para>
++    <programlisting>[Sleep]
++SuspendState=freeze</programlisting></para>
+   </refsect1>
+   <refsect1>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 4fb21ba..e8bb02c 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -442,12 +442,9 @@
+                                 be used, they need to be passed
+                                 explicitly to a shell implementation
+                                 of some kind. Example:</para>
+-                                <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
+-                                </programlisting>
+-
++                                <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'</programlisting>
+                                 <para>Example:</para>
+-                                <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"
+-                                </programlisting>
++                                <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"</programlisting>
+                                 <para>This will execute
+                                 <command>/bin/echo</command> two
+                                 times, each time with one argument,
+@@ -460,8 +457,7 @@
+                                 <para>Example:</para>
+                                 <programlisting>ExecStart=/bin/echo / &gt;/dev/null &amp; \; \
+-/bin/ls
+-                                </programlisting>
++/bin/ls</programlisting>
+                                 <para>This will execute
+                                 <command>/bin/echo</command> with five
+                                 arguments: <literal>/</literal>,
+@@ -472,8 +468,7 @@
+                                 <para>Example:</para>
+                                 <programlisting>Environment="ONE=one" 'TWO=two two'
+-ExecStart=/bin/echo $ONE $TWO ${TWO}
+-                                </programlisting>
++ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 <para>This will execute
+                                 <command>/bin/echo</command> with four
+                                 arguments: <literal>one</literal>,
+diff --git a/man/timedatectl.xml b/man/timedatectl.xml
+index f4975ce..5f95486 100644
+--- a/man/timedatectl.xml
++++ b/man/timedatectl.xml
+@@ -245,8 +245,7 @@
+         <refsect1>
+                 <title>Examples</title>
+                 <para>Show current settings:
+-                <programlisting>
+-$ timedatectl
++                <programlisting>$ timedatectl
+       Local time: Fri, 2012-11-02 09:26:46 CET
+   Universal time: Fri, 2012-11-02 08:26:46 UTC
+         RTC time: Fri, 2012-11-02 08:26:45
+@@ -262,27 +261,22 @@ NTP synchronized: no
+  Next DST change: CET → CEST, DST will become active
+                   the clock will jump one hour forward
+                   Sun, 2013-03-31 01:59:59 CET
+-                  Sun, 2013-03-31 03:00:00 CEST
+-                </programlisting>
++                  Sun, 2013-03-31 03:00:00 CEST</programlisting>
+                 </para>
+                 <para>Enable an NTP daemon (chronyd):
+-                <programlisting>
+-$ timedatectl set-ntp true
++                <programlisting>$ timedatectl set-ntp true
+ ==== AUTHENTICATING FOR org.freedesktop.timedate1.set-ntp ===
+ Authentication is required to control whether network time synchronization shall be enabled.
+ Authenticating as: user
+ Password: ********
+-==== AUTHENTICATION COMPLETE ===
+-                </programlisting>
++==== AUTHENTICATION COMPLETE ===</programlisting>
+-                <programlisting>
+-$ systemctl status chronyd.service
++                <programlisting>$ systemctl status chronyd.service
+ chronyd.service - NTP client/server
+           Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
+           Active: active (running) since Fri, 2012-11-02 09:36:25 CET; 5s ago
+-...
+-                </programlisting>
++...</programlisting>
+                 </para>
+         </refsect1>
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index 8267ffc..9578c93 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -109,7 +109,6 @@
+ d    /run/user   0755 root root 10d -
+ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+-
+                 <refsect2>
+                         <title>Type</title>
+@@ -277,13 +276,11 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                         </para>
+                         <para>For example:
+-                        <programlisting>
+-# Make sure these are created by default so that nobody else can
++                        <programlisting># Make sure these are created by default so that nobody else can
+ d /tmp/.X11-unix 1777 root root 10d
+ # Unlink the X11 lock files
+-r! /tmp/.X[0-9]*-lock
+-                        </programlisting>
++r! /tmp/.X[0-9]*-lock</programlisting>
+                         The second line in contrast to the first one
+                         would break a running system, and will only be
+                         executed with <option>--boot</option>.</para>
diff --git a/debian/patches/man-be-more-explicit-about-option-arguments-that-tak.patch b/debian/patches/man-be-more-explicit-about-option-arguments-that-tak.patch
new file mode 100644 (file)
index 0000000..73100fc
--- /dev/null
@@ -0,0 +1,53 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Tue, 17 Dec 2013 18:48:43 -0500
+Subject: man: be more explicit about option arguments that take 128-bit IDs
+ in journalctl(1)
+
+It may not be immediately obvious to the reader what "ID128" is, so replace the
+example option argument "ID128" with "128-bit-ID".
+
+(cherry picked from commit 9a7adc9a0ed53d6e422321e9196eb83d18afcba5)
+---
+ man/journalctl.xml | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index d936933..dced90f 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -725,7 +725,7 @@
+                         <varlistentry>
+                                 <term><option>--list-catalog
+-                                <optional><replaceable>ID128...</replaceable></optional>
++                                <optional><replaceable>128-bit-ID...</replaceable></optional>
+                                 </option></term>
+                                 <listitem><para>List the contents of
+@@ -734,7 +734,7 @@
+                                 description strings.</para>
+                                 <para>If any
+-                                <replaceable>ID128</replaceable>s are
++                                <replaceable>128-bit-ID</replaceable>s are
+                                 specified, only those entries are shown.
+                                 </para>
+                                 </listitem>
+@@ -742,7 +742,7 @@
+                         <varlistentry>
+                                 <term><option>--dump-catalog
+-                                <optional><replaceable>ID128...</replaceable></optional>
++                                <optional><replaceable>128-bit-ID...</replaceable></optional>
+                                 </option></term>
+                                 <listitem><para>Show the contents of
+@@ -753,7 +753,7 @@
+                                 files.</para>
+                                 <para>If any
+-                                <replaceable>ID128</replaceable>s are
++                                <replaceable>128-bit-ID</replaceable>s are
+                                 specified, only those entries are shown.
+                                 </para>
+                                 </listitem>
diff --git a/debian/patches/man-be-more-specific-when-EnvironmentFile-is-read.patch b/debian/patches/man-be-more-specific-when-EnvironmentFile-is-read.patch
new file mode 100644 (file)
index 0000000..6d94779
--- /dev/null
@@ -0,0 +1,33 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 25 Mar 2014 00:26:09 +0100
+Subject: man: be more specific when EnvironmentFile= is read
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-March/018004.html
+(cherry picked from commit 905826156de95d173b26e7a57df29188a1020cd0)
+(cherry picked from commit 72e86f001d139f9a7deaa697e355e5df2cb31151)
+---
+ man/systemd.exec.xml | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index d8dab36..37b9c4d 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -340,9 +340,14 @@
+                                 <para>The files listed with this
+                                 directive will be read shortly before
+-                                the process is executed. Settings from
+-                                these files override settings made
+-                                with
++                                the process is executed (more
++                                specifically, this means after all
++                                processes from a previous unit state
++                                terminated. This means you can
++                                generate these files in one unit
++                                state, and read it with this option in
++                                the next). Settings from these files
++                                override settings made with
+                                 <varname>Environment=</varname>. If
+                                 the same variable is set twice from
+                                 these files, the files will be read in
diff --git a/debian/patches/man-beef-up-ExecStart-description.patch b/debian/patches/man-beef-up-ExecStart-description.patch
new file mode 100644 (file)
index 0000000..f365eb1
--- /dev/null
@@ -0,0 +1,150 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Dec 2013 17:21:55 -0500
+Subject: man: beef up ExecStart description
+
+We have lots of questions from people who assume that shell syntax works
+here, so let's be very explicit what is allowed and what is not. A few
+examples should also help.
+
+http://bugs.debian.org/732156
+(cherry picked from commit ec6039bc08f8e77f92427afec048e4f8ac4b81a8)
+---
+ man/systemd.service.xml | 97 ++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 80 insertions(+), 17 deletions(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 3f31c11..ca297ba 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -305,9 +305,10 @@
+                                 <term><varname>ExecStart=</varname></term>
+                                 <listitem><para>Commands with their
+                                 arguments that are executed when this
+-                                service is started. The first
+-                                argument must be an absolute path
+-                                name.</para>
++                                service is started. For each of the
++                                specified commands, the first argument
++                                must be an absolute and literal path
++                                to an executable.</para>
+                                 <para>When <varname>Type</varname> is
+                                 not <option>oneshot</option>, only one
+@@ -332,6 +333,35 @@
+                                 prior assignments of this option will
+                                 have no effect.</para>
++                                <para>Each command line is split on
++                                whitespace, with the first item being
++                                the command to execute, and the
++                                subsequent items being the arguments.
++                                Double quotes ("...") and single
++                                quotes ('...') may be used, in which
++                                case everything until the next
++                                matching quote becomes part of the
++                                same argument. Quotes themselves are
++                                removed after parsing. In addition, a
++                                trailing backslash
++                                (<literal>\</literal>) may be used to
++                                merge lines. This syntax is intended
++                                to be very similar to shell syntax,
++                                but only the meta-characters and
++                                expansions described in the following
++                                paragraphs are understood.
++                                Specifically, redirection using
++                                <literal>&lt;</literal>,
++                                <literal>&lt;&lt;</literal>,
++                                <literal>&gt;</literal>, and
++                                <literal>&gt;&gt;</literal>, pipes
++                                using <literal>|</literal>, and
++                                running programs in the background
++                                using <literal>&amp;</literal>
++                                and <emphasis>other elements of shell
++                                syntax are not supported</emphasis>.
++                                </para>
++
+                                 <para>If more than one command is
+                                 specified, the commands are invoked
+                                 one by one sequentially in the order
+@@ -350,10 +380,11 @@
+                                 <para>The command line accepts
+                                 <literal>%</literal> specifiers as
+                                 described in
+-                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Note
+-                                that the first argument of the command
+-                                line (i.e. the program to execute) may
+-                                not include specifiers.</para>
++                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++                                Note that the first argument of the
++                                command line (i.e. the program to
++                                execute) may not include
++                                specifiers.</para>
+                                 <para>Basic environment variable
+                                 substitution is supported. Use
+@@ -372,9 +403,7 @@
+                                 more arguments. To pass literal dollar sign
+                                 use <literal>$$</literal>. Note that the first
+                                 argument (i.e. the program to execute)
+-                                may not be a variable, since it must
+-                                be a literal and absolute path
+-                                name.</para>
++                                may not be a variable.</para>
+                                 <para>Optionally, if the absolute file
+                                 name is prefixed with
+@@ -402,13 +431,47 @@
+                                 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
+                                 </programlisting>
+-                                <para>For services run by a user
+-                                instance of systemd the special
+-                                environment variable
+-                                <varname>$MANAGERPID</varname> is set
+-                                to the PID of the systemd
+-                                instance.</para>
+-                                </listitem>
++                                <para>Only select environment variables
++                                are set for executed commands. See
++                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++                                </para>
++
++                                <para>Example:</para>
++                                <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"
++                                </programlisting>
++                                <para>This will execute
++                                <command>/bin/echo</command> two
++                                times, each time with one argument,
++                                <literal>one</literal> and
++                                <literal>two two</literal>,
++                                respectively. Since two commands are
++                                specified
++                                <varname>Type=oneshot</varname> must
++                                be used.</para>
++
++                                <para>Example:</para>
++                                <programlisting>ExecStart=/bin/echo / &gt;/dev/null &amp; \; \
++/bin/ls
++                                </programlisting>
++                                <para>This will execute
++                                <command>/bin/echo</command> with five
++                                arguments: <literal>/</literal>,
++                                <literal>&gt;/dev/null</literal>,
++                                <literal>&amp;</literal>,
++                                <literal>;</literal>, and
++                                <literal>/bin/ls</literal>.</para>
++
++                                <para>Example:</para>
++                                <programlisting>Environment="ONE=one" 'TWO=two two'
++ExecStart=/bin/echo $ONE $TWO ${TWO}
++                                </programlisting>
++                                <para>This will execute
++                                <command>/bin/echo</command> with four
++                                arguments: <literal>one</literal>,
++                                <literal>two</literal>,
++                                <literal>two</literal>, and
++                                <literal>two two</literal>.</para>
++                              </listitem>
+                         </varlistentry>
+                         <varlistentry>
diff --git a/debian/patches/man-busctl-typo-fix.patch b/debian/patches/man-busctl-typo-fix.patch
new file mode 100644 (file)
index 0000000..59123cf
--- /dev/null
@@ -0,0 +1,22 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Wed, 19 Feb 2014 17:02:45 +0100
+Subject: man: busctl typo fix
+
+(cherry picked from commit f5ca75f4a1f9f97a23c8bb70ee89cf669f9bb425)
+---
+ man/busctl.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/busctl.xml b/man/busctl.xml
+index 854eb38..6200643 100644
+--- a/man/busctl.xml
++++ b/man/busctl.xml
+@@ -184,7 +184,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+         <listitem><para>Dump messages being exchanged. If
+         <replaceable>NAME</replaceable> is specified, show messages
+-        to or from this endpoint. Otherwsise, show all messages on the
++        to or from this endpoint. Otherwise, show all messages on the
+         bus.</para></listitem>
+       </varlistentry>
+     </variablelist>
diff --git a/debian/patches/man-clarify-that-the-ExecReload-command-should-be-sy.patch b/debian/patches/man-clarify-that-the-ExecReload-command-should-be-sy.patch
new file mode 100644 (file)
index 0000000..793ce4f
--- /dev/null
@@ -0,0 +1,36 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 16 May 2014 01:33:22 +0200
+Subject: man: clarify that the ExecReload= command should be synchronous
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-May/019054.html
+(cherry picked from commit 33169701b0640d3629d4c36cf8c71dc26d2cb7e1)
+(cherry picked from commit e3f71240733a153605a68e521ef5892e3cdf88f7)
+---
+ man/systemd.service.xml | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 50b19a8..f549e89 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -519,6 +519,20 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 following:</para>
+                                 <programlisting>/bin/kill -HUP $MAINPID</programlisting>
++
++                                <para>Note however that reloading a
++                                daemon by sending a signal (as with
++                                the example line above) is usually not
++                                a good choice, because this is an
++                                asynchronous operation and hence not
++                                suitable to order reloads of multiple
++                                services against each other. It is
++                                strongly recommended to set
++                                <varname>ExecReload=</varname> to a
++                                command that no only triggers a
++                                configuration reload of the daemon,
++                                but also synchronously waits for it
++                                complete.</para>
+                                 </listitem>
+                         </varlistentry>
diff --git a/debian/patches/man-describe-journalctl-show-cursor.patch b/debian/patches/man-describe-journalctl-show-cursor.patch
new file mode 100644 (file)
index 0000000..b0ad1e9
--- /dev/null
@@ -0,0 +1,42 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 16 Dec 2013 23:40:00 -0500
+Subject: man: describe journalctl --show-cursor
+
+(cherry picked from commit 7fd97d7829de4e62690b5fb8d41de81bcde24db2)
+---
+ man/journalctl.xml | 22 +++++++++++++++++-----
+ 1 file changed, 17 insertions(+), 5 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index c0cc96d..d936933 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -576,11 +576,23 @@
+                         <varlistentry>
+                                 <term><option>--after-cursor=</option></term>
+-                                <listitem><para>Start showing entries from the
+-                                location in the journal
+-                                <emphasis>after</emphasis> the location
+-                                specified by the this cursor.
+-                                </para></listitem>
++                                <listitem><para>Start showing entries
++                                from the location in the journal
++                                <emphasis>after</emphasis> the
++                                location specified by the this cursor.
++                                The cursor is shown when the
++                                <option>--show-cursor</option> option
++                                is used.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term><option>--show-cursor</option></term>
++
++                                <listitem><para>The cursor is shown after the last
++                                entry after two dashes:</para>
++                                <programlisting>-- cursor: s=0639...</programlisting>
++                                <para>The format of this the cursor is private
++                                and subject ot change.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
diff --git a/debian/patches/man-do-not-use-term-in-para.patch b/debian/patches/man-do-not-use-term-in-para.patch
new file mode 100644 (file)
index 0000000..20f9aca
--- /dev/null
@@ -0,0 +1,22 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Tue, 5 Nov 2013 21:34:50 +0100
+Subject: man: do not use <term> in <para>
+
+Element term in namespace '' encountered in para, but no template matches.
+---
+ man/systemd.mount.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
+index 71a5736..df5a79e 100644
+--- a/man/systemd.mount.xml
++++ b/man/systemd.mount.xml
+@@ -261,7 +261,7 @@
+                                 a time span value such as "5min
+                                 20s". Pass 0 to disable the timeout
+                                 logic. Default value is setted up in manager configuration
+-                                file via <term><varname>DefaultTimeoutStart=</varname></term>.</para></listitem>
++                                file via <varname>DefaultTimeoutStart=</varname>.</para></listitem>
+                         </varlistentry>
+                 </variablelist>
diff --git a/debian/patches/man-document-MAINPID.patch b/debian/patches/man-document-MAINPID.patch
new file mode 100644 (file)
index 0000000..335d829
--- /dev/null
@@ -0,0 +1,40 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 19 Feb 2014 02:54:00 +0100
+Subject: man: document $MAINPID
+
+(cherry picked from commit b67f562c9cac44bd78b24f5aae78a1797c5d4182)
+---
+ man/systemd.exec.xml | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index 630a28c..d8dab36 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -472,7 +472,7 @@
+                         <varlistentry>
+                                 <term><varname>StandardError=</varname></term>
+                                 <listitem><para>Controls where file
+-                                descriptor 2 (standard error) of the
++                                descriptor 2 (STDERR) of the
+                                 executed processes is connected to.
+                                 The available options are identical to
+                                 those of
+@@ -1067,6 +1067,17 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><varname>$MAINPID</varname></term>
++
++                                <listitem><para>The PID of the units
++                                main process if it is known. This is
++                                only set for control processes as
++                                invoked by
++                                <varname>ExecReload=</varname> and
++                                similar.  </para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
+                                 <term><varname>$MANAGERPID</varname></term>
+                                 <listitem><para>The PID of the user
diff --git a/debian/patches/man-document-fail-nofail-auto-noauto.patch b/debian/patches/man-document-fail-nofail-auto-noauto.patch
new file mode 100644 (file)
index 0000000..a2b1ba3
--- /dev/null
@@ -0,0 +1,129 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 25 Dec 2013 23:20:57 -0500
+Subject: man: document fail/nofail, auto/noauto
+
+Also s/filesystem/file system/ in a few places.
+
+Conflicts:
+       TODO
+       man/systemd-fsck@.service.xml
+       man/systemd-fstab-generator.xml
+---
+ man/systemd-fsck@.service.xml   |  5 ++++-
+ man/systemd-fstab-generator.xml |  6 ++++++
+ man/systemd-halt.service.xml    |  2 +-
+ man/systemd.mount.xml           | 20 +++++++++++++++++++-
+ man/systemd.unit.xml            |  2 +-
+ man/udevadm.xml                 |  2 +-
+ 6 files changed, 32 insertions(+), 5 deletions(-)
+
+diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
+index e934352..c653dc5 100644
+--- a/man/systemd-fsck@.service.xml
++++ b/man/systemd-fsck@.service.xml
+@@ -62,7 +62,10 @@
+                 system
+                 check. <filename>systemd-fsck-root.service</filename> is
+                 responsible for file system checks on the root
+-                file system.</para>
++                file system. The root file system check is performed
++                before the other file systems. Either service is enabled
++                at boot if passno in <filename>/etc/fstab</filename> for
++                the file system is set to a value greater than zero.</para>
+                 <para><filename>systemd-fsck</filename> will
+                 forward file system checking progress to the
+diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml
+index 9ca16c7..e3cf5d2 100644
+--- a/man/systemd-fstab-generator.xml
++++ b/man/systemd-fstab-generator.xml
+@@ -61,6 +61,12 @@
+                 reloaded. This will instantiate mount and swap units
+                 as necessary.</para>
++                <para>The <varname>passno</varname> field is treated
++                like a simple boolean, and the ordering information is
++                discarded. However, if the root file system is
++                checked, it is checked before all the other
++                file systems.</para>
++
+                 <para>See
+                 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+                 and
+diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
+index 99457aa..bec2e36 100644
+--- a/man/systemd-halt.service.xml
++++ b/man/systemd-halt.service.xml
+@@ -86,7 +86,7 @@
+                 <para>It is necessary to have this code in a separate binary
+                 because otherwise rebooting after an upgrade might be broken —
+                 the running PID 1 could still depend on libraries which are not
+-                available any more, thus keeping the filesystem busy, which
++                available any more, thus keeping the file system busy, which
+                 then cannot be re-mounted read-only.</para>
+                 <para>Immediately before executing the actual system
+diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
+index 6f9f70c..cadf950 100644
+--- a/man/systemd.mount.xml
++++ b/man/systemd.mount.xml
+@@ -132,7 +132,10 @@
+                 for details). Mounts listed in
+                 <filename>/etc/fstab</filename> will be converted into
+                 native units dynamically at boot and when the
+-                configuration of the system manager is reloaded. See
++                configuration of the system manager is reloaded. In
++                general, configuring mount points through
++                <filename>/etc/fstab</filename> is the preferred
++                approach. See
+                 <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+                 for details about the conversion.</para>
+@@ -159,6 +162,21 @@
+                 <literal>s</literal>, <literal>min</literal>,
+                 <literal>h</literal>, <literal>ms</literal>.</para>
++                <para>If <option>nofail</option> is given, this mount
++                will be only wanted, not required, by the
++                <filename>local-fs.target</filename>. This means that
++                the boot will continue even if this mount point is not
++                mounted successfully. Option <option>fail</option> has
++                the opposite meaning and is the default.</para>
++
++                <para>If <option>noauto</option> is given, this mount
++                will not be added as a dependency for
++                <filename>local-fs.target</filename>. This means that
++                it will not be mounted automatically during boot,
++                unless it is pulled in by some other unit. Option
++                <option>auto</option> has the opposite meaning and is
++                the default.</para>
++
+                 <para>If a mount point is configured in both
+                 <filename>/etc/fstab</filename> and a unit file that
+                 is stored below <filename>/usr</filename>, the former
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index f6b4b24..4704352 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -232,7 +232,7 @@
+                 multiple units from a single configuration file. If
+                 systemd looks for a unit configuration file, it will
+                 first search for the literal unit name in the
+-                filesystem. If that yields no success and the unit
++                file system. If that yields no success and the unit
+                 name contains an <literal>@</literal> character, systemd will look for a
+                 unit template that shares the same name but with the
+                 instance string (i.e. the part between the <literal>@</literal> character
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index a1ffe42..ca3713f 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -461,7 +461,7 @@
+         <varlistentry>
+           <term><option>--root=<replaceable>string</replaceable></option></term>
+           <listitem>
+-            <para>Alternative root path in the filesystem for reading and writing files.</para>
++            <para>Alternative root path in the file system for reading and writing files.</para>
+           </listitem>
+         </varlistentry>
+       </variablelist>
diff --git a/debian/patches/man-document-is-enabled-output.patch b/debian/patches/man-document-is-enabled-output.patch
new file mode 100644 (file)
index 0000000..f941ebc
--- /dev/null
@@ -0,0 +1,92 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 8 Dec 2013 18:56:16 -0500
+Subject: man: document 'is-enabled' output
+
+https://bugzilla.redhat.com/show_bug.cgi?id=953077
+(cherry picked from commit 171754aa4ae37a6ab626878256f7b664da78ef55)
+---
+ man/systemctl.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 59 insertions(+), 5 deletions(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 166282c..b4bc15d 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -437,7 +437,7 @@ systemctl start foo
+         <listitem>
+           <para>When used with <command>enable</command>,
+-          <command>disable</command>, <command>is-enabled</command>
++          <command>disable</command>,
+           (and related commands), make changes only temporarily, so
+           that they are lost on the next reboot. This will have the
+           effect that changes are not made in subdirectories of
+@@ -885,10 +885,64 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+           <listitem>
+             <para>Checks whether any of the specified unit files are
+-            enabled (as with <command>enable</command>). Returns an exit
+-            code of 0 if at least one is enabled, non-zero
+-            otherwise. Prints the current enable status. To suppress
+-            this output, use <option>--quiet</option>.</para>
++            enabled (as with <command>enable</command>). Returns an
++            exit code of 0 if at least one is enabled, non-zero
++            otherwise. Prints the current enable status (see table).
++            To suppress this output, use <option>--quiet</option>.
++            </para>
++
++            <table>
++              <title>
++                <command>is-enabled</command> output
++              </title>
++
++              <tgroup cols='3'>
++                <thead>
++                  <row>
++                    <entry>Printed string</entry>
++                    <entry>Meaning</entry>
++                    <entry>Return value</entry>
++                  </row>
++                </thead>
++                <tbody>
++                  <row>
++                    <entry><literal>enabled</literal></entry>
++                    <entry morerows='1'>Enabled through a symlink in <filename>.wants</filename> directory (permanently or just in <filename>/run</filename>)</entry>
++                    <entry morerows='1'>0</entry>
++                  </row>
++                  <row>
++                    <entry><literal>enabled-runtime</literal></entry>
++                  </row>
++                  <row>
++                    <entry><literal>linked</literal></entry>
++                    <entry morerows='1'>Made available through a symlink to the unit file (permanently or just in <filename>/run</filename>)</entry>
++                    <entry morerows='1'>1</entry>
++                  </row>
++                  <row>
++                    <entry><literal>linked-runtime</literal></entry>
++                  </row>
++                  <row>
++                    <entry><literal>masked</literal></entry>
++                    <entry morerows='1'>Disabled entirely (permanently or just in <filename>/run</filename>)</entry>
++                    <entry morerows='1'>1</entry>
++                  </row>
++                  <row>
++                    <entry><literal>masked-runtime</literal></entry>
++                  </row>
++                  <row>
++                    <entry><literal>static</literal></entry>
++                    <entry>Unit is not enabled, but has no provisions for enabling in [Install] section</entry>
++                    <entry>1</entry>
++                  </row>
++                  <row>
++                    <entry><literal>disabled</literal></entry>
++                    <entry>Unit is not enabled</entry>
++                    <entry>1</entry>
++                  </row>
++                </tbody>
++              </tgroup>
++            </table>
++
+           </listitem>
+         </varlistentry>
diff --git a/debian/patches/man-document-relationship-between-RequiresMountsFor-.patch b/debian/patches/man-document-relationship-between-RequiresMountsFor-.patch
new file mode 100644 (file)
index 0000000..5e9d68a
--- /dev/null
@@ -0,0 +1,48 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 16 Apr 2014 22:15:42 -0400
+Subject: man: document relationship between RequiresMountsFor and noauto
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1088057
+(cherry picked from commit 5d2abc04fc95f5c5f6d0eaf2f9b06c70d504019f)
+(cherry picked from commit b23daada46f67ae16bcf3686096dce186539f445)
+---
+ man/systemd.unit.xml | 25 +++++++++++++++++++------
+ 1 file changed, 19 insertions(+), 6 deletions(-)
+
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index 4704352..eb8b13d 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -675,13 +675,26 @@
+                         <varlistentry>
+                                 <term><varname>RequiresMountsFor=</varname></term>
+-                                <listitem><para>Takes a space-separated
+-                                list of absolute paths. Automatically
+-                                adds dependencies of type
+-                                <varname>Requires=</varname> and
+-                                <varname>After=</varname> for all
++                                <listitem><para>Takes a
++                                space-separated list of absolute
++                                paths. Automatically adds dependencies
++                                of type <varname>Requires=</varname>
++                                and <varname>After=</varname> for all
+                                 mount units required to access the
+-                                specified path.</para></listitem>
++                                specified path.</para>
++
++                                <para>Mount points marked with
++                                <option>noauto</option> are not
++                                mounted automatically and will be
++                                ignored for the purposes of this
++                                option. If such a mount should be a
++                                requirement for this unit,
++                                direct dependencies on the mount
++                                units may be added
++                                (<varname>Requires=</varname> and
++                                <varname>After=</varname> or
++                                some other combination).
++                                </para></listitem>
+                         </varlistentry>
+                         <varlistentry>
diff --git a/debian/patches/man-document-that-per-interface-sysctl-variables-are.patch b/debian/patches/man-document-that-per-interface-sysctl-variables-are.patch
new file mode 100644 (file)
index 0000000..a8b299c
--- /dev/null
@@ -0,0 +1,32 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Sun, 23 Feb 2014 16:43:19 +0100
+Subject: man: document that per-interface sysctl variables are applied as
+ network interfaces show up
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1062955
+(cherry picked from commit 8f03fd08911016d8bbcad5892b2c07b30a4c2306)
+---
+ man/sysctl.d.xml | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
+index 5544283..00a857b 100644
+--- a/man/sysctl.d.xml
++++ b/man/sysctl.d.xml
+@@ -103,6 +103,16 @@
+                 <filename>/dev/null</filename> in
+                 <filename>/etc/sysctl.d/</filename> bearing the
+                 same filename.</para>
++
++                <para>The settings configured with
++                <filename>sysctl.d</filename> files will be applied
++                early on boot. The network interface-specific options
++                will also be applied individually for each network
++                interface as it shows up in the system. (More
++                specifically, that is
++                <filename>net.ipv4.conf.*</filename>,
++                <filename>net.ipv6.conf.*</filename>,
++                <filename>net.ipv4.neigh.*</filename> and <filename>net.ipv6.neigh.*</filename>)</para>
+         </refsect1>
+         <refsect1>
diff --git a/debian/patches/man-document-the-b-special-boot-option.patch b/debian/patches/man-document-the-b-special-boot-option.patch
new file mode 100644 (file)
index 0000000..45bdf00
--- /dev/null
@@ -0,0 +1,33 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Tue, 15 Oct 2013 08:58:50 +0200
+Subject: man: document the -b special boot option
+
+---
+ man/kernel-command-line.xml | 1 +
+ man/systemd.xml             | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
+index cc267a3..abe68e5 100644
+--- a/man/kernel-command-line.xml
++++ b/man/kernel-command-line.xml
+@@ -123,6 +123,7 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><varname>-b</varname></term>
+                                 <term><varname>emergency</varname></term>
+                                 <term><varname>single</varname></term>
+                                 <term><varname>s</varname></term>
+diff --git a/man/systemd.xml b/man/systemd.xml
+index fe6e331..85c06d3 100644
+--- a/man/systemd.xml
++++ b/man/systemd.xml
+@@ -1149,6 +1149,7 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><varname>-b</varname></term>
+                                 <term><varname>emergency</varname></term>
+                                 <listitem><para>Boot into emergency
diff --git a/debian/patches/man-drop-reference-to-file-locking-for-PID-file-crea.patch b/debian/patches/man-drop-reference-to-file-locking-for-PID-file-crea.patch
new file mode 100644 (file)
index 0000000..a7a00eb
--- /dev/null
@@ -0,0 +1,28 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 16:15:56 +0900
+Subject: man: drop reference to file locking for PID file creation from
+ daemon(7)
+
+File locking is usually a bad idea, don't suggest using it.
+
+(cherry picked from commit c4b834a4adfa4f858ed9fd07b300588ec1c3e20e)
+(cherry picked from commit ab28d5c3ed99817a76607f88e99d6d60feaf22c2)
+---
+ man/daemon.xml | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 932de3b..170949e 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -158,9 +158,7 @@
+                                 it is verified at the same time that
+                                 the PID previously stored in the PID
+                                 file no longer exists or belongs to a
+-                                foreign process. Commonly, some kind of
+-                                file locking is employed to implement
+-                                this logic.</para></listitem>
++                                foreign process.</para></listitem>
+                                 <listitem><para>In the daemon process,
+                                 drop privileges, if possible and
diff --git a/debian/patches/man-expand-on-some-more-subtle-points-in-systemd.soc.patch b/debian/patches/man-expand-on-some-more-subtle-points-in-systemd.soc.patch
new file mode 100644 (file)
index 0000000..285786d
--- /dev/null
@@ -0,0 +1,120 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 30 Dec 2013 00:11:30 -0500
+Subject: man: expand on some more subtle points in systemd.socket(5)
+
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#1694
+(cherry picked from commit 3cf148f307e6450aa3411968f59a2563fe9cb154)
+---
+ man/systemd.socket.xml | 67 ++++++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 49 insertions(+), 18 deletions(-)
+
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index ac3127d..570a6fb 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -85,21 +85,26 @@
+                 processes of the socket.</para>
+                 <para>For each socket file a matching service file
+-                (see
++                must exist, describing the service to start on
++                incoming traffic on the socket (see
+                 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+-                for details) must exist, describing the service to
+-                start on incoming traffic on the socket. Depending on
+-                the setting of <option>Accept=</option> (see below),
+-                this must either be named like the socket unit, but
+-                with the suffix replaced; or it must be a template
+-                file named the same way. Example: a socket file
++                for more information about .service files). The name
++                of the .service unit is by default the same as the
++                name of the .socket unit, but can be altered with
++                <option>Service=</option> option described below.
++                Depending on the setting of <option>Accept=</option>
++                option described below, this .service unit must either
++                be named like the .socket unit, but with the suffix
++                replaced, unless overridden with
++                <option>Service=</option>; or it must be a template
++                unit named the same way. Example: a socket file
+                 <filename>foo.socket</filename> needs a matching
+                 service <filename>foo.service</filename> if
+                 <option>Accept=false</option> is set. If
+-                <option>Accept=true</option> is set, a service template
+-                file <filename>foo@.service</filename> must exist from
+-                which services are instantiated for each incoming
+-                connection.</para>
++                <option>Accept=true</option> is set, a service
++                template file <filename>foo@.service</filename> must
++                exist from which services are instantiated for each
++                incoming connection.</para>
+                 <para>Unless <varname>DefaultDependencies=</varname>
+                 is set to <option>false</option>, socket units will
+@@ -116,9 +121,21 @@
+                 boot or late system shutdown should disable this
+                 option.</para>
++              <para>Socket units will have a
++              <varname>Before=</varname> dependency on the service
++              which they trigger added implicitly. No implicit
++              <varname>WantedBy=</varname> or
++              <varname>RequiredBy=</varname> dependency from the
++              socket to the service is added. This means that the
++              service may be started without the socket, in which
++              case it must be able to open sockets by itself. To
++              prevent this, an explicit <varname>Requires=</varname>
++              dependency may be added.</para>
++
+                 <para>Socket units may be used to implement on-demand
+                 starting of services, as well as parallelized starting
+-                of services.</para>
++                of services. See the blog stories linked at the end
++                for introduction.</para>
+                 <para>Note that the daemon software configured for
+                 socket activation with socket units needs to be able
+@@ -221,12 +238,23 @@
+                                 of any of these options will have no
+                                 effect.</para>
++                                <para>It is also possible to have more
++                                than one socket unit for the same
++                                service when using
++                                <varname>Service=</varname>, and the
++                                service will receive all the sockets
++                                configured in all the socket units.
++                                Sockets configured in one unit are
++                                passed in the order of configuration,
++                                but no ordering between socket units
++                                is specified.</para>
++
+                                 <para>If an IP address is used here,
+                                 it is often desirable to listen on it
+                                 before the interface it is configured
+                                 on is up and running, and even
+                                 regardless of whether it will be up and
+-                                running ever at all. To deal with this
++                                running at any point. To deal with this
+                                 it is recommended to set the
+                                 <varname>FreeBind=</varname> option
+                                 described below.</para></listitem>
+@@ -687,11 +715,14 @@
+                                 <term><varname>Service=</varname></term>
+                                 <listitem><para>Specifies the service
+                                 unit name to activate on incoming
+-                                traffic. This defaults to the service
+-                                that bears the same name as the socket
+-                                (ignoring the different suffixes). In
+-                                most cases it should not be necessary
+-                                to use this option.</para></listitem>
++                                traffic. This setting is only allowed
++                                for sockets with
++                                <varname>Accept=no</varname>. It
++                                defaults to the service that bears the
++                                same name as the socket (with the
++                                suffix replaced). In most cases it
++                                should not be necessary to use this
++                                option.</para></listitem>
+                         </varlistentry>
+                 </variablelist>
diff --git a/debian/patches/man-explain-NAME-in-systemctl-man-page.patch b/debian/patches/man-explain-NAME-in-systemctl-man-page.patch
new file mode 100644 (file)
index 0000000..e610d3e
--- /dev/null
@@ -0,0 +1,32 @@
+From: =?utf-8?q?V=C3=A1clav_Pavl=C3=ADn?= <vpavlin@redhat.com>
+Date: Thu, 31 Oct 2013 14:36:41 +0100
+Subject: man: explain NAME in systemctl man page
+
+---
+ man/systemctl.xml | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index e789d4b..166282c 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -63,6 +63,19 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     introspect and control the state of the
+     <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     system and service manager.</para>
++
++    <para>For Unit Commands the <replaceable>NAME</replaceable> represents full name of unit.
++    <programlisting>
++systemctl start foo.service
++    </programlisting>
++    For Unit File Commands the <replaceable>NAME</replaceable> represents full name of the unit file, or absolute path to the unit file.
++    <programlisting>
++systemctl start /path/to/foo.service
++    </programlisting>
++    While working with services/service files, <command>systemctl</command> is able to append .service suffix when it is missing.
++    <programlisting>
++systemctl start foo
++    </programlisting></para>
+   </refsect1>
+   <refsect1>
diff --git a/debian/patches/man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch b/debian/patches/man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch
new file mode 100644 (file)
index 0000000..2f94737
--- /dev/null
@@ -0,0 +1,95 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 11 Dec 2013 18:38:51 +0100
+Subject: man: explain in more detail how SYSTEMD_READY= influences
+ SYSTEMD_WANTS= in udev rules
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1026860
+(cherry picked from commit 419173e60a05424008fcd312f6df4b59b2ce8e62)
+---
+ man/systemd.device.xml | 45 +++++++++++++++++++++++++++++++--------------
+ 1 file changed, 31 insertions(+), 14 deletions(-)
+
+diff --git a/man/systemd.device.xml b/man/systemd.device.xml
+index 96ebe89..002b647 100644
+--- a/man/systemd.device.xml
++++ b/man/systemd.device.xml
+@@ -70,12 +70,15 @@
+                 since no device-specific options may be
+                 configured.</para>
+-                <para>systemd will automatically create dynamic device
+-                units for all kernel devices that are marked with the
+-                "systemd" udev tag (by default all block and network
+-                devices, and a few others). This may be used to define
+-                dependencies between devices and other
+-                units.</para>
++                <para>systemd will dynamically create device units for
++                all kernel devices that are marked with the "systemd"
++                udev tag (by default all block and network devices,
++                and a few others). This may be used to define
++                dependencies between devices and other units. To tag a
++                udev device use <literal>TAG+="systemd"</literal> in
++                the udev rules file, see
++                <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++                for details.</para>
+                 <para>Device units are named after the
+                 <filename>/sys</filename> and
+@@ -93,7 +96,7 @@
+                 <para>The settings of device units may either be
+                 configured via unit files, or directly from the udev
+-                database (which is recommended). The following udev
++                database (which is recommended). The following udev device
+                 properties are understood by systemd:</para>
+                 <variablelist class='udev-directives'>
+@@ -101,16 +104,26 @@
+                                 <term><varname>SYSTEMD_WANTS=</varname></term>
+                                 <listitem><para>Adds dependencies of
+                                 type <varname>Wants</varname> from
+-                                this unit to all listed units. This
++                                the device unit to all listed units. This
+                                 may be used to activate arbitrary
+-                                units, when a specific device becomes
++                                units when a specific device becomes
+                                 available. Note that this and the
+                                 other tags are not taken into account
+                                 unless the device is tagged with the
+                                 <literal>systemd</literal> string in
+                                 the udev database, because otherwise
+                                 the device is not exposed as systemd
+-                                unit.</para></listitem>
++                                unit (see above). Note that systemd
++                                will only act on
++                                <varname>Wants</varname> dependencies
++                                when a device first becomes active, it
++                                will not act on them if they are added
++                                to devices that are already
++                                active. Use
++                                <varname>SYSTEMD_READY=</varname> (see
++                                below) to influence on which udev
++                                event to trigger the device
++                                dependencies.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+@@ -135,10 +148,14 @@
+                                 device disappears from the udev
+                                 tree. This option is useful to support
+                                 devices that initially show up in an
+-                                uninitialized state in the tree, and for
+-                                which a changed event is generated the
+-                                moment they are fully set
+-                                up.</para></listitem>
++                                uninitialized state in the tree, and
++                                for which a <literal>changed</literal>
++                                event is generated the moment they are
++                                fully set up. Note that
++                                <varname>SYSTEMD_WANTS=</varname> (see
++                                above) is not acted on as long as
++                                <varname>SYSTEMD_READY=0</varname> is
++                                set for a device.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
diff --git a/debian/patches/man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch b/debian/patches/man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch
new file mode 100644 (file)
index 0000000..63c8e99
--- /dev/null
@@ -0,0 +1,27 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 25 Mar 2014 00:10:41 +0100
+Subject: man: explain that the journal field SYSLOG_IDENTIFIER is usually
+ derived from program_invocation_short_name
+
+(cherry picked from commit d2753d220044892495769f7f9fca297cf86d01b9)
+(cherry picked from commit 265f023d76ad0be8cb830e8ee2c329e4ef8f1d40)
+---
+ man/systemd.journal-fields.xml | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
+index b492aae..42d209b 100644
+--- a/man/systemd.journal-fields.xml
++++ b/man/systemd.journal-fields.xml
+@@ -156,7 +156,10 @@
+                                         (formatted as decimal string),
+                                         the identifier string
+                                         (i.e. "tag"), and the client
+-                                        PID.</para>
++                                        PID. (Note that the tag is
++                                        usually derived from glibc's
++                                        <varname>program_invocation_short_name</varname>
++                                        variable, see <citerefentry><refentrytitle>program_invocation_short_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>.)</para>
+                                 </listitem>
+                         </varlistentry>
diff --git a/debian/patches/man-explicitly-say-when-multiple-units-can-be-specif.patch b/debian/patches/man-explicitly-say-when-multiple-units-can-be-specif.patch
new file mode 100644 (file)
index 0000000..8ab5e6b
--- /dev/null
@@ -0,0 +1,234 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 30 Nov 2013 21:23:01 -0500
+Subject: man: explicitly say when multiple units can be specified
+
+itistoday> how do you specify multiple dependencies in a unit file? i've been
+           googling and can't find this basic thing :-\
+itistoday> do you use a comma, or use multiple After= statements?
+---
+ man/systemd.unit.xml | 128 ++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 70 insertions(+), 58 deletions(-)
+
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index 5c8b8e8..029392c 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -410,10 +410,12 @@
+                                 of the other units gets deactivated or
+                                 its activation fails, this unit will
+                                 be deactivated. This option may be
+-                                specified more than once, in which
+-                                case requirement dependencies for all
+-                                listed names are created. Note that
+-                                requirement dependencies do not
++                                specified more than once or multiple
++                                space-separated units may be specified
++                                in one option in which case
++                                requirement dependencies for all
++                                listed names will be created. Note
++                                that requirement dependencies do not
+                                 influence the order in which services
+                                 are started or stopped. This has to be
+                                 configured independently with the
+@@ -476,22 +478,23 @@
+                                 <term><varname>RequisiteOverridable=</varname></term>
+                                 <listitem><para>Similar to
+-                                <varname>Requires=</varname>
+-                                and <varname>RequiresOverridable=</varname>, respectively. However,
+-                                if a unit listed here is not started
+-                                already it will not be started and the
+-                                transaction fails
+-                                immediately.</para></listitem>
++                                <varname>Requires=</varname> and
++                                <varname>RequiresOverridable=</varname>,
++                                respectively. However, if the units
++                                listed here are not started already
++                                they will not be started and the
++                                transaction will fail immediately.
++                                </para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+                                 <term><varname>Wants=</varname></term>
+                                 <listitem><para>A weaker version of
+-                                <varname>Requires=</varname>. A unit
++                                <varname>Requires=</varname>. Units
+                                 listed in this option will be started
+                                 if the configuring unit is. However,
+-                                if the listed unit fails to start up
++                                if the listed units fail to start
+                                 or cannot be added to the transaction
+                                 this has no impact on the validity of
+                                 the transaction as a whole. This is
+@@ -501,8 +504,8 @@
+                                 <para>Note that dependencies of this
+                                 type may also be configured outside of
+-                                the unit configuration file by
+-                                adding a symlink to a
++                                the unit configuration file by adding
++                                symlinks to a
+                                 <filename>.wants/</filename> directory
+                                 accompanying the unit file. For
+                                 details see above.</para></listitem>
+@@ -534,7 +537,7 @@
+                                 of units. When systemd stops or restarts
+                                 the units listed here, the action is
+                                 propagated to this unit.
+-                                Note that this is a one way dependency -
++                                Note that this is a one way dependency —
+                                 changes to this unit do not affect the
+                                 listed units.
+                                 </para></listitem>
+@@ -543,12 +546,12 @@
+                         <varlistentry>
+                                 <term><varname>Conflicts=</varname></term>
+-                                <listitem><para>Configures negative
++                                <listitem><para>A space-separated list
++                                of unit names. Configures negative
+                                 requirement dependencies. If a unit
+-                                has a
+-                                <varname>Conflicts=</varname> setting
+-                                on another unit, starting the former
+-                                will stop the latter and vice
++                                has a <varname>Conflicts=</varname>
++                                setting on another unit, starting the
++                                former will stop the latter and vice
+                                 versa. Note that this setting is
+                                 independent of and orthogonal to the
+                                 <varname>After=</varname> and
+@@ -575,7 +578,8 @@
+                                 <term><varname>Before=</varname></term>
+                                 <term><varname>After=</varname></term>
+-                                <listitem><para>Configures ordering
++                                <listitem><para>A space-separated list
++                                of unit names. Configures ordering
+                                 dependencies between units. If a unit
+                                 <filename>foo.service</filename>
+                                 contains a setting
+@@ -624,18 +628,18 @@
+                                 type <varname>After=</varname> or
+                                 <varname>Before=</varname>. If two
+                                 units have no ordering dependencies
+-                                between them, they are shut down
+-                                or started up simultaneously, and
+-                                no ordering takes
++                                between them, they are shut down or
++                                started up simultaneously, and no
++                                ordering takes
+                                 place. </para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+                                 <term><varname>OnFailure=</varname></term>
+-                                <listitem><para>Lists one or more
+-                                units that are activated when this
+-                                unit enters the
++                                <listitem><para>A space-separated list
++                                of one or more units that are
++                                activated when this unit enters the
+                                 <literal>failed</literal>
+                                 state.</para></listitem>
+                         </varlistentry>
+@@ -644,16 +648,17 @@
+                                 <term><varname>PropagatesReloadTo=</varname></term>
+                                 <term><varname>ReloadPropagatedFrom=</varname></term>
+-                                <listitem><para>Lists one or more
+-                                units where reload requests on the
+-                                unit will be propagated to/on the
+-                                other unit will be propagated
+-                                from. Issuing a reload request on a
+-                                unit will automatically also enqueue a
+-                                reload request on all units that the
+-                                reload request shall be propagated to
+-                                via these two
+-                                settings.</para></listitem>
++                                <listitem><para>A space-separated list
++                                of one or more units where reload
++                                requests on this unit will be
++                                propagated to, or reload requests on
++                                the other unit will be propagated to
++                                this unit, respectively. Issuing a
++                                reload request on a unit will
++                                automatically also enqueue a reload
++                                request on all units that the reload
++                                request shall be propagated to via
++                                these two settings.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+@@ -1089,32 +1094,34 @@
+                         <varlistentry>
+                                 <term><varname>Alias=</varname></term>
+-                                <listitem><para>Additional names this
+-                                unit shall be installed under. The
+-                                names listed here must have the same
+-                                suffix (i.e. type) as the unit file
+-                                name. This option may be specified
+-                                more than once, in which case all
+-                                listed names are used. At installation
+-                                time,
+-                                <command>systemctl enable</command>
+-                                will create symlinks from these names
+-                                to the unit filename.</para></listitem>
++                                <listitem><para>A space-seperated list
++                                of additional names this unit shall be
++                                installed under. The names listed here
++                                must have the same suffix (i.e. type)
++                                as the unit file name. This option may
++                                be specified more than once, in which
++                                case all listed names are used. At
++                                installation time, <command>systemctl
++                                enable</command> will create symlinks
++                                from these names to the unit
++                                filename.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+                                 <term><varname>WantedBy=</varname></term>
+                                 <term><varname>RequiredBy=</varname></term>
+-                                <listitem><para>A symbolic link is
+-                                created in the
+-                                <filename>.wants/</filename> or
+-                                <filename>.requires/</filename> directory
+-                                of the listed unit when this unit is
+-                                activated by <command>systemctl
+-                                enable</command>.  This has the effect
+-                                that a dependency of type
+-                                <varname>Wants=</varname> or
++                                <listitem><para>This option may be
++                                used more than once, or a
++                                space-separated list of unit names may
++                                be given. A symbolic link is created
++                                in the <filename>.wants/</filename> or
++                                <filename>.requires/</filename>
++                                directory of each of the listed units
++                                when this unit is installed by
++                                <command>systemctl enable</command>.
++                                This has the effect that a dependency
++                                of type <varname>Wants=</varname> or
+                                 <varname>Requires=</varname> is added
+                                 from the listed unit to the current
+                                 unit. The primary result is that the
+@@ -1160,7 +1167,12 @@
+                                 and <command>systemctl
+                                 disable</command> will automatically
+                                 install/uninstall units listed in this option as
+-                                well.</para></listitem>
++                                well.</para>
++
++                                <para>This option may be used more
++                                than once, or a space-separated list
++                                of unit names may be
++                                given.</para></listitem>
+                         </varlistentry>
+                 </variablelist>
diff --git a/debian/patches/man-fix-Type-reference-v2.patch b/debian/patches/man-fix-Type-reference-v2.patch
new file mode 100644 (file)
index 0000000..e3907b8
--- /dev/null
@@ -0,0 +1,36 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 27 Dec 2013 01:18:39 -0500
+Subject: man: fix Type= reference v2
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+grawity:
+
+  It looks like the old version _was_ correct – the default value will
+  be "Type=dbus" if the service has a BusName set.
+
+  Suggested change: "if neither Type= nor BusName= is specified"
+---
+ man/systemd.service.xml | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 898c19d..71bcfb4 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -139,9 +139,11 @@
+                                 <para>If set to
+                                 <option>simple</option> (the default
+-                                value if <varname>Type=</varname>
+-                                is not specified), it is expected that
+-                                the process configured with
++                                value if neither
++                                <varname>Type=</varname> nor
++                                <varname>BusName=</varname> are
++                                specified), it is expected that the
++                                process configured with
+                                 <varname>ExecStart=</varname> is the
+                                 main process of the service. In this
+                                 mode, if the process offers
diff --git a/debian/patches/man-fix-Type-reference.patch b/debian/patches/man-fix-Type-reference.patch
new file mode 100644 (file)
index 0000000..84a7eb5
--- /dev/null
@@ -0,0 +1,22 @@
+From: Marcos Felipe Rasia de Mello <marcosfrm@gmail.com>
+Date: Thu, 26 Dec 2013 17:47:57 -0200
+Subject: man: fix Type= reference
+
+Simple man page fix attached.
+---
+ man/systemd.service.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index e3a370f..898c19d 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -139,7 +139,7 @@
+                                 <para>If set to
+                                 <option>simple</option> (the default
+-                                value if <varname>BusName=</varname>
++                                value if <varname>Type=</varname>
+                                 is not specified), it is expected that
+                                 the process configured with
+                                 <varname>ExecStart=</varname> is the
diff --git a/debian/patches/man-fix-another-reference-in-systemd-inhibit-1.patch b/debian/patches/man-fix-another-reference-in-systemd-inhibit-1.patch
new file mode 100644 (file)
index 0000000..fa8046a
--- /dev/null
@@ -0,0 +1,23 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 9 Feb 2014 01:34:20 -0500
+Subject: man: fix another reference in systemd-inhibit(1)
+
+http://bugs.debian.org/738316
+(cherry picked from commit bbf261b75fda04ea6c1278d5e427f7c47eea9a6b)
+---
+ man/systemd-inhibit.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd-inhibit.xml b/man/systemd-inhibit.xml
+index cac0ef6..f915fb8 100644
+--- a/man/systemd-inhibit.xml
++++ b/man/systemd-inhibit.xml
+@@ -158,7 +158,7 @@
+                                 time elapses, the lock is ignored and
+                                 the operation executed. The time limit
+                                 may be specified in
+-                                <citerefentry><refentrytitle>systemd-logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Note
++                                <citerefentry><refentrytitle>logind.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Note
+                                 that <literal>delay</literal> is only
+                                 available for <literal>sleep</literal>
+                                 and
diff --git a/debian/patches/man-fix-description-of-is-enabled-returned-value.patch b/debian/patches/man-fix-description-of-is-enabled-returned-value.patch
new file mode 100644 (file)
index 0000000..c06f24a
--- /dev/null
@@ -0,0 +1,21 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 24 Dec 2013 22:57:15 -0500
+Subject: man: fix description of is-enabled returned value
+
+---
+ man/systemctl.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 61deb19..25b03d8 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -932,7 +932,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+                   <row>
+                     <entry><literal>static</literal></entry>
+                     <entry>Unit is not enabled, but has no provisions for enabling in [Install] section</entry>
+-                    <entry>1</entry>
++                    <entry>0</entry>
+                   </row>
+                   <row>
+                     <entry><literal>disabled</literal></entry>
diff --git a/debian/patches/man-fix-description-of-systemctl-after-before.patch b/debian/patches/man-fix-description-of-systemctl-after-before.patch
new file mode 100644 (file)
index 0000000..e27e39c
--- /dev/null
@@ -0,0 +1,28 @@
+From: Andrey Borzenkov <arvidjaar@gmail.com>
+Date: Fri, 21 Feb 2014 20:44:06 +0400
+Subject: man: fix description of systemctl --after/--before
+
+It was backward - --after fetches After property, so units shown really
+come *before* unit given as argument. Same for --before.
+
+(cherry picked from commit 4a77ca700d1841c2b8a86ed5b7f3495db61c236d)
+(cherry picked from commit ba7a578a5d2789e86f046c99edec6d517a2c2fcb)
+---
+ man/systemctl.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index d4048a8..03f2bc5 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -176,8 +176,8 @@ systemctl start foo
+         <term><option>--before</option></term>
+         <listitem>
+-          <para>Show which units are started after or before
+-          with <command>list-dependencies</command>, respectively.
++          <para>Show after (before) which units the specified unit is started
++          with <command>list-dependencies</command>.
+           </para>
+         </listitem>
+       </varlistentry>
diff --git a/debian/patches/man-fix-grammatical-errors-and-other-formatting-issu.patch b/debian/patches/man-fix-grammatical-errors-and-other-formatting-issu.patch
new file mode 100644 (file)
index 0000000..79b8f1f
--- /dev/null
@@ -0,0 +1,877 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Thu, 13 Feb 2014 20:25:23 -0500
+Subject: man: fix grammatical errors and other formatting issues
+
+* standardize capitalization of STDIN, STDOUT, and STDERR
+* reword some sentences for clarity
+* reflow some very long lines to be shorter than ~80 characters
+* add some missing <literal>, <constant>, <varname>, <option>, and <filename> tags
+
+(cherry picked from commit bcddd5bf8033b0c9cb15a9d017b7714ebe21473a)
+
+Conflicts:
+       man/systemd-bus-proxyd.xml
+       man/systemd.service.xml
+       man/udev.xml
+---
+ man/systemd-coredumpctl.xml   |   6 +-
+ man/systemd-udevd.service.xml |   5 +-
+ man/systemd.exec.xml          |   4 +-
+ man/systemd.service.xml       | 202 ++++++++++++++++++++++--------------------
+ man/udev.xml                  | 118 ++++++++++++++----------
+ man/udevadm.xml               |   2 +-
+ 6 files changed, 181 insertions(+), 156 deletions(-)
+
+diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml
+index 67f75d1..c096f6d 100644
+--- a/man/systemd-coredumpctl.xml
++++ b/man/systemd-coredumpctl.xml
+@@ -135,7 +135,7 @@
+                                 <listitem><para>Extract the last coredump
+                                 matching specified characteristics.
+-                                Coredump will be written on stdout, unless
++                                Coredump will be written on STDOUT, unless
+                                 an output file is specified with
+                                 <option>-o/--output</option>.
+                                 </para></listitem>
+@@ -200,8 +200,8 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success, 0 is returned, a non-zero failure
+-                code otherwise. Not finding any matching coredumps is treated
++                <para>On success, 0 is returned; otherwise, a non-zero failure
++                code is returned. Not finding any matching coredumps is treated
+                 as failure.
+                 </para>
+         </refsect1>
+diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml
+index 7fce300..50a1076 100644
+--- a/man/systemd-udevd.service.xml
++++ b/man/systemd-udevd.service.xml
+@@ -70,7 +70,7 @@
+       <varlistentry>
+         <term><option>--debug</option></term>
+         <listitem>
+-          <para>Print debug messages to stderr.</para>
++          <para>Print debug messages to STDERR.</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+@@ -82,7 +82,6 @@
+       <varlistentry>
+         <term><option>--exec-delay=</option></term>
+         <listitem>
+-
+           <para>Delay the execution of RUN instruction by the given
+           number of seconds. This option might be useful when
+           debugging system crashes during coldplug caused by loading
+@@ -158,7 +157,7 @@
+         <term><varname>net.ifnames=</varname></term>
+         <listitem>
+           <para>Network interfaces are renamed to give them predictable names
+-          when possible. It is enabled by default, specifying 0 disables it.</para>
++          when possible. It is enabled by default; specifying 0 disables it.</para>
+         </listitem>
+       </varlistentry>
+     </variablelist>
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index c8414d4..5ba1aac 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -491,8 +491,8 @@
+                         <varlistentry>
+                                 <term><varname>TTYPath=</varname></term>
+                                 <listitem><para>Sets the terminal
+-                                device node to use if standard input,
+-                                output or stderr are connected to a
++                                device node to use if STDIN, STDOUT,
++                                or STDERR are connected to a
+                                 TTY (see above). Defaults to
+                                 <filename>/dev/console</filename>.</para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index e8bb02c..d23904e 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -103,7 +103,7 @@
+                 script. This is useful for compatibility with
+                 SysV. Note that this compatibility is quite
+                 comprehensive but not 100%. For details about the
+-                incompatibilities see the <ulink
++                incompatibilities, see the <ulink
+                 url="http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities">Incompatibilities
+                 with SysV</ulink> document.
+                 </para>
+@@ -172,13 +172,13 @@
+                                 <varname>PIDFile=</varname> option, so
+                                 that systemd can identify the main
+                                 process of the daemon. systemd will
+-                                proceed starting follow-up units as
+-                                soon as the parent process
++                                proceed with starting follow-up units
++                                as soon as the parent process
+                                 exits.</para>
+                                 <para>Behavior of
+                                 <option>oneshot</option> is similar
+-                                to <option>simple</option>, however
++                                to <option>simple</option>; however,
+                                 it is expected that the process has to
+                                 exit before systemd starts follow-up
+                                 units. <varname>RemainAfterExit=</varname>
+@@ -187,13 +187,13 @@
+                                 <para>Behavior of
+                                 <option>dbus</option> is similar to
+-                                <option>simple</option>, however it is
++                                <option>simple</option>; however, it is
+                                 expected that the daemon acquires a
+                                 name on the D-Bus bus, as configured
+                                 by
+                                 <varname>BusName=</varname>. systemd
+-                                will proceed starting follow-up units
+-                                after the D-Bus bus name has been
++                                will proceed with starting follow-up
++                                units after the D-Bus bus name has been
+                                 acquired. Service units with this
+                                 option configured implicitly gain
+                                 dependencies on the
+@@ -204,12 +204,12 @@
+                                 <para>Behavior of
+                                 <option>notify</option> is similar to
+-                                <option>simple</option>, however it is
++                                <option>simple</option>; however, it is
+                                 expected that the daemon sends a
+                                 notification message via
+                                 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+-                                or an equivalent call when it finished
+-                                starting up. systemd will proceed
++                                or an equivalent call when it has finished
++                                starting up. systemd will proceed with
+                                 starting follow-up units after this
+                                 notification message has been sent. If
+                                 this option is used,
+@@ -227,7 +227,7 @@
+                                 <para>Behavior of
+                                 <option>idle</option> is very similar
+-                                to <option>simple</option>, however
++                                to <option>simple</option>; however,
+                                 actual execution of the service
+                                 binary is delayed until all jobs are
+                                 dispatched. This may be used to avoid
+@@ -260,7 +260,7 @@
+                                 is set and <option>PIDFile=</option>
+                                 is unset because for the other types
+                                 or with an explicitly configured PID
+-                                file the main PID is always known. The
++                                file, the main PID is always known. The
+                                 guessing algorithm might come to
+                                 incorrect conclusions if a daemon
+                                 consists of more than one process. If
+@@ -292,14 +292,13 @@
+                                 <term><varname>BusName=</varname></term>
+                                 <listitem><para>Takes a D-Bus bus
+-                                name, that this service is reachable
++                                name that this service is reachable
+                                 as. This option is mandatory for
+                                 services where
+                                 <varname>Type=</varname> is set to
+                                 <option>dbus</option>, but its use
+-                                is otherwise recommended as well if
+-                                the process takes a name on the D-Bus
+-                                bus.</para>
++                                is otherwise recommended if the process
++                                takes a name on the D-Bus bus.</para>
+                                 </listitem>
+                         </varlistentry>
+@@ -318,7 +317,7 @@
+                                 <varname>Type=oneshot</varname> is
+                                 used, more than one command may be
+                                 specified. Multiple command lines may
+-                                be concatenated in a single directive,
++                                be concatenated in a single directive
+                                 by separating them with semicolons
+                                 (these semicolons must be passed as
+                                 separate words). Alternatively, this
+@@ -362,12 +361,12 @@
+                                 <para>If more than one command is
+                                 specified, the commands are invoked
+-                                one by one sequentially in the order
+-                                they appear in the unit file. If one
+-                                of the commands fails (and is not
+-                                prefixed with <literal>-</literal>),
+-                                other lines are not executed and the
+-                                unit is considered failed.</para>
++                                sequentially in the order they appear
++                                in the unit file. If one of the
++                                commands fails (and is not prefixed
++                                with <literal>-</literal>), other lines
++                                are not executed, and the unit is
++                                considered failed.</para>
+                                 <para>Unless
+                                 <varname>Type=forking</varname> is
+@@ -387,7 +386,7 @@
+                                 <para>Basic environment variable
+                                 substitution is supported. Use
+                                 <literal>${FOO}</literal> as part of a
+-                                word, or as a word of its own on the
++                                word, or as a word of its own, on the
+                                 command line, in which case it will be
+                                 replaced by the value of the
+                                 environment variable including all
+@@ -410,12 +409,12 @@
+                                 fashion may be defined through
+                                 <varname>Environment=</varname> and
+                                 <varname>EnvironmentFile=</varname>.
+-                                In addition, variables listed in
++                                In addition, variables listed in the
+                                 section "Environment variables in
+                                 spawned processes" in
+-                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+                                 which are considered "static
+-                                configuration" may used (this includes
++                                configuration", may be used (this includes
+                                 e.g. <varname>$USER</varname>, but not
+                                 <varname>$TERM</varname>).</para>
+@@ -447,10 +446,10 @@
+                                 <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"</programlisting>
+                                 <para>This will execute
+                                 <command>/bin/echo</command> two
+-                                times, each time with one argument,
++                                times, each time with one argument:
+                                 <literal>one</literal> and
+                                 <literal>two two</literal>,
+-                                respectively. Since two commands are
++                                respectively. Because two commands are
+                                 specified,
+                                 <varname>Type=oneshot</varname> must
+                                 be used.</para>
+@@ -512,8 +511,8 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 here following the same scheme as for
+                                 <varname>ExecStart=</varname>.</para>
+-                                <para>One additional special
+-                                environment variables is set: if known
++                                <para>One additional, special
++                                environment variable is set: if known,
+                                 <varname>$MAINPID</varname> is set to
+                                 the main process of the daemon, and
+                                 may be used for command lines like the
+@@ -532,15 +531,15 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 following the same scheme as described
+                                 for <varname>ExecStart=</varname>
+                                 above. Use of this setting is
+-                                optional. All processes remaining for
+-                                a service after the commands
+-                                configured in this option are run are
++                                optional. After the commands configured
++                                in this option are run, all processes
++                                remaining for a service are
+                                 terminated according to the
+                                 <varname>KillMode=</varname> setting
+                                 (see
+                                 <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>). If
+                                 this option is not specified, the
+-                                process is terminated right-away when
++                                process is terminated immediately when
+                                 service stop is requested. Specifier
+                                 and environment variable substitution
+                                 is supported (including
+@@ -586,15 +585,16 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 daemon service does not signal
+                                 start-up completion within the
+                                 configured time, the service will be
+-                                considered failed and be shut down
+-                                again.
++                                considered failed and will be shut
++                                down again.
+                                 Takes a unit-less value in seconds, or a
+                                 time span value such as "5min
+-                                20s". Pass 0 to disable the timeout
+-                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
+-                                manager configuration file, except when
+-                                <varname>Type=oneshot</varname> is
+-                                used in which case the timeout
++                                20s". Pass <literal>0</literal> to
++                                disable the timeout logic. Defaults to
++                                <varname>TimeoutStartSec=</varname> from
++                                the manager configuration file, except
++                                when <varname>Type=oneshot</varname> is
++                                used, in which case the timeout
+                                 is disabled by default.
+                                 </para></listitem>
+                         </varlistentry>
+@@ -603,17 +603,18 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 <term><varname>TimeoutStopSec=</varname></term>
+                                 <listitem><para>Configures the time to
+                                 wait for stop. If a service is asked
+-                                to stop but does not terminate in the
++                                to stop, but does not terminate in the
+                                 specified time, it will be terminated
+-                                forcibly via <constant>SIGTERM</constant>, and after
+-                                another delay of this time with
+-                                <constant>SIGKILL</constant> (See
++                                forcibly via <constant>SIGTERM</constant>,
++                                and after another timeout of equal duration
++                                with <constant>SIGKILL</constant> (see
+                                 <varname>KillMode=</varname>
+                                 in <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
+                                 Takes a unit-less value in seconds, or a
+                                 time span value such as "5min
+-                                20s". Pass 0 to disable the timeout
+-                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
++                                20s". Pass <literal>0</literal> to disable
++                                the timeout logic. Defaults to
++                                <varname>TimeoutStartSec=</varname> from the
+                                 manager configuration file.
+                                 </para></listitem>
+                         </varlistentry>
+@@ -634,11 +635,11 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 watchdog is activated when the start-up is
+                                 completed. The service must call
+                                 <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+-                                regularly with "WATCHDOG=1" (i.e. the
+-                                "keep-alive ping"). If the time
++                                regularly with <literal>WATCHDOG=1</literal>
++                                (i.e. the "keep-alive ping"). If the time
+                                 between two such calls is larger than
+                                 the configured time, then the service
+-                                is placed in a failure state. By
++                                is placed in a failed state. By
+                                 setting <varname>Restart=</varname> to
+                                 <option>on-failure</option> or
+                                 <option>always</option>, the service
+@@ -669,8 +670,8 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 service process exits, is killed,
+                                 or a timeout is reached. The service
+                                 process may be the main service
+-                                process, but also one of the processes
+-                                specified with
++                                process, but it may also be one of the
++                                processes specified with
+                                 <varname>ExecStartPre=</varname>,
+                                 <varname>ExecStartPost=</varname>,
+                                 <varname>ExecStopPre=</varname>,
+@@ -698,12 +699,15 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 exits cleanly.
+                                 In this context, a clean exit means
+                                 an exit code of 0, or one of the signals
+-                                <constant>SIGHUP</constant>, <constant>SIGINT</constant>, <constant>SIGTERM</constant>, or <constant>SIGPIPE</constant>, and
++                                <constant>SIGHUP</constant>,
++                                <constant>SIGINT</constant>,
++                                <constant>SIGTERM</constant>,
++                                or <constant>SIGPIPE</constant>, and
+                                 additionally, exit statuses and signals
+                                 specified in <varname>SuccessExitStatus=</varname>.
+                                 If set to <option>on-failure</option>,
+                                 the service will be restarted when the
+-                                process exits with an nonzero exit code,
++                                process exits with a non-zero exit code,
+                                 is terminated by a signal (including on
+                                 core dump), when an operation (such as
+                                 service reload) times out, and when the
+@@ -722,7 +726,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 <option>always</option>, the service
+                                 will be restarted regardless of whether
+                                 it exited cleanly or not, got
+-                                terminated abnormally by a signal or
++                                terminated abnormally by a signal, or
+                                 hit a timeout.</para>
+                                 <para>In addition to the above settings,
+@@ -774,7 +778,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 <listitem><para>Takes a list of exit
+                                 status definitions that when returned
+                                 by the main service process will
+-                                prevent automatic service restarts
++                                prevent automatic service restarts,
+                                 regardless of the restart setting
+                                 configured with
+                                 <varname>Restart=</varname>. Exit
+@@ -782,19 +786,20 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 numeric exit codes or termination
+                                 signal names, and are separated by
+                                 spaces. Defaults to the empty list, so
+-                                that by default no exit status is
++                                that, by default, no exit status is
+                                 excluded from the configured restart
+                                 logic. Example:
+                                 <literal>RestartPreventExitStatus=1 6
+                                 SIGABRT</literal>, ensures that exit
+                                 codes 1 and 6 and the termination
+-                                signal SIGABRT will not result in
+-                                automatic service restarting. This
+-                                option may appear more than once in
+-                                which case the list of restart preventing
++                                signal <constant>SIGABRT</constant> will
++                                not result in automatic service
++                                restarting. This
++                                option may appear more than once, in
++                                which case the list of restart-preventing
+                                 statuses is merged. If the empty
+                                 string is assigned to this option, the
+-                                list is reset, all prior assignments
++                                list is reset and all prior assignments
+                                 of this option will have no
+                                 effect.</para></listitem>
+                         </varlistentry>
+@@ -802,20 +807,20 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                         <varlistentry>
+                                 <term><varname>PermissionsStartOnly=</varname></term>
+                                 <listitem><para>Takes a boolean
+-                                argument. If true, the permission
+-                                related execution options as
++                                argument. If true, the permission-related
++                                execution options, as
+                                 configured with
+                                 <varname>User=</varname> and similar
+                                 options (see
+                                 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+-                                for more information) are only applied
++                                for more information), are only applied
+                                 to the process started with
+                                 <varname>ExecStart=</varname>, and not
+                                 to the various other
+                                 <varname>ExecStartPre=</varname>,
+                                 <varname>ExecStartPost=</varname>,
+                                 <varname>ExecReload=</varname>,
+-                                <varname>ExecStop=</varname>,
++                                <varname>ExecStop=</varname>, and
+                                 <varname>ExecStopPost=</varname>
+                                 commands. If false, the setting is
+                                 applied to all configured commands the
+@@ -826,19 +831,19 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                         <varlistentry>
+                                 <term><varname>RootDirectoryStartOnly=</varname></term>
+                                 <listitem><para>Takes a boolean
+-                                argument. If true, the root directory
++                                argument. If true, the root directory,
+                                 as configured with the
+                                 <varname>RootDirectory=</varname>
+                                 option (see
+                                 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+-                                for more information) is only applied
++                                for more information), is only applied
+                                 to the process started with
+                                 <varname>ExecStart=</varname>, and not
+                                 to the various other
+                                 <varname>ExecStartPre=</varname>,
+                                 <varname>ExecStartPost=</varname>,
+                                 <varname>ExecReload=</varname>,
+-                                <varname>ExecStop=</varname>,
++                                <varname>ExecStop=</varname>, and
+                                 <varname>ExecStopPost=</varname>
+                                 commands. If false, the setting is
+                                 applied to all configured commands the
+@@ -848,12 +853,14 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                         <varlistentry>
+                                 <term><varname>NonBlocking=</varname></term>
+-                                <listitem><para>Set O_NONBLOCK flag
++                                <listitem><para>Set the
++                                <constant>O_NONBLOCK</constant> flag
+                                 for all file descriptors passed via
+                                 socket-based activation. If true, all
+                                 file descriptors >= 3 (i.e. all except
+                                 STDIN/STDOUT/STDERR) will have
+-                                the O_NONBLOCK flag set and hence are in
++                                the <constant>O_NONBLOCK</constant> flag
++                                set and hence are in
+                                 non-blocking mode. This option is only
+                                 useful in conjunction with a socket
+                                 unit, as described in
+@@ -909,8 +916,8 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 passed to multiple processes at the
+                                 same time. Also note that a different
+                                 service may be activated on incoming
+-                                traffic than inherits the sockets. Or
+-                                in other words: the
++                                traffic than that which inherits the
++                                sockets. Or in other words: the
+                                 <varname>Service=</varname> setting of
+                                 <filename>.socket</filename> units
+                                 does not have to match the inverse of
+@@ -923,7 +930,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 once, in which case the list of socket
+                                 units is merged. If the empty string
+                                 is assigned to this option, the list of
+-                                sockets is reset, all prior uses of
++                                sockets is reset, and all prior uses of
+                                 this setting will have no
+                                 effect.</para></listitem>
+                         </varlistentry>
+@@ -934,10 +941,10 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 <listitem><para>Configure service
+                                 start rate limiting. By default,
+-                                services which are started more often
+-                                than 5 times within 10s are not
++                                services which are started more
++                                than 5 times within 10 seconds are not
+                                 permitted to start any more times
+-                                until the 10s interval ends. With
++                                until the 10 second interval ends. With
+                                 these two options, this rate limiting
+                                 may be modified. Use
+                                 <varname>StartLimitInterval=</varname>
+@@ -952,18 +959,18 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 manager configuration file). These
+                                 configuration options are particularly
+                                 useful in conjunction with
+-                                <varname>Restart=</varname>, however
+-                                apply to all kinds of starts
++                                <varname>Restart=</varname>; however,
++                                they apply to all kinds of starts
+                                 (including manual), not just those
+                                 triggered by the
+                                 <varname>Restart=</varname> logic.
+                                 Note that units which are configured
+                                 for <varname>Restart=</varname> and
+                                 which reach the start limit are not
+-                                attempted to be restarted anymore,
+-                                however they may still be restarted
+-                                manually at a later point from which
+-                                point on the restart logic is again
++                                attempted to be restarted anymore;
++                                however, they may still be restarted
++                                manually at a later point, from which
++                                point on, the restart logic is again
+                                 activated. Note that
+                                 <command>systemctl
+                                 reset-failed</command> will cause the
+@@ -987,18 +994,17 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 hit. Takes one of
+                                 <option>none</option>,
+                                 <option>reboot</option>,
+-                                <option>reboot-force</option> or
++                                <option>reboot-force</option>, or
+                                 <option>reboot-immediate</option>. If
+                                 <option>none</option> is set,
+                                 hitting the rate limit will trigger no
+                                 action besides that the start will not
+-                                be
+-                                permitted. <option>reboot</option>
++                                be permitted. <option>reboot</option>
+                                 causes a reboot following the normal
+                                 shutdown procedure (i.e. equivalent to
+-                                <command>systemctl reboot</command>),
++                                <command>systemctl reboot</command>).
+                                 <option>reboot-force</option> causes
+-                                an forced reboot which will terminate
++                                a forced reboot which will terminate
+                                 all processes forcibly but should
+                                 cause no dirty file systems on reboot
+                                 (i.e. equivalent to <command>systemctl
+@@ -1007,7 +1013,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 causes immediate execution of the
+                                 <citerefentry><refentrytitle>reboot</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+                                 system call, which might result in
+-                                data loss.  Defaults to
++                                data loss. Defaults to
+                                 <option>none</option>.</para></listitem>
+                         </varlistentry>
+@@ -1037,19 +1043,19 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 in relation to SysV services lacking
+                                 LSB headers. This option is only
+                                 necessary to fix ordering in relation
+-                                to legacy SysV services, that have no
++                                to legacy SysV services that have no
+                                 ordering information encoded in the
+-                                script headers. As such it should only
+-                                be used as temporary compatibility
+-                                option, and not be used in new unit
+-                                files. Almost always it is a better
++                                script headers. As such, it should only
++                                be used as a temporary compatibility
++                                option and should not be used in new unit
++                                files. Almost always, it is a better
+                                 choice to add explicit ordering
+                                 directives via
+                                 <varname>After=</varname> or
+                                 <varname>Before=</varname>,
+-                                instead. For more details see
+-                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. If
+-                                used, pass an integer value in the
++                                instead. For more details, see
++                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++                                If used, pass an integer value in the
+                                 range 0-99.</para></listitem>
+                         </varlistentry>
+diff --git a/man/udev.xml b/man/udev.xml
+index f107482..82e7478 100644
+--- a/man/udev.xml
++++ b/man/udev.xml
+@@ -255,9 +255,9 @@
+             <para>Execute a program to determine whether there
+             is a match; the key is true if the program returns
+             successfully. The device properties are made available to the
+-            executed program in the environment. The program's stdout
+-            is available in the RESULT key.</para>
+-            <para>This can only be used for very short-running foreground tasks. For details
++            executed program in the environment. The program's STDOUT
++            is available in the <varname>RESULT</varname> key.</para>
++            <para>This can only be used for very short-running foreground tasks. For details,
+             see <varname>RUN</varname>.</para>
+           </listitem>
+         </varlistentry>
+@@ -265,8 +265,9 @@
+         <varlistentry>
+           <term><varname>RESULT</varname></term>
+           <listitem>
+-            <para>Match the returned string of the last PROGRAM call. This key can
+-            be used in the same or in any later rule after a PROGRAM call.</para>
++            <para>Match the returned string of the last <varname>PROGRAM</varname> call.
++            This key can be used in the same or in any later rule after a
++            <varname>PROGRAM</varname> call.</para>
+           </listitem>
+         </varlistentry>
+       </variablelist>
+@@ -293,9 +294,10 @@
+             example, the pattern string <literal>tty[SR]</literal>
+             would match either <literal>ttyS</literal> or <literal>ttyR</literal>.
+             Ranges are also supported via the <literal>-</literal> character.
+-            For example, to match on the range of all digits, the pattern [0-9] could
+-            be used. If the first character following the <literal>[</literal> is a
+-            <literal>!</literal>, any characters not enclosed are matched.</para>
++            For example, to match on the range of all digits, the pattern
++            <literal>[0-9]</literal> could be used. If the first character
++            following the <literal>[</literal> is a <literal>!</literal>,
++            any characters not enclosed are matched.</para>
+           </listitem>
+         </varlistentry>
+       </variablelist>
+@@ -353,7 +355,8 @@
+           <listitem>
+             <para>Set a device property value. Property names with a leading <literal>.</literal>
+             are neither stored in the database nor exported to events or
+-            external tools (run by, say, the PROGRAM match key).</para>
++            external tools (run by, for example, the <varname>PROGRAM</varname>
++            match key).</para>
+           </listitem>
+         </varlistentry>
+@@ -373,24 +376,26 @@
+         <varlistentry>
+           <term><varname>RUN{<replaceable>type</replaceable>}</varname></term>
+           <listitem>
+-            <para>Add a program to the list of programs to be executed after processing all the
+-            rules for a specific event, depending on <literal>type</literal>:</para>
++            <para>Add a program to the list of programs to be executed after
++            processing all the rules for a specific event, depending on
++            <literal>type</literal>:</para>
+             <variablelist>
+               <varlistentry>
+                 <term><literal>program</literal></term>
+                 <listitem>
+                   <para>Execute an external program specified as the assigned
+-                  value. If no absolute path is given, the program is expected to live in
+-                  /usr/lib/udev, otherwise the absolute path must be specified.</para>
+-                  <para>This is the default if no <replaceable>type</replaceable> is
+-                  specified.</para>
++                  value. If no absolute path is given, the program is expected
++                  to live in <filename>/usr/lib/udev</filename>; otherwise, the
++                  absolute path must be specified.</para>
++                  <para>This is the default if no <replaceable>type</replaceable>
++                  is specified.</para>
+                 </listitem>
+               </varlistentry>
+               <varlistentry>
+                 <term><literal>builtin</literal></term>
+                 <listitem>
+-                  <para>As <varname>program</varname>, but use one of the built-in programs rather
+-                  than an external one.</para>
++                  <para>As <varname>program</varname>, but use one of the
++                  built-in programs rather than an external one.</para>
+                 </listitem>
+               </varlistentry>
+             </variablelist>
+@@ -399,7 +404,7 @@
+             <para>This can only be used for very short-running foreground tasks. Running an
+             event process for a long period of time may block all further events for
+             this or a dependent device.</para>
+-            <para>Starting daemons or other long running processes is not appropriate
++            <para>Starting daemons or other long-running processes is not appropriate
+             for udev; the forked processes, detached or not, will be unconditionally
+             killed after the event handling has finished.</para>
+           </listitem>
+@@ -408,14 +413,14 @@
+         <varlistentry>
+           <term><varname>LABEL</varname></term>
+           <listitem>
+-            <para>A named label to which a GOTO may jump.</para>
++            <para>A named label to which a <varname>GOTO</varname> may jump.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term><varname>GOTO</varname></term>
+           <listitem>
+-            <para>Jumps to the next LABEL with a matching name.</para>
++            <para>Jumps to the next <varname>LABEL</varname> with a matching name.</para>
+           </listitem>
+         </varlistentry>
+@@ -518,21 +523,24 @@
+               <varlistentry>
+                 <term><option>static_node=</option></term>
+                 <listitem>
+-                  <para>Apply the permissions specified in this rule to the static device node with
+-                  the specified name. Also, for every tag specified in this rule, create a symlink
++                  <para>Apply the permissions specified in this rule to the
++                  static device node with the specified name. Also, for every
++                  tag specified in this rule, create a symlink
+                   in the directory
+                   <filename>/run/udev/static_node-tags/<replaceable>tag</replaceable></filename>
+-                  pointing at the static device node with the specified name. Static device node
+-                  creation is performed by systemd-tmpfiles before systemd-udevd is started. The
+-                  static nodes might not have a corresponding kernel device; they are used to
+-                  trigger automatic kernel module loading when they are accessed.</para>
++                  pointing at the static device node with the specified name.
++                  Static device node creation is performed by systemd-tmpfiles
++                  before systemd-udevd is started. The static nodes might not
++                  have a corresponding kernel device; they are used to trigger
++                  automatic kernel module loading when they are accessed.</para>
+                 </listitem>
+               </varlistentry>
+               <varlistentry>
+                 <term><option>watch</option></term>
+                 <listitem>
+-                  <para>Watch the device node with inotify; when the node is closed after being opened for
+-                  writing, a change uevent is synthesized.</para>
++                  <para>Watch the device node with inotify; when the node is
++                  closed after being opened for writing, a change uevent is
++                  synthesized.</para>
+                 </listitem>
+               </varlistentry>
+               <varlistentry>
+@@ -546,13 +554,15 @@
+         </varlistentry>
+       </variablelist>
+-      <para>The <varname>NAME</varname>, <varname>SYMLINK</varname>, <varname>PROGRAM</varname>,
+-      <varname>OWNER</varname>, <varname>GROUP</varname>, <varname>MODE</varname>  and  <varname>RUN</varname>
+-      fields support simple string substitutions. The <varname>RUN</varname>
+-      substitutions are performed after all rules have been processed, right before the program
+-      is executed, allowing for the use of device properties set by earlier matching
+-      rules. For all other fields, substitutions are performed while the individual rule is
+-      being processed. The available substitutions are:</para>
++      <para>The <varname>NAME</varname>, <varname>SYMLINK</varname>,
++      <varname>PROGRAM</varname>, <varname>OWNER</varname>,
++      <varname>GROUP</varname>, <varname>MODE</varname>, and
++      <varname>RUN</varname> fields support simple string substitutions.
++      The <varname>RUN</varname> substitutions are performed after all rules
++      have been processed, right before the program is executed, allowing for
++      the use of device properties set by earlier matching rules. For all other
++      fields, substitutions are performed while the individual rule is being
++      processed. The available substitutions are:</para>
+       <variablelist class='udev-directives'>
+         <varlistentry>
+           <term><option>$kernel</option>, <option>%k</option></term>
+@@ -565,7 +575,8 @@
+           <term><option>$number</option>, <option>%n</option></term>
+           <listitem>
+             <para>The kernel number for this device. For example,
+-            <literal>sda3</literal> has kernel number <literal>3</literal>.</para>
++              <literal>sda3</literal> has kernel number <literal>3</literal>.
++            </para>
+           </listitem>
+         </varlistentry>
+@@ -579,8 +590,9 @@
+         <varlistentry>
+           <term><option>$id</option>, <option>%b</option></term>
+           <listitem>
+-            <para>The name of the device matched while searching the devpath upwards for
+-              <option>SUBSYSTEMS</option>, <option>KERNELS</option>, <option>DRIVERS</option> and <option>ATTRS</option>.
++            <para>The name of the device matched while searching the devpath
++              upwards for <option>SUBSYSTEMS</option>, <option>KERNELS</option>,
++              <option>DRIVERS</option>, and <option>ATTRS</option>.
+             </para>
+           </listitem>
+         </varlistentry>
+@@ -588,8 +600,10 @@
+         <varlistentry>
+           <term><option>$driver</option></term>
+           <listitem>
+-            <para>The driver name of the device matched while searching the devpath upwards for
+-              <option>SUBSYSTEMS</option>, <option>KERNELS</option>, <option>DRIVERS</option> and <option>ATTRS</option>.
++            <para>The driver name of the device matched while searching the
++              devpath upwards for <option>SUBSYSTEMS</option>,
++              <option>KERNELS</option>, <option>DRIVERS</option>, and
++              <option>ATTRS</option>.
+             </para>
+           </listitem>
+         </varlistentry>
+@@ -598,12 +612,15 @@
+           <term><option>$attr{<replaceable>file</replaceable>}</option>, <option>%s{<replaceable>file</replaceable>}</option></term>
+           <listitem>
+             <para>The value of a sysfs attribute found at the device where
+-            all keys of the rule have matched. If the matching device does not have
+-            such an attribute, and a previous KERNELS, SUBSYSTEMS, DRIVERS, or
+-            ATTRS test selected a parent device, then the attribute from that
+-            parent device is used.</para>
+-            <para>If the attribute is a symlink, the last element of the symlink target is
+-            returned as the value.</para>
++              all keys of the rule have matched. If the matching device does not
++              have such an attribute, and a previous <option>KERNELS</option>,
++              <option>SUBSYSTEMS</option>, <option>DRIVERS</option>, or
++              <option>ATTRS</option> test selected a parent device, then the
++              attribute from that parent device is used.
++            </para>
++            <para>If the attribute is a symlink, the last element of the
++              symlink target is returned as the value.
++            </para>
+           </listitem>
+         </varlistentry>
+@@ -631,7 +648,8 @@
+         <varlistentry>
+           <term><option>$result</option>, <option>%c</option></term>
+           <listitem>
+-            <para>The string returned by the external program requested with PROGRAM.
++            <para>The string returned by the external program requested with
++            <varname>PROGRAM</varname>.
+             A single part of the string, separated by a space character, may be selected
+             by specifying the part number as an attribute: <literal>%c{N}</literal>.
+             If the number is followed by the <literal>+</literal> character, this part plus all remaining parts
+@@ -736,11 +754,13 @@
+   <refsect1>
+     <title>See Also</title>
+-    <para><citerefentry>
++    <para>
++      <citerefentry>
+         <refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum>
+       </citerefentry>,
+       <citerefentry>
+         <refentrytitle>udevadm</refentrytitle><manvolnum>8</manvolnum>
+-    </citerefentry></para>
++      </citerefentry>
++    </para>
+   </refsect1>
+ </refentry>
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index ca3713f..32bf480 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -72,7 +72,7 @@
+       <varlistentry>
+         <term><option>--debug</option></term>
+         <listitem>
+-          <para>Print debug messages to stderr.</para>
++          <para>Print debug messages to STDERR.</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
index 8c51fbfb982a2c2432cb1ca0fe1c38a5e0911aec..99b1d0a76dbf8e5921becae461780e59339f1219 100644 (file)
@@ -1,8 +1,9 @@
 From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 9 Feb 2014 06:34:20 +0000
+Date: Sun, 9 Feb 2014 01:34:20 -0500
 Subject: man: fix reference in systemd-inhibit(1)
 
 http://bugs.debian.org/738316
+(cherry picked from commit 07b4b9b82247c4eff88dc236bb248dcc8c155548)
 ---
  man/systemd-inhibit.xml | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debian/patches/man-fix-references-to-sd_journal_cutoff_realtime_use.patch b/debian/patches/man-fix-references-to-sd_journal_cutoff_realtime_use.patch
new file mode 100644 (file)
index 0000000..f6f0469
--- /dev/null
@@ -0,0 +1,34 @@
+From: =?utf-8?q?Mantas_Mikul=C4=97nas?= <grawity@gmail.com>
+Date: Mon, 2 Jun 2014 16:47:15 +0300
+Subject: man: fix references to sd_journal_cutoff_realtime_usec
+
+(cherry picked from commit d275b5296958446957e98ce61213f98519e11808)
+(cherry picked from commit 44045f883f3911ca1bcab36250bf66c0d24bc569)
+---
+ man/sd-journal.xml | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/man/sd-journal.xml b/man/sd-journal.xml
+index 832d584..83ee8f4 100644
+--- a/man/sd-journal.xml
++++ b/man/sd-journal.xml
+@@ -78,7 +78,8 @@
+                 <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                 <citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                 <citerefentry><refentrytitle>sd_journal_get_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+-                <citerefentry><refentrytitle>sd_journal_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++                <citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++                <citerefentry><refentrytitle>sd_journal_get_cutoff_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                 <citerefentry><refentrytitle>sd_journal_get_usage</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                 <citerefentry><refentrytitle>sd_journal_get_catalog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 and
+@@ -117,7 +118,8 @@
+                         <citerefentry><refentrytitle>sd_journal_add_match</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                         <citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                         <citerefentry><refentrytitle>sd_journal_get_cursor</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+-                        <citerefentry><refentrytitle>sd_journal_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>sd_journal_get_cutoff_realtime_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>sd_journal_get_cutoff_monotonic_usec</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                         <citerefentry><refentrytitle>sd_journal_get_usage</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                         <citerefentry><refentrytitle>sd_journal_get_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                         <citerefentry><refentrytitle>sd_journal_query_unique</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
diff --git a/debian/patches/man-fix-typo.patch b/debian/patches/man-fix-typo.patch
new file mode 100644 (file)
index 0000000..48d8962
--- /dev/null
@@ -0,0 +1,21 @@
+From: Ronny Chevalier <chevalier.ronny@gmail.com>
+Date: Sun, 3 Nov 2013 15:07:31 +0100
+Subject: man: fix typo
+
+---
+ man/systemd-run.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd-run.xml b/man/systemd-run.xml
+index e76a402..252335b 100644
+--- a/man/systemd-run.xml
++++ b/man/systemd-run.xml
+@@ -60,7 +60,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+   <refsect1>
+     <title>Description</title>
+-    <para><command>systemd-run</command> may be used create and start
++    <para><command>systemd-run</command> may be used to create and start
+     a transient <filename>.service</filename> or a
+     <filename>.scope</filename> unit and run the specified
+     <replaceable>COMMAND</replaceable> in it.</para>
diff --git a/debian/patches/man-grammar-and-wording-improvements.patch b/debian/patches/man-grammar-and-wording-improvements.patch
new file mode 100644 (file)
index 0000000..c0e17d6
--- /dev/null
@@ -0,0 +1,78 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Thu, 26 Dec 2013 02:47:45 +0100
+Subject: man: grammar and wording improvements
+
+This is a recurring submission and includes corrections to:
+- missing words, preposition choice.
+- change of /lib to /usr/lib, because that is what most distros are
+  using as the system-wide location for systemd/udev files.
+
+Conflicts:
+       man/journalctl.xml
+       man/sd_bus_message_get_cookie.xml
+       man/sd_bus_request_name.xml
+       man/systemctl.xml
+       man/systemd-networkd.service.xml
+       man/systemd.device.xml
+       man/systemd.exec.xml
+       man/systemd.timer.xml
+       man/udev.xml
+---
+ man/daemon.xml          | 2 +-
+ man/sd_is_fifo.xml      | 2 +-
+ man/systemd.service.xml | 2 +-
+ man/systemd.unit.xml    | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 7790420..1fe4546 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -408,7 +408,7 @@
+                         description files.</para>
+                         <para>In systemd, if the developer or
+-                        administrator wants to make sure a service or
++                        administrator wants to make sure that a service or
+                         other unit is activated automatically on boot,
+                         it is recommended to place a symlink to the
+                         unit file in the <filename>.wants/</filename>
+diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
+index 4bb2236..58cd1c9 100644
+--- a/man/sd_is_fifo.xml
++++ b/man/sd_is_fifo.xml
+@@ -165,7 +165,7 @@
+                 called to check whether the specified file descriptor
+                 refers to a special file. If the
+                 <parameter>path</parameter> parameter is not
+-                <constant>NULL</constant>, it is checked whether file
++                <constant>NULL</constant>, it is checked whether the file
+                 descriptor is bound to the specified file
+                 name. Special files in this context are character
+                 device nodes and files in <filename>/proc</filename>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index e869f95..e3a370f 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -427,7 +427,7 @@
+                                 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
+                                 </programlisting>
+-                                <para>Only select environment variables
++                                <para>Only select environment variables that
+                                 are set for executed commands. See
+                                 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+                                 </para>
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index b70c5e9..f6b4b24 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -548,7 +548,7 @@
+                                 of units. When systemd stops or restarts
+                                 the units listed here, the action is
+                                 propagated to this unit.
+-                                Note that this is a one way dependency —
++                                Note that this is a one-way dependency —
+                                 changes to this unit do not affect the
+                                 listed units.
+                                 </para></listitem>
diff --git a/debian/patches/man-improve-wording-and-comma-usage-in-systemd.journ.patch b/debian/patches/man-improve-wording-and-comma-usage-in-systemd.journ.patch
new file mode 100644 (file)
index 0000000..b76760e
--- /dev/null
@@ -0,0 +1,67 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Tue, 10 Dec 2013 00:10:03 -0500
+Subject: man: improve wording and comma usage in systemd.journal-fields(7)
+
+Improve wording under "Description" and "_KERNEL_DEVICE="
+
+(cherry picked from commit 8c9552c6b417c8dc8d66019bc8e412c8d736454d)
+---
+ man/systemd.journal-fields.xml | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
+index 8a15598..bb89ed5 100644
+--- a/man/systemd.journal-fields.xml
++++ b/man/systemd.journal-fields.xml
+@@ -51,14 +51,14 @@
+                 <title>Description</title>
+                 <para>Entries in the journal resemble an environment
+-                block in their syntax, however with fields that can
++                block in their syntax but with fields that can
+                 include binary data. Primarily, fields are formatted
+                 UTF-8 text strings, and binary formatting is used only
+                 where formatting as UTF-8 text strings makes little
+                 sense. New fields may freely be defined by
+                 applications, but a few fields have special
+                 meaning. All fields with special meanings are
+-                optional. In some cases fields may appear more than
++                optional. In some cases, fields may appear more than
+                 once per entry.</para>
+         </refsect1>
+@@ -176,7 +176,7 @@
+                                 <term><varname>_UID=</varname></term>
+                                 <term><varname>_GID=</varname></term>
+                                 <listitem>
+-                                        <para>The process, user and
++                                        <para>The process, user, and
+                                         group ID of the process the
+                                         journal entry originates from
+                                         formatted as a decimal
+@@ -190,7 +190,7 @@
+                                 <term><varname>_CMDLINE=</varname></term>
+                                 <listitem>
+                                         <para>The name, the executable
+-                                        path and the command line of
++                                        path, and the command line of
+                                         the process the journal entry
+                                         originates from.</para>
+                                 </listitem>
+@@ -389,12 +389,12 @@
+                                         the major and minor of the
+                                         device node, separated by <literal>:</literal>
+                                         and prefixed by <literal>b</literal>. Similar
+-                                        for character devices, but
++                                        for character devices but
+                                         prefixed by <literal>c</literal>. For network
+-                                        devices the interface index,
++                                        devices, this is the interface index
+                                         prefixed by <literal>n</literal>. For all other
+-                                        devices <literal>+</literal> followed by the
+-                                        subsystem name, followed by
++                                        devices, this is the subsystem name
++                                        prefixed by <literal>+</literal>, followed by
+                                         <literal>:</literal>, followed by the kernel
+                                         device name.</para>
+                                 </listitem>
diff --git a/debian/patches/man-improve-wording-of-systemctl-s-after-before.patch b/debian/patches/man-improve-wording-of-systemctl-s-after-before.patch
new file mode 100644 (file)
index 0000000..e39132f
--- /dev/null
@@ -0,0 +1,54 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Mon, 17 Mar 2014 00:03:46 -0400
+Subject: man: improve wording of systemctl's --after/--before
+
+Commit 4a77ca7 was an attempt at fixing the wording of --after and --before,
+but the new wording was unclear.
+
+Split the combined --after/--before section into a separate section for
+each, explicitly state what each option does, and add information about
+how these lists are generated.
+
+Reported-by: Andrey Borzenkov <arvidjaar@gmail.com>
+Reported-by: Lennart Poettering <lennart@poettering.net>
+(cherry picked from commit 9029f64298cb70c12ecf638fddee7f41b056fcf1)
+(cherry picked from commit 7b6a54f75361fe4a166684c0a04db48c3de67504)
+---
+ man/systemctl.xml | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 03f2bc5..171a9bf 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -173,12 +173,27 @@ systemctl start foo
+       <varlistentry>
+         <term><option>--after</option></term>
++
++        <listitem>
++          <para>With <command>list-dependencies</command>, show the
++          units that are ordered before the specified unit. In other
++          words, list the units that are in the <varname>After=</varname>
++          directive of the specified unit, have the specified unit in
++          their <varname>Before=</varname> directive, or are otherwise
++          implicit dependencies of the specified unit.</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
+         <term><option>--before</option></term>
+         <listitem>
+-          <para>Show after (before) which units the specified unit is started
+-          with <command>list-dependencies</command>.
+-          </para>
++          <para>With <command>list-dependencies</command>, show the
++          units that are ordered after the specified unit. In other
++          words, list the units that are in the <varname>Before=</varname>
++          directive of the specified unit, have the specified unit in
++          their <varname>After=</varname> directive, or otherwise depend
++          on the specified unit.</para>
+         </listitem>
+       </varlistentry>
diff --git a/debian/patches/man-improvements-to-comma-placement.patch b/debian/patches/man-improvements-to-comma-placement.patch
new file mode 100644 (file)
index 0000000..983d722
--- /dev/null
@@ -0,0 +1,506 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Thu, 26 Dec 2013 02:47:44 +0100
+Subject: man: improvements to comma placement
+
+This is a recurring submission and includes corrections to:
+comma placement.
+
+Conflicts:
+       man/sd_bus_message_get_cookie.xml
+       man/sd_bus_request_name.xml
+       man/sd_session_is_active.xml
+       man/sd_watchdog_enabled.xml
+       man/systemctl.xml
+       man/systemd.exec.xml
+       man/systemd.timer.xml
+       man/systemd.unit.xml
+---
+ man/halt.xml                           | 2 +-
+ man/hostnamectl.xml                    | 2 +-
+ man/sd-daemon.xml                      | 4 ++--
+ man/sd-readahead.xml                   | 2 +-
+ man/sd_booted.xml                      | 2 +-
+ man/sd_get_seats.xml                   | 2 +-
+ man/sd_is_fifo.xml                     | 2 +-
+ man/sd_listen_fds.xml                  | 2 +-
+ man/sd_login_monitor_new.xml           | 6 +++---
+ man/sd_notify.xml                      | 2 +-
+ man/sd_readahead.xml                   | 2 +-
+ man/sd_seat_get_active.xml             | 4 ++--
+ man/sd_uid_get_state.xml               | 4 ++--
+ man/shutdown.xml                       | 2 +-
+ man/systemd-analyze.xml                | 2 +-
+ man/systemd-ask-password.xml           | 2 +-
+ man/systemd-cat.xml                    | 2 +-
+ man/systemd-cgls.xml                   | 2 +-
+ man/systemd-cgtop.xml                  | 2 +-
+ man/systemd-coredumpctl.xml            | 2 +-
+ man/systemd-delta.xml                  | 2 +-
+ man/systemd-machine-id-setup.xml       | 2 +-
+ man/systemd-notify.xml                 | 2 +-
+ man/systemd-tmpfiles.xml               | 2 +-
+ man/systemd-tty-ask-password-agent.xml | 2 +-
+ man/systemd.device.xml                 | 2 +-
+ man/systemd.mount.xml                  | 2 +-
+ man/systemd.service.xml                | 2 +-
+ man/systemd.special.xml                | 2 +-
+ man/systemd.swap.xml                   | 2 +-
+ man/systemd.xml                        | 2 +-
+ man/telinit.xml                        | 2 +-
+ man/timedatectl.xml                    | 2 +-
+ 33 files changed, 38 insertions(+), 38 deletions(-)
+
+diff --git a/man/halt.xml b/man/halt.xml
+index 2a13d3c..f54a864 100644
+--- a/man/halt.xml
++++ b/man/halt.xml
+@@ -148,7 +148,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml
+index b39fb55..a0776f5 100644
+--- a/man/hostnamectl.xml
++++ b/man/hostnamectl.xml
+@@ -255,7 +255,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
+index 84c1afa..b48eac9 100644
+--- a/man/sd-daemon.xml
++++ b/man/sd-daemon.xml
+@@ -83,7 +83,7 @@
+                 <citerefentry><refentrytitle>sd_booted</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+                 <citerefentry><refentrytitle>sd_is_fifo</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 for more information about the functions
+-                implemented. In addition to these functions a couple
++                implemented. In addition to these functions, a couple
+                 of logging prefixes are defined as macros:</para>
+                 <programlisting>#define SD_EMERG   "&lt;0&gt;"  /* system is unusable */
+@@ -135,7 +135,7 @@
+                 implementation. See the respective function man pages
+                 for details.</para>
+-                <para>In addition, for details about the algorithms
++                <para>In addition, for details about the algorithms,
+                 check the liberally licensed reference implementation
+                 sources:
+                 <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-daemon/sd-daemon.c"/>
+diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml
+index f8a0a0b..bcc46b2 100644
+--- a/man/sd-readahead.xml
++++ b/man/sd-readahead.xml
+@@ -83,7 +83,7 @@
+                 reference implementation. See the respective function
+                 man pages for details.</para>
+-                <para>In addition, for details about the algorithms
++                <para>In addition, for details about the algorithms,
+                 check the liberally licensed reference implementation
+                 sources:
+                 <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/readahead/sd-readahead.c"/>
+diff --git a/man/sd_booted.xml b/man/sd_booted.xml
+index 6f8cc95..1e38d2a 100644
+--- a/man/sd_booted.xml
++++ b/man/sd_booted.xml
+@@ -106,7 +106,7 @@
+                 file. Alternatively, applications consuming these APIs
+                 may copy the implementation into their source
+                 tree. For more details about the reference
+-                implementation see
++                implementation, see
+                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+                 <para>If the reference implementation is used as
+diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml
+index 1e55af3..f0e7655 100644
+--- a/man/sd_get_seats.xml
++++ b/man/sd_get_seats.xml
+@@ -107,7 +107,7 @@
+         <refsect1>
+                 <title>Return Value</title>
+-                <para>On success <function>sd_get_seats()</function>,
++                <para>On success, <function>sd_get_seats()</function>,
+                 <function>sd_get_sessions()</function>,
+                 <function>sd_get_uids()</function> and
+                 <function>sd_get_machine_names()</function> return the
+diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
+index 5e79453..4bb2236 100644
+--- a/man/sd_is_fifo.xml
++++ b/man/sd_is_fifo.xml
+@@ -214,7 +214,7 @@
+                 file. Alternatively, applications consuming these APIs
+                 may copy the implementation into their source
+                 tree. For more details about the reference
+-                implementation see
++                implementation, see
+                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+                 <para>These functions continue to work as described,
+diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml
+index aaabdbf..6a9e082 100644
+--- a/man/sd_listen_fds.xml
++++ b/man/sd_listen_fds.xml
+@@ -155,7 +155,7 @@
+                 file. Alternatively, applications consuming these APIs
+                 may copy the implementation into their source
+                 tree. For more details about the reference
+-                implementation see
++                implementation, see
+                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+                 <para>If the reference implementation is used as
+diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
+index f439d3e..14ff241 100644
+--- a/man/sd_login_monitor_new.xml
++++ b/man/sd_login_monitor_new.xml
+@@ -198,13 +198,13 @@ else {
+         <refsect1>
+                 <title>Return Value</title>
+-                <para>On success
++                <para>On success,
+                 <function>sd_login_monitor_new()</function>,
+                 <function>sd_login_monitor_flush()</function> and
+                 <function>sd_login_monitor_get_timeout()</function>
+-                return 0 or a positive integer. On success
++                return 0 or a positive integer. On success,
+                 <function>sd_login_monitor_get_fd()</function> returns
+-                a Unix file descriptor. On success
++                a Unix file descriptor. On success,
+                 <function>sd_login_monitor_get_events()</function>
+                 returns a combination of <constant>POLLIN</constant>,
+                 <constant>POLLOUT</constant> and suchlike. On failure,
+diff --git a/man/sd_notify.xml b/man/sd_notify.xml
+index e078140..aae27a8 100644
+--- a/man/sd_notify.xml
++++ b/man/sd_notify.xml
+@@ -241,7 +241,7 @@
+                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file. Alternatively, applications consuming these APIs
+                 may copy the implementation into their source tree. For
+-                more details about the reference implementation see
++                more details about the reference implementation, see
+                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+                 <para>If the reference implementation is used as
+diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml
+index bb01bcf..9827299 100644
+--- a/man/sd_readahead.xml
++++ b/man/sd_readahead.xml
+@@ -139,7 +139,7 @@
+                 <filename>sd-readahead.h</filename> files. It is
+                 recommended that applications consuming this API copy
+                 the implementation into their source tree. For more
+-                details about the reference implementation see
++                details about the reference implementation, see
+                 <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry></para>
+                 <para>If -DDISABLE_SYSTEMD is set during compilation,
+diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
+index 23d582d..c64ba13 100644
+--- a/man/sd_seat_get_active.xml
++++ b/man/sd_seat_get_active.xml
+@@ -143,9 +143,9 @@
+         <refsect1>
+                 <title>Return Value</title>
+-                <para> On success
++                <para> On success,
+                 <function>sd_seat_get_active()</function>
+-                returns 0 or a positive integer. On success
++                returns 0 or a positive integer. On success,
+                 <function>sd_seat_get_sessions()</function> returns
+                 the number of entries in the session identifier
+                 array. If the test succeeds,
+diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml
+index 0faa765..30b254c 100644
+--- a/man/sd_uid_get_state.xml
++++ b/man/sd_uid_get_state.xml
+@@ -152,11 +152,11 @@
+         <refsect1>
+                 <title>Return Value</title>
+-                <para>On success
++                <para>On success,
+                 <function>sd_uid_get_state()</function> returns 0 or a
+                 positive integer. If the test succeeds,
+                 <function>sd_uid_is_on_seat()</function> returns a
+-                positive integer, if it fails
++                positive integer; if it fails,
+                 0. <function>sd_uid_get_sessions()</function> and
+                 <function>sd_uid_get_seats()</function> return the
+                 number of entries in the returned arrays. On failure,
+diff --git a/man/shutdown.xml b/man/shutdown.xml
+index 795fb66..27e7e87 100644
+--- a/man/shutdown.xml
++++ b/man/shutdown.xml
+@@ -164,7 +164,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml
+index aefbfc8..b7753f9 100644
+--- a/man/systemd-analyze.xml
++++ b/man/systemd-analyze.xml
+@@ -270,7 +270,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml
+index 8af328d..79902cb 100644
+--- a/man/systemd-ask-password.xml
++++ b/man/systemd-ask-password.xml
+@@ -167,7 +167,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml
+index ffb1dfd..ba7a2cf 100644
+--- a/man/systemd-cat.xml
++++ b/man/systemd-cat.xml
+@@ -158,7 +158,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-cgls.xml b/man/systemd-cgls.xml
+index 432706b..152b883 100644
+--- a/man/systemd-cgls.xml
++++ b/man/systemd-cgls.xml
+@@ -145,7 +145,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml
+index 7faedfb..0e1f7c5 100644
+--- a/man/systemd-cgtop.xml
++++ b/man/systemd-cgtop.xml
+@@ -264,7 +264,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml
+index 9ccb67d..67f75d1 100644
+--- a/man/systemd-coredumpctl.xml
++++ b/man/systemd-coredumpctl.xml
+@@ -200,7 +200,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise. Not finding any matching coredumps is treated
+                 as failure.
+                 </para>
+diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
+index 4d3ab78..ebaa349 100644
+--- a/man/systemd-delta.xml
++++ b/man/systemd-delta.xml
+@@ -223,7 +223,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
+index bc38d55..7b3aa7e 100644
+--- a/man/systemd-machine-id-setup.xml
++++ b/man/systemd-machine-id-setup.xml
+@@ -116,7 +116,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-notify.xml b/man/systemd-notify.xml
+index a769346..e14977d 100644
+--- a/man/systemd-notify.xml
++++ b/man/systemd-notify.xml
+@@ -172,7 +172,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
+index 495247e..c678031 100644
+--- a/man/systemd-tmpfiles.xml
++++ b/man/systemd-tmpfiles.xml
+@@ -178,7 +178,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd-tty-ask-password-agent.xml b/man/systemd-tty-ask-password-agent.xml
+index 31a18ba..cb5fb43 100644
+--- a/man/systemd-tty-ask-password-agent.xml
++++ b/man/systemd-tty-ask-password-agent.xml
+@@ -148,7 +148,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/systemd.device.xml b/man/systemd.device.xml
+index 002b647..586473c 100644
+--- a/man/systemd.device.xml
++++ b/man/systemd.device.xml
+@@ -75,7 +75,7 @@
+                 udev tag (by default all block and network devices,
+                 and a few others). This may be used to define
+                 dependencies between devices and other units. To tag a
+-                udev device use <literal>TAG+="systemd"</literal> in
++                udev device, use <literal>TAG+="systemd"</literal> in
+                 the udev rules file, see
+                 <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+                 for details.</para>
+diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
+index df5a79e..6f9f70c 100644
+--- a/man/systemd.mount.xml
++++ b/man/systemd.mount.xml
+@@ -94,7 +94,7 @@
+                 in a unit file
+                 <filename>home-lennart.mount</filename>. For details
+                 about the escaping logic used to convert a file system
+-                path to a unit name see
++                path to a unit name, see
+                 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
+                 <para>Optionally, a mount unit may be accompanied by
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 80a935d..e869f95 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -441,7 +441,7 @@
+                                 <literal>one</literal> and
+                                 <literal>two two</literal>,
+                                 respectively. Since two commands are
+-                                specified
++                                specified,
+                                 <varname>Type=oneshot</varname> must
+                                 be used.</para>
+diff --git a/man/systemd.special.xml b/man/systemd.special.xml
+index 863a029..76bb5cd 100644
+--- a/man/systemd.special.xml
++++ b/man/systemd.special.xml
+@@ -996,7 +996,7 @@
+                 <filename>smartcard.target</filename>,
+                 <filename>sound.target</filename>.</para>
+-                <para>In addition the following special unit is
++                <para>In addition, the following special unit is
+                 understood only when systemd runs as service instance:</para>
+                 <variablelist>
+diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
+index 13f6c84..5e8b25f 100644
+--- a/man/systemd.swap.xml
++++ b/man/systemd.swap.xml
+@@ -85,7 +85,7 @@
+                 <filename noindex='true'>/dev/sda5</filename> must be configured in a
+                 unit file <filename>dev-sda5.swap</filename>. For
+                 details about the escaping logic used to convert a
+-                file system path to a unit name see
++                file system path to a unit name, see
+                 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
+                 <para>All swap units automatically get the appropriate
+diff --git a/man/systemd.xml b/man/systemd.xml
+index 85c06d3..23a0c26 100644
+--- a/man/systemd.xml
++++ b/man/systemd.xml
+@@ -494,7 +494,7 @@
+                 <filename>/proc</filename>.</para>
+                 <para>For more information about the concepts and
+-                ideas behind systemd please refer to the <ulink
++                ideas behind systemd, please refer to the <ulink
+                 url="http://0pointer.de/blog/projects/systemd.html">Original
+                 Design Document</ulink>.</para>
+diff --git a/man/telinit.xml b/man/telinit.xml
+index bb80939..b20a60a 100644
+--- a/man/telinit.xml
++++ b/man/telinit.xml
+@@ -171,7 +171,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
+diff --git a/man/timedatectl.xml b/man/timedatectl.xml
+index be0ad3f..f4975ce 100644
+--- a/man/timedatectl.xml
++++ b/man/timedatectl.xml
+@@ -222,7 +222,7 @@
+         <refsect1>
+                 <title>Exit status</title>
+-                <para>On success 0 is returned, a non-zero failure
++                <para>On success, 0 is returned, a non-zero failure
+                 code otherwise.</para>
+         </refsect1>
diff --git a/debian/patches/man-include-autoconf-snippet-in-daemon-7.patch b/debian/patches/man-include-autoconf-snippet-in-daemon-7.patch
new file mode 100644 (file)
index 0000000..848f522
--- /dev/null
@@ -0,0 +1,41 @@
+From: =?utf-8?q?Micha=C5=82_G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Fri, 27 Dec 2013 23:44:27 -0500
+Subject: man: include autoconf snippet in daemon(7)
+
+https://bugs.freedesktop.org/show_bug.cgi?id=40446
+(cherry picked from commit 5486855f7d9748684633a96bf646d29080d5a28d)
+---
+ man/daemon.xml | 20 ++++++++++++++------
+ 1 file changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 1fe4546..105826a 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -765,12 +765,20 @@
+                         <programlisting>PKG_PROG_PKG_CONFIG
+ AC_ARG_WITH([systemdsystemunitdir],
+-        AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
+-        [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
+-if test "x$with_systemdsystemunitdir" != xno; then
+-        AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
+-fi
+-AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])</programlisting>
++     AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),,
++     [with_systemdsystemunitdir=auto])
++AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [
++     def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
++
++     AS_IF([test "x$def_systemdsystemunitdir" = "x"],
++         [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
++                [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
++          with_systemdsystemunitdir=no],
++         [with_systemdsystemunitdir=$def_systemdsystemunitdir])])
++AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
++      [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
++AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"])
++</programlisting>
+                         <para>This snippet allows automatic
+                         installation of the unit files on systemd
diff --git a/debian/patches/man-machinectl-there-is-no-command-kill-machine.patch b/debian/patches/man-machinectl-there-is-no-command-kill-machine.patch
new file mode 100644 (file)
index 0000000..17ed2ad
--- /dev/null
@@ -0,0 +1,31 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 18 Feb 2014 16:39:17 +0100
+Subject: man: machinectl: there is no command 'kill-machine'
+
+(cherry picked from commit 773e264d13cac53cbf7e0b174e1883dabb4c9bc2)
+---
+ man/machinectl.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/machinectl.xml b/man/machinectl.xml
+index 2ed9f2e..bb88395 100644
+--- a/man/machinectl.xml
++++ b/man/machinectl.xml
+@@ -141,7 +141,7 @@
+                                 <term><option>--kill-who=</option></term>
+                                 <listitem><para>When used with
+-                                <command>kill-machine</command>,
++                                <command>kill</command>,
+                                 choose which processes to kill. Must
+                                 be one of <option>leader</option>, or
+                                 <option>all</option> to select whether
+@@ -156,7 +156,7 @@
+                                 <term><option>--signal=</option></term>
+                                 <listitem><para>When used with
+-                                <command>kill-machine</command>, choose
++                                <command>kill</command>, choose
+                                 which signal to send to selected
+                                 processes. Must be one of the
+                                 well-known signal specifiers, such as
diff --git a/debian/patches/man-mention-which-variables-will-be-expanded-in-Exec.patch b/debian/patches/man-mention-which-variables-will-be-expanded-in-Exec.patch
new file mode 100644 (file)
index 0000000..800ade1
--- /dev/null
@@ -0,0 +1,87 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 9 Jan 2014 22:23:32 -0500
+Subject: man: mention which variables will be expanded in ExecStart
+
+(cherry picked from commit c5b37953b7835562348d71ad5514faefa4cfb10b)
+
+Conflicts:
+       man/systemd.service.xml
+---
+ man/systemd.exec.xml    |  6 ++++--
+ man/systemd.service.xml | 35 +++++++++++++++++++++++------------
+ 2 files changed, 27 insertions(+), 14 deletions(-)
+
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index e213ec4..c8414d4 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -295,9 +295,11 @@
+                                 for the assignment.</para>
+                                 <para>Example:
+-                                <programlisting>Environment="VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6"</programlisting>
++                                <programlisting>Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"</programlisting>
+                                 gives three variables <literal>VAR1</literal>,
+-                                <literal>VAR2</literal>, <literal>VAR3</literal>.
++                                <literal>VAR2</literal>, <literal>VAR3</literal>
++                                with the values <literal>word1 word2</literal>,
++                                <literal>word3</literal>, <literal>$word 5 6</literal>.
+                                 </para>
+                                 <para>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index af3e0f2..4fb21ba 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -392,16 +392,32 @@
+                                 replaced by the value of the
+                                 environment variable including all
+                                 whitespace it contains, resulting in a
+-                                single argument.  Use
++                                single argument. Use
+                                 <literal>$FOO</literal> as a separate
+                                 word on the command line, in which
+                                 case it will be replaced by the value
+-                                of the environment variable split up
+-                                at whitespace, resulting in zero or
+-                                more arguments. To pass literal dollar sign
+-                                use <literal>$$</literal>. Note that the first
+-                                argument (i.e. the program to execute)
+-                                may not be a variable.</para>
++                                of the environment variable split at
++                                whitespace, resulting in zero or more
++                                arguments. To pass a literal dollar
++                                sign, use <literal>$$</literal>.
++                                Variables whose value is not known at
++                                expansion time are treated as empty
++                                strings. Note that the first argument
++                                (i.e. the program to execute) may not
++                                be a variable.</para>
++
++                                <para>Variables to be used in this
++                                fashion may be defined through
++                                <varname>Environment=</varname> and
++                                <varname>EnvironmentFile=</varname>.
++                                In addition, variables listed in
++                                section "Environment variables in
++                                spawned processes" in
++                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++                                which are considered "static
++                                configuration" may used (this includes
++                                e.g. <varname>$USER</varname>, but not
++                                <varname>$TERM</varname>).</para>
+                                 <para>Optionally, if the absolute file
+                                 name is prefixed with
+@@ -429,11 +445,6 @@
+                                 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
+                                 </programlisting>
+-                                <para>Only select environment variables that
+-                                are set for executed commands. See
+-                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+-                                </para>
+-
+                                 <para>Example:</para>
+                                 <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"
+                                 </programlisting>
diff --git a/debian/patches/man-multiple-sleep-modes-are-to-be-separated-by-whit.patch b/debian/patches/man-multiple-sleep-modes-are-to-be-separated-by-whit.patch
new file mode 100644 (file)
index 0000000..eb6d323
--- /dev/null
@@ -0,0 +1,42 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 11 Mar 2014 05:23:39 +0100
+Subject: man: multiple sleep modes are to be separated by whitespace,
+ not commas
+
+As pointed out by Jason A. Donenfeld.
+
+(cherry picked from commit 252094eb05c58270a0bc35b14ad30a126ddbb3bb)
+(cherry picked from commit 608b982e50ab0efa67c4b1762823d95fc881ac84)
+
+Conflicts:
+       man/systemd-sleep.conf.xml
+---
+ man/systemd-sleep.conf.xml | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml
+index 4622205..04f3b06 100644
+--- a/man/systemd-sleep.conf.xml
++++ b/man/systemd-sleep.conf.xml
+@@ -127,8 +127,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+         <citerefentry><refentrytitle>systemd-suspend.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, or
+         <citerefentry><refentrytitle>systemd-hybrid-sleep.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
+-        More than one value can be specified by seperating
+-        multiple values with commas. They will be tried
++        More than one value can be specified by separating
++        multiple values with whitespace. They will be tried
+         in turn, until one is written without error. If
+         neither suceeds, the operation will be aborted.
+         </para></listitem>
+@@ -145,8 +145,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+         <citerefentry><refentrytitle>systemd-suspend.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, or
+         <citerefentry><refentrytitle>systemd-hybrid-sleep.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
+-        More than one value can be specified by seperating
+-        multiple values with commas. They will be tried
++        More than one value can be specified by separating
++        multiple values with whitespace. They will be tried
+         in turn, until one is written without error. If
+         neither suceeds, the operation will be aborted.
+         </para></listitem>
diff --git a/debian/patches/man-readahead-fix-cmdline-switch-inconsistency-betwe.patch b/debian/patches/man-readahead-fix-cmdline-switch-inconsistency-betwe.patch
new file mode 100644 (file)
index 0000000..0583933
--- /dev/null
@@ -0,0 +1,44 @@
+From: Alison Chaiken <alison_chaiken@mentor.com>
+Date: Fri, 16 May 2014 09:25:53 +0200
+Subject: man: readahead: fix cmdline switch inconsistency between readahead.c
+ and docs
+
+Source code has "files-max" and XML has --max-files.
+
+(cherry picked from commit 332bc31992acffc6f32e194c0122e01607bd0e27)
+(cherry picked from commit 78db70d9c7da6ad48291047bad1ab2f4e80795e7)
+
+Conflicts:
+       man/systemd-readahead-replay.service.xml
+       src/readahead/readahead.c
+---
+ man/systemd-readahead-replay.service.xml | 2 +-
+ src/readahead/readahead.c                | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/systemd-readahead-replay.service.xml b/man/systemd-readahead-replay.service.xml
+index 806d460..8a1f47a 100644
+--- a/man/systemd-readahead-replay.service.xml
++++ b/man/systemd-readahead-replay.service.xml
+@@ -124,7 +124,7 @@
+                         </varlistentry>
+                         <varlistentry>
+-                                <term><option>--max-files=</option></term>
++                                <term><option>--files-max=</option></term>
+                                 <listitem><para>Maximum number of
+                                 files to read ahead. Only valid
+diff --git a/src/readahead/readahead.c b/src/readahead/readahead.c
+index 29255c9..78bf837 100644
+--- a/src/readahead/readahead.c
++++ b/src/readahead/readahead.c
+@@ -40,7 +40,7 @@ static int help(void) {
+         printf("%s [OPTIONS...] collect [DIRECTORY]\n\n"
+                "Collect read-ahead data on early boot.\n\n"
+                "  -h --help                 Show this help\n"
+-               "     --max-files=INT        Maximum number of files to read ahead\n"
++               "     --files-max=INT        Maximum number of files to read ahead\n"
+                "     --file-size-max=BYTES  Maximum size of files to read ahead\n"
+                "     --timeout=USEC         Maximum time to spend collecting data\n\n\n",
+                program_invocation_short_name);
diff --git a/debian/patches/man-remove-advice-to-avoid-setting-the-same-var-more.patch b/debian/patches/man-remove-advice-to-avoid-setting-the-same-var-more.patch
new file mode 100644 (file)
index 0000000..5ef935f
--- /dev/null
@@ -0,0 +1,53 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Dec 2013 17:30:25 -0500
+Subject: man: remove advice to avoid setting the same var more than once
+
+So far the compatibility with .desktop settings hasn't been imporant
+at all, and we do not want people to write convoluted unit
+files.
+
+(cherry picked from commit 6baf995c17a95ca0d6b5ad0b1f1667c956574816)
+---
+ man/systemd.service.xml |  6 +-----
+ man/systemd.unit.xml    | 11 +++++++++++
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index ca297ba..8f9137c 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -321,11 +321,7 @@
+                                 (these semicolons must be passed as
+                                 separate words). Alternatively, this
+                                 directive may be specified more than
+-                                once with the same effect. However,
+-                                the latter syntax is not recommended
+-                                for compatibility with parsers
+-                                suitable for XDG
+-                                <filename>.desktop</filename> files.
++                                once with the same effect.
+                                 Lone semicolons may be escaped as
+                                 <literal>\;</literal>. If the empty
+                                 string is assigned to this option, the
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index 029392c..77127ff 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -120,6 +120,17 @@
+                 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+                 </para>
++                <para>Various settings are allowed to be specified
++                more than once, in which case the interpretation
++                depends on the setting. Often, multiple settings form
++                a list, and setting to an empty value "resets", which
++                means that previous assignments are ignored. When this
++                is allowed, it is mentioned in the description of the
++                setting. Note that using multiple assignments to the
++                same value makes the unit file incompatible with
++                parsers for the XDG <filename>.desktop</filename> file
++                format.</para>
++
+                 <para>Unit files are loaded from a set of paths
+                 determined during compilation, described in the next section.
+                 </para>
diff --git a/debian/patches/man-replace-STDOUT-with-standard-output-etc.patch b/debian/patches/man-replace-STDOUT-with-standard-output-etc.patch
new file mode 100644 (file)
index 0000000..1edc403
--- /dev/null
@@ -0,0 +1,383 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 14 Feb 2014 22:00:06 -0500
+Subject: man: replace STDOUT with standard output, etc.
+
+Actually 'STDOUT' is something that doesn't appear anywhere: in the
+stdlib we have 'stdin', and there's only the constant STDOUT_FILENO,
+so there's no reason to use capitals. When refering to code,
+STDOUT/STDOUT/STDERR are replaced with stdin/stdout/stderr, and in
+other places they are replaced with normal phrases like standard
+output, etc.
+
+(cherry picked from commit 6db2742802b70938f0f2d373110ed734d4fb9813)
+
+Conflicts:
+       man/systemctl.xml
+       man/systemd-bus-proxyd.xml
+---
+ man/daemon.xml                   | 21 +++++++++++----------
+ man/sd-daemon.xml                |  2 +-
+ man/sd_journal_stream_fd.xml     |  4 ++--
+ man/systemctl.xml                | 27 +++++++++++++++------------
+ man/systemd-ask-password.xml     |  2 +-
+ man/systemd-cat.xml              | 14 +++++++-------
+ man/systemd-coredumpctl.xml      |  4 ++--
+ man/systemd-journald.service.xml | 16 ++++++++--------
+ man/systemd-udevd.service.xml    | 11 ++++++-----
+ man/systemd.exec.xml             | 10 +++++-----
+ man/systemd.service.xml          |  2 +-
+ man/systemd.socket.xml           |  4 ++--
+ man/udev.xml                     |  2 +-
+ man/udevadm.xml                  |  2 +-
+ 14 files changed, 63 insertions(+), 58 deletions(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 17d9dd6..26ba600 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -74,8 +74,8 @@
+                         <orderedlist>
+                                 <listitem><para>Close all open file
+-                                descriptors except STDIN, STDOUT,
+-                                STDERR (i.e. the first three file
++                                descriptors except stdin, stdout,
++                                stderr (i.e. the first three file
+                                 descriptors 0, 1, 2). This ensures
+                                 that no accidentally passed file
+                                 descriptor stays around in the daemon
+@@ -128,8 +128,8 @@
+                                 <listitem><para>In the daemon process,
+                                 connect <filename>/dev/null</filename>
+-                                to STDIN, STDOUT,
+-                                STDERR.</para></listitem>
++                                to standard input, output, and error.
++                                </para></listitem>
+                                 <listitem><para>In the daemon process,
+                                 reset the umask to 0, so that the file
+@@ -223,15 +223,16 @@
+                         service.</para>
+                         <para>Note that new-style init systems
+-                        guarantee execution of daemon processes in
+-                        a clean process context: it is guaranteed that
++                        guarantee execution of daemon processes in a
++                        clean process context: it is guaranteed that
+                         the environment block is sanitized, that the
+                         signal handlers and mask is reset and that no
+                         left-over file descriptors are passed. Daemons
+-                        will be executed in their own session, and
+-                        STDIN/STDOUT/STDERR connected to
++                        will be executed in their own session, with
++                        standard input/output/error connected to
+                         <filename>/dev/null</filename> unless
+-                        otherwise configured. The umask is reset.</para>
++                        otherwise configured. The umask is reset.
++                        </para>
+                         <para>It is recommended for new-style daemons
+                         to implement the following:</para>
+@@ -324,7 +325,7 @@
+                                 <listitem><para>Instead of using the
+                                 <function>syslog()</function> call to log directly to the
+                                 system syslog service, a new-style daemon may
+-                                choose to simply log to STDERR via
++                                choose to simply log to standard error via
+                                 <function>fprintf()</function>, which is then forwarded to
+                                 syslog by the init system. If log
+                                 priorities are necessary, these can be
+diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
+index b48eac9..555d1ac 100644
+--- a/man/sd-daemon.xml
++++ b/man/sd-daemon.xml
+@@ -96,7 +96,7 @@
+ #define SD_DEBUG   "&lt;7&gt;"  /* debug-level messages */</programlisting>
+                 <para>These prefixes are intended to be used in
+-                conjunction with STDERR-based logging as implemented
++                conjunction with stderr-based logging as implemented
+                 by systemd. If a systemd service definition file is
+                 configured with <varname>StandardError=syslog</varname>
+                 or <varname>StandardError=kmsg</varname>, these
+diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml
+index a8dc8fd..646fe15 100644
+--- a/man/sd_journal_stream_fd.xml
++++ b/man/sd_journal_stream_fd.xml
+@@ -69,8 +69,8 @@
+                 messages written to this file descriptor as simple
+                 newline-separated text strings are written to the
+                 journal. This file descriptor can be used internally
+-                by applications or be made STDOUT/STDERR of other
+-                processes executed.</para>
++                by applications or be made standard output or standard
++                error of other processes executed.</para>
+                 <para><function>sd_journal_stream_fd()</function>
+                 takes a short program identifier string as first
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index cde1694..d4048a8 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -666,21 +666,23 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+           <listitem>
+             <para>Check whether any of the specified units are active
+-            (i.e. running). Returns an exit code 0 if at least one is
+-            active, non-zero otherwise. Unless <option>--quiet</option>
+-            is specified, this will also print the current unit state to
+-            STDOUT.</para>
++            (i.e. running). Returns an exit code
++            <constant>0</constant> if at least one is active, or
++            non-zero otherwise. Unless <option>--quiet</option> is
++            specified, this will also print the current unit state to
++            standard output.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+           <term><command>is-failed <replaceable>NAME</replaceable>...</command></term>
+           <listitem>
+-            <para>Check whether any of the specified units are in a "failed" state.
+-            Returns an exit code 0 if at least one has failed, non-zero
+-            otherwise. Unless <option>--quiet</option> is specified, this
+-            will also print the current unit state to
+-            STDOUT.</para>
++            <para>Check whether any of the specified units are in a
++            "failed" state. Returns an exit code
++            <constant>0</constant> if at least one has failed,
++            non-zero otherwise. Unless <option>--quiet</option> is
++            specified, this will also print the current unit state to
++            standard output.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+@@ -1069,9 +1071,10 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+           <listitem>
+             <para>Create a snapshot. If a snapshot name is specified,
+             the new snapshot will be named after it. If none is
+-            specified, an automatic snapshot name is generated. In either
+-            case, the snapshot name used is printed to STDOUT, unless
+-            <option>--quiet</option> is specified.</para>
++            specified, an automatic snapshot name is generated. In
++            either case, the snapshot name used is printed to standard
++            output, unless <option>--quiet</option> is specified.
++            </para>
+             <para>A snapshot refers to a saved state of the systemd
+             manager. It is implemented itself as a unit that is
+diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml
+index 79902cb..db5cb20 100644
+--- a/man/systemd-ask-password.xml
++++ b/man/systemd-ask-password.xml
+@@ -60,7 +60,7 @@
+                 used to query a system password or passphrase from the
+                 user, using a question message specified on the
+                 command line. When run from a TTY it will query a
+-                password on the TTY and print it to STDOUT. When run
++                password on the TTY and print it to standard output. When run
+                 with no TTY or with <option>--no-tty</option> it will
+                 query the password system-wide and allow active users
+                 to respond via several agents. The latter is
+diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml
+index ba7a2cf..16a8eb4 100644
+--- a/man/systemd-cat.xml
++++ b/man/systemd-cat.xml
+@@ -60,18 +60,18 @@
+                 <title>Description</title>
+                 <para><command>systemd-cat</command> may be used to
+-                connect STDOUT and STDERR of a process with the
++                connect the standard input and output of a process to the
+                 journal, or as a filter tool in a shell pipeline to
+                 pass the output the previous pipeline element
+                 generates to the journal.</para>
+                 <para>If no parameter is passed,
+                 <command>systemd-cat</command> will write
+-                everything it reads from standard input (STDIN) to the journal.</para>
++                everything it reads from standard input (stdin) to the journal.</para>
+                 <para>If parameters are passed, they are executed as
+-                command line with standard output (STDOUT) and standard
+-                error output (STDERR) connected to the journal, so
++                command line with standard output (stdout) and standard
++                error output (stderr) connected to the journal, so
+                 that all it writes is stored in the journal.</para>
+         </refsect1>
+@@ -169,7 +169,7 @@
+                         <title>Invoke a program</title>
+                         <para>This calls <filename noindex='true'>/bin/ls</filename>
+-                        with STDOUT/STDERR connected to the
++                        with standard output and error connected to the
+                         journal:</para>
+                         <programlisting># systemd-cat ls</programlisting>
+@@ -188,8 +188,8 @@
+                 <para>Even though the two examples have very similar
+                 effects the first is preferable since only one process
+-                is running at a time, and both STDOUT and STDERR are
+-                captured while in the second example only STDOUT is
++                is running at a time, and both stdout and stderr are
++                captured while in the second example only stdout is
+                 captured.</para>
+         </refsect1>
+diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml
+index c096f6d..286ff14 100644
+--- a/man/systemd-coredumpctl.xml
++++ b/man/systemd-coredumpctl.xml
+@@ -135,8 +135,8 @@
+                                 <listitem><para>Extract the last coredump
+                                 matching specified characteristics.
+-                                Coredump will be written on STDOUT, unless
+-                                an output file is specified with
++                                Coredump will be written on standard output,
++                                unless an output file is specified with
+                                 <option>-o/--output</option>.
+                                 </para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml
+index 2f877f5..0a20e21 100644
+--- a/man/systemd-journald.service.xml
++++ b/man/systemd-journald.service.xml
+@@ -59,15 +59,15 @@
+                 <title>Description</title>
+                 <para><filename>systemd-journald</filename> is a
+-                system service that collects and stores logging
+-                data. It creates and maintains structured, indexed
+-                journals based on logging information that is received
+-                from the kernel, from user processes via the libc
++                system service that collects and stores logging data.
++                It creates and maintains structured, indexed journals
++                based on logging information that is received from the
++                kernel, from user processes via the libc
+                 <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+-                call, from STDOUT/STDERR of system services or via its
+-                native API. It will implicitly collect numerous meta
+-                data fields for each log messages in a secure and
+-                unfakeable way. See
++                call, from standard input and standard error of system
++                services or via its native API. It will implicitly
++                collect numerous meta data fields for each log
++                messages in a secure and unfakeable way. See
+                 <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+                 for more information about the collected meta data.
+                 </para>
+diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml
+index 50a1076..b3bca2f 100644
+--- a/man/systemd-udevd.service.xml
++++ b/man/systemd-udevd.service.xml
+@@ -70,7 +70,7 @@
+       <varlistentry>
+         <term><option>--debug</option></term>
+         <listitem>
+-          <para>Print debug messages to STDERR.</para>
++          <para>Print debug messages to standard error.</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+@@ -82,10 +82,11 @@
+       <varlistentry>
+         <term><option>--exec-delay=</option></term>
+         <listitem>
+-          <para>Delay the execution of RUN instruction by the given
+-          number of seconds. This option might be useful when
+-          debugging system crashes during coldplug caused by loading
+-          non-working kernel modules.</para>
++          <para>Delay the execution of <varname>RUN</varname>
++          instruction by the given number of seconds. This option
++          might be useful when debugging system crashes during
++          coldplug caused by loading non-working kernel
++          modules.</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index 5ba1aac..ae134f2 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -472,9 +472,9 @@
+                         <varlistentry>
+                                 <term><varname>StandardError=</varname></term>
+                                 <listitem><para>Controls where file
+-                                descriptor 2 (STDERR) of the executed
+-                                processes is connected to. The
+-                                available options are identical to
++                                descriptor 2 (standard error) of the
++                                executed processes is connected to.
++                                The available options are identical to
+                                 those of
+                                 <varname>StandardOutput=</varname>,
+                                 with one exception: if set to
+@@ -491,8 +491,8 @@
+                         <varlistentry>
+                                 <term><varname>TTYPath=</varname></term>
+                                 <listitem><para>Sets the terminal
+-                                device node to use if STDIN, STDOUT,
+-                                or STDERR are connected to a
++                                device node to use if standard input, output,
++                                or error are connected to a
+                                 TTY (see above). Defaults to
+                                 <filename>/dev/console</filename>.</para></listitem>
+                         </varlistentry>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index d23904e..c116a9b 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -858,7 +858,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 for all file descriptors passed via
+                                 socket-based activation. If true, all
+                                 file descriptors >= 3 (i.e. all except
+-                                STDIN/STDOUT/STDERR) will have
++                                stdin, stdout, and stderr) will have
+                                 the <constant>O_NONBLOCK</constant> flag
+                                 set and hence are in
+                                 non-blocking mode. This option is only
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index 570a6fb..da0f2aa 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -144,8 +144,8 @@
+                 <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 for details) or via the traditional
+                 <citerefentry><refentrytitle>inetd</refentrytitle><manvolnum>8</manvolnum></citerefentry>-style
+-                socket passing (i.e. sockets passed in via STDIN and
+-                STDOUT, using <varname>StandardInput=socket</varname>
++                socket passing (i.e. sockets passed in via standard input and
++                output, using <varname>StandardInput=socket</varname>
+                 in the service file).</para>
+         </refsect1>
+diff --git a/man/udev.xml b/man/udev.xml
+index 82e7478..25a3ea9 100644
+--- a/man/udev.xml
++++ b/man/udev.xml
+@@ -255,7 +255,7 @@
+             <para>Execute a program to determine whether there
+             is a match; the key is true if the program returns
+             successfully. The device properties are made available to the
+-            executed program in the environment. The program's STDOUT
++            executed program in the environment. The program's standard ouput
+             is available in the <varname>RESULT</varname> key.</para>
+             <para>This can only be used for very short-running foreground tasks. For details,
+             see <varname>RUN</varname>.</para>
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index 32bf480..b172266 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -72,7 +72,7 @@
+       <varlistentry>
+         <term><option>--debug</option></term>
+         <listitem>
+-          <para>Print debug messages to STDERR.</para>
++          <para>Print debug messages to standard error.</para>
+         </listitem>
+       </varlistentry>
+       <varlistentry>
diff --git a/debian/patches/man-resolve-word-omissions.patch b/debian/patches/man-resolve-word-omissions.patch
new file mode 100644 (file)
index 0000000..63e2b5c
--- /dev/null
@@ -0,0 +1,726 @@
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Thu, 26 Dec 2013 02:47:43 +0100
+Subject: man: resolve word omissions
+
+This is a recurring submission and includes corrections to:
+word omissions and word class choice.
+
+(cherry picked from commit 494a66821815e8109afa136bd42818b85da38c09)
+
+Conflicts:
+       man/sd_bus_message_get_cookie.xml
+       man/sd_bus_request_name.xml
+       man/sd_watchdog_enabled.xml
+       man/systemd-getty-generator.xml
+---
+ man/binfmt.d.xml                            | 4 ++--
+ man/journald.conf.xml                       | 2 +-
+ man/loginctl.xml                            | 2 +-
+ man/sd-daemon.xml                           | 2 +-
+ man/sd-journal.xml                          | 2 +-
+ man/sd-login.xml                            | 4 ++--
+ man/sd_booted.xml                           | 2 +-
+ man/sd_get_seats.xml                        | 8 ++++----
+ man/sd_id128_get_machine.xml                | 2 +-
+ man/sd_id128_randomize.xml                  | 2 +-
+ man/sd_id128_to_string.xml                  | 2 +-
+ man/sd_is_fifo.xml                          | 2 +-
+ man/sd_journal_add_match.xml                | 2 +-
+ man/sd_journal_get_catalog.xml              | 2 +-
+ man/sd_journal_get_cursor.xml               | 2 +-
+ man/sd_journal_get_cutoff_realtime_usec.xml | 2 +-
+ man/sd_journal_get_data.xml                 | 2 +-
+ man/sd_journal_get_fd.xml                   | 2 +-
+ man/sd_journal_get_realtime_usec.xml        | 2 +-
+ man/sd_journal_get_usage.xml                | 2 +-
+ man/sd_journal_next.xml                     | 6 +++---
+ man/sd_journal_print.xml                    | 2 +-
+ man/sd_journal_query_unique.xml             | 2 +-
+ man/sd_journal_seek_head.xml                | 4 ++--
+ man/sd_journal_stream_fd.xml                | 2 +-
+ man/sd_listen_fds.xml                       | 4 ++--
+ man/sd_login_monitor_new.xml                | 2 +-
+ man/sd_notify.xml                           | 4 ++--
+ man/sd_pid_get_session.xml                  | 2 +-
+ man/sd_seat_get_active.xml                  | 2 +-
+ man/sd_session_is_active.xml                | 2 +-
+ man/sd_uid_get_state.xml                    | 4 ++--
+ man/sysctl.d.xml                            | 4 ++--
+ man/systemctl.xml                           | 4 ++--
+ man/systemd-getty-generator.xml             | 8 ++++----
+ man/systemd-halt.service.xml                | 2 +-
+ man/systemd-machine-id-setup.xml            | 2 +-
+ man/systemd.preset.xml                      | 4 ++--
+ man/systemd.service.xml                     | 2 +-
+ man/systemd.socket.xml                      | 4 ++--
+ man/systemd.unit.xml                        | 4 ++--
+ man/tmpfiles.d.xml                          | 4 ++--
+ 42 files changed, 62 insertions(+), 62 deletions(-)
+
+diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml
+index 94f97e0..6f8668b 100644
+--- a/man/binfmt.d.xml
++++ b/man/binfmt.d.xml
+@@ -88,8 +88,8 @@
+                 administrator, who may use this logic to override the
+                 configuration files installed from vendor
+                 packages. All files are sorted by their filename in
+-                lexicographic order, regardless in which of the
+-                directories they reside. If multiple files specify
++                lexicographic order, regardless of which of the
++                directories they reside in. If multiple files specify
+                 the same binary type name, the entry in the file with
+                 the lexicographically latest name will be applied.</para>
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index 8e642a3..b362c5d 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -155,7 +155,7 @@
+                                 into the system journal. If
+                                 <literal>uid</literal>, any user ID
+                                 will get his own journal files
+-                                regardless whether it belongs to a
++                                regardless of whether it belongs to a
+                                 system service or refers to a real
+                                 logged in user. If
+                                 <literal>none</literal>, journal files
+diff --git a/man/loginctl.xml b/man/loginctl.xml
+index 1b54ff7..133d6cf 100644
+--- a/man/loginctl.xml
++++ b/man/loginctl.xml
+@@ -109,7 +109,7 @@
+                                 <listitem><para>When showing
+                                 session/user/seat properties, show all
+-                                properties regardless whether they are
++                                properties regardless of whether they are
+                                 set or not.</para></listitem>
+                         </varlistentry>
+diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
+index 6e804e1..84c1afa 100644
+--- a/man/sd-daemon.xml
++++ b/man/sd-daemon.xml
+@@ -144,7 +144,7 @@
+                 <para>These APIs are implemented in the reference
+                 implementation's <filename>sd-daemon.c</filename> and
+                 <filename>sd-daemon.h</filename> files. These
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file. Alternatively, applications consuming these APIs
+diff --git a/man/sd-journal.xml b/man/sd-journal.xml
+index 6d39611..832d584 100644
+--- a/man/sd-journal.xml
++++ b/man/sd-journal.xml
+@@ -98,7 +98,7 @@
+         <refsect1>
+                 <title>Notes</title>
+-                <para>These APIs are implemented as shared library,
++                <para>These APIs are implemented as a shared library,
+                 which can be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd-login.xml b/man/sd-login.xml
+index 251b35b..1d47b29 100644
+--- a/man/sd-login.xml
++++ b/man/sd-login.xml
+@@ -99,7 +99,7 @@
+                 caller with the libc
+                 <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 call after use, including the strings referenced
+-                therein. Similar, individual strings returned need to
++                therein. Similarly, individual strings returned need to
+                 be freed, as well.</para>
+                 <para>As a special exception, instead of an empty
+@@ -120,7 +120,7 @@
+         <refsect1>
+                 <title>Notes</title>
+-                <para>These APIs are implemented as shared library,
++                <para>These APIs are implemented as a shared library,
+                 which can be compiled and linked to with the
+                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_booted.xml b/man/sd_booted.xml
+index 64c0cd9..6f8cc95 100644
+--- a/man/sd_booted.xml
++++ b/man/sd_booted.xml
+@@ -100,7 +100,7 @@
+                 in the reference implementation's
+                 <filename>sd-daemon.c</filename> and
+                 <filename>sd-daemon.h</filename> files. These
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file. Alternatively, applications consuming these APIs
+diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml
+index 8254b7c..1e55af3 100644
+--- a/man/sd_get_seats.xml
++++ b/man/sd_get_seats.xml
+@@ -90,13 +90,13 @@
+                 <constant>NULL</constant> may be returned and should be considered
+                 equivalent to an empty array.</para>
+-                <para>Similar, <function>sd_get_sessions()</function> may
++                <para>Similarly, <function>sd_get_sessions()</function> may
+                 be used to determine all current login sessions.</para>
+-                <para>Similar, <function>sd_get_uids()</function> may
++                <para>Similarly, <function>sd_get_uids()</function> may
+                 be used to determine all Unix users who currently have login sessions.</para>
+-                <para>Similar,
++                <para>Similarly,
+                 <function>sd_get_machine_names()</function> may be
+                 used to determine all current virtual machines and
+                 containers on the system.</para>
+@@ -122,7 +122,7 @@
+                 <function>sd_get_sessions()</function>,
+                 <function>sd_get_uids()</function> and
+                 <function>sd_get_machine_names()</function> interfaces
+-                are available as shared library, which can be compiled
++                are available as a shared library, which can be compiled
+                 and linked to with the
+                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_id128_get_machine.xml b/man/sd_id128_get_machine.xml
+index 6bee7ad..084fda2 100644
+--- a/man/sd_id128_get_machine.xml
++++ b/man/sd_id128_get_machine.xml
+@@ -116,7 +116,7 @@
+                 <para>The <function>sd_id128_get_machine()</function>
+                 and <function>sd_id128_get_boot()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <literal>libsystemd-id128</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_id128_randomize.xml b/man/sd_id128_randomize.xml
+index 0b95803..100de16 100644
+--- a/man/sd_id128_randomize.xml
++++ b/man/sd_id128_randomize.xml
+@@ -95,7 +95,7 @@
+                 <title>Notes</title>
+                 <para>The <function>sd_id128_randomize()</function> interface
+-                is available as shared library, which can be compiled
++                is available as a shared library, which can be compiled
+                 and linked to with the
+                 <literal>libsystemd-id128</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_id128_to_string.xml b/man/sd_id128_to_string.xml
+index 71cf82a..eae2915 100644
+--- a/man/sd_id128_to_string.xml
++++ b/man/sd_id128_to_string.xml
+@@ -118,7 +118,7 @@
+                 <para>The <function>sd_id128_to_string()</function>
+                 and <function>sd_id128_from_string()</function> interfaces are
+-                available as shared library, which can be compiled and
++                available as a shared library, which can be compiled and
+                 linked to with the <literal>libsystemd-id128</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+         </refsect1>
+diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
+index 4d9cd79..5e79453 100644
+--- a/man/sd_is_fifo.xml
++++ b/man/sd_is_fifo.xml
+@@ -208,7 +208,7 @@
+                 related functions are implemented in the reference
+                 implementation's <filename>sd-daemon.c</filename> and
+                 <filename>sd-daemon.h</filename> files. These
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file. Alternatively, applications consuming these APIs
+diff --git a/man/sd_journal_add_match.xml b/man/sd_journal_add_match.xml
+index b6c7b06..6568234 100644
+--- a/man/sd_journal_add_match.xml
++++ b/man/sd_journal_add_match.xml
+@@ -174,7 +174,7 @@
+                 <function>sd_journal_add_disjunction()</function>,
+                 <function>sd_journal_add_conjunction()</function> and
+                 <function>sd_journal_flush_matches()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml
+index 4a7e0a1..ecd329f 100644
+--- a/man/sd_journal_get_catalog.xml
++++ b/man/sd_journal_get_catalog.xml
+@@ -118,7 +118,7 @@
+                 <para>The <function>sd_journal_get_catalog()</function> and
+                 <function>sd_journal_get_catalog_for_message_id()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_cursor.xml b/man/sd_journal_get_cursor.xml
+index 4cee7d5..046c154 100644
+--- a/man/sd_journal_get_cursor.xml
++++ b/man/sd_journal_get_cursor.xml
+@@ -130,7 +130,7 @@
+                 <para>The <function>sd_journal_get_cursor()</function>
+                 and <function>sd_journal_test_cursor()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_cutoff_realtime_usec.xml b/man/sd_journal_get_cutoff_realtime_usec.xml
+index 9bf8220..287c1c5 100644
+--- a/man/sd_journal_get_cutoff_realtime_usec.xml
++++ b/man/sd_journal_get_cutoff_realtime_usec.xml
+@@ -122,7 +122,7 @@
+                 <function>sd_journal_get_cutoff_realtime_usec()</function>
+                 and
+                 <function>sd_journal_get_cutoff_monotonic_usec()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_data.xml b/man/sd_journal_get_data.xml
+index 0e1111e..6ed52b5 100644
+--- a/man/sd_journal_get_data.xml
++++ b/man/sd_journal_get_data.xml
+@@ -203,7 +203,7 @@
+                 <function>sd_journal_set_data_threshold()</function>
+                 and
+                 <function>sd_journal_get_data_threshold()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml
+index 764f716..4b36f97 100644
+--- a/man/sd_journal_get_fd.xml
++++ b/man/sd_journal_get_fd.xml
+@@ -253,7 +253,7 @@ else {
+                 <function>sd_journal_reliable_fd()</function>,
+                 <function>sd_journal_process()</function> and
+                 <function>sd_journal_wait()</function> interfaces are
+-                available as shared library, which can be compiled and
++                available as a shared library, which can be compiled and
+                 linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_realtime_usec.xml b/man/sd_journal_get_realtime_usec.xml
+index 8870c29..bf1aa50 100644
+--- a/man/sd_journal_get_realtime_usec.xml
++++ b/man/sd_journal_get_realtime_usec.xml
+@@ -122,7 +122,7 @@
+                 <function>sd_journal_get_realtime_usec()</function>
+                 and
+                 <function>sd_journal_get_monotonic_usec()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_get_usage.xml b/man/sd_journal_get_usage.xml
+index 180d8b2..08d8640 100644
+--- a/man/sd_journal_get_usage.xml
++++ b/man/sd_journal_get_usage.xml
+@@ -84,7 +84,7 @@
+                 <title>Notes</title>
+                 <para>The <function>sd_journal_get_usage()</function>
+-                interface is available as shared library, which can be
++                interface is available as a shared library, which can be
+                 compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_next.xml b/man/sd_journal_next.xml
+index 6e437d1..1409b0d 100644
+--- a/man/sd_journal_next.xml
++++ b/man/sd_journal_next.xml
+@@ -102,7 +102,7 @@
+                 functions such as
+                 <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+-                <para>Similar, <function>sd_journal_previous()</function> sets
++                <para>Similarly, <function>sd_journal_previous()</function> sets
+                 the read pointer back one entry.</para>
+                 <para><function>sd_journal_next_skip()</function> and
+@@ -129,7 +129,7 @@
+                 <citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 and <function>sd_journal_next()</function> in order to
+                 make iterating through the journal easier. See below
+-                for an example. Similar,
++                for an example. Similarly,
+                 <function>SD_JOURNAL_FOREACH_BACKWARDS()</function>
+                 may be used for iterating the journal in reverse
+                 order.</para>
+@@ -156,7 +156,7 @@
+                 <para>The <function>sd_journal_next()</function>, <function>sd_journal_previous()</function>,
+                 <function>sd_journal_next_skip()</function> and
+                 <function>sd_journal_previous_skip()</function> interfaces are
+-                available as shared library, which can be compiled and
++                available as a shared library, which can be compiled and
+                 linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
+index e61a648..a716cc3 100644
+--- a/man/sd_journal_print.xml
++++ b/man/sd_journal_print.xml
+@@ -227,7 +227,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
+                 <function>sd_journal_printv()</function>,
+                 <function>sd_journal_send()</function> and
+                 <function>sd_journal_sendv()</function> interfaces
+-                are available as shared library, which can be compiled
++                are available as a shared library, which can be compiled
+                 and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_query_unique.xml b/man/sd_journal_query_unique.xml
+index f5d9d2b..f0b9204 100644
+--- a/man/sd_journal_query_unique.xml
++++ b/man/sd_journal_query_unique.xml
+@@ -156,7 +156,7 @@
+                 <para>The <function>sd_journal_query_unique()</function>,
+                 <function>sd_journal_enumerate_unique()</function> and
+                 <function>sd_journal_restart_unique()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_seek_head.xml b/man/sd_journal_seek_head.xml
+index 03de30a..939f0b1 100644
+--- a/man/sd_journal_seek_head.xml
++++ b/man/sd_journal_seek_head.xml
+@@ -94,7 +94,7 @@
+                 seeks to the beginning of the journal, i.e. the oldest
+                 available entry.</para>
+-                <para>Similar,
++                <para>Similarly,
+                 <function>sd_journal_seek_tail()</function> may be
+                 used to seek to the end of the journal, i.e. the most
+                 recent available entry.</para>
+@@ -156,7 +156,7 @@
+                 <function>sd_journal_seek_monotonic_usec()</function>,
+                 <function>sd_journal_seek_realtime_usec()</function>,
+                 and <function>sd_journal_seek_cursor()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml
+index 4bd0abc..a8dc8fd 100644
+--- a/man/sd_journal_stream_fd.xml
++++ b/man/sd_journal_stream_fd.xml
+@@ -112,7 +112,7 @@
+                 <title>Notes</title>
+                 <para>The <function>sd_journal_stream_fd()</function>
+-                interface is available as shared library, which can
++                interface is available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml
+index 240300d..aaabdbf 100644
+--- a/man/sd_listen_fds.xml
++++ b/man/sd_listen_fds.xml
+@@ -73,7 +73,7 @@
+                 parameter is non-zero,
+                 <function>sd_listen_fds()</function> will unset the
+                 <varname>$LISTEN_FDS</varname>/<varname>$LISTEN_PID</varname>
+-                environment variables before returning (regardless
++                environment variables before returning (regardless of
+                 whether the function call itself succeeded or
+                 not). Further calls to
+                 <function>sd_listen_fds()</function> will then fail,
+@@ -149,7 +149,7 @@
+                 implemented in the reference implementation's
+                 <filename>sd-daemon.c</filename> and
+                 <filename>sd-daemon.h</filename> files. These
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file. Alternatively, applications consuming these APIs
+diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
+index 909a3d9..f439d3e 100644
+--- a/man/sd_login_monitor_new.xml
++++ b/man/sd_login_monitor_new.xml
+@@ -224,7 +224,7 @@ else {
+                 <function>sd_login_monitor_get_fd()</function>,
+                 <function>sd_login_monitor_get_events()</function> and
+                 <function>sd_login_monitor_get_timeout()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_notify.xml b/man/sd_notify.xml
+index 55965ff..e078140 100644
+--- a/man/sd_notify.xml
++++ b/man/sd_notify.xml
+@@ -79,7 +79,7 @@
+                 <para>If the <parameter>unset_environment</parameter>
+                 parameter is non-zero, <function>sd_notify()</function>
+                 will unset the <varname>$NOTIFY_SOCKET</varname>
+-                environment variable before returning (regardless
++                environment variable before returning (regardless of
+                 whether the function call itself succeeded or
+                 not). Further calls to
+                 <function>sd_notify()</function> will then fail, but
+@@ -236,7 +236,7 @@
+                 the reference implementation's
+                 <filename>sd-daemon.c</filename> and
+                 <filename>sd-daemon.h</filename> files. These
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file. Alternatively, applications consuming these APIs
+diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml
+index e5c7709..ff5905b 100644
+--- a/man/sd_pid_get_session.xml
++++ b/man/sd_pid_get_session.xml
+@@ -186,7 +186,7 @@
+                 <function>sd_pid_get_owner_uid()</function>,
+                 <function>sd_pid_get_machine_name()</function> and
+                 <function>sd_pid_get_slice()</function> interfaces are
+-                available as shared library, which can be compiled and
++                available as a shared library, which can be compiled and
+                 linked to with the
+                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
+index cd87696..23d582d 100644
+--- a/man/sd_seat_get_active.xml
++++ b/man/sd_seat_get_active.xml
+@@ -164,7 +164,7 @@
+                 <function>sd_seat_can_multi_session()</function>,
+                 <function>sd_seat_can_tty()</function> and
+                 <function>sd_seat_can_grapical()</function> interfaces
+-                are available as shared library, which can be compiled
++                are available as a shared library, which can be compiled
+                 and linked to with the
+                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml
+index 293ce71..06891f7 100644
+--- a/man/sd_session_is_active.xml
++++ b/man/sd_session_is_active.xml
+@@ -252,7 +252,7 @@
+                 <function>sd_session_get_class()</function>,
+                 <function>sd_session_get_display()</function> and
+                 <function>sd_session_get_tty()</function>
+-                interfaces are available as shared library, which can
++                interfaces are available as a shared library, which can
+                 be compiled and linked to with the
+                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml
+index d4d23f4..0faa765 100644
+--- a/man/sd_uid_get_state.xml
++++ b/man/sd_uid_get_state.xml
+@@ -139,7 +139,7 @@
+                 be returned and should be considered equivalent to an
+                 empty array.</para>
+-                <para>Similar, <function>sd_uid_get_seats()</function>
++                <para>Similarly, <function>sd_uid_get_seats()</function>
+                 may be used to determine the list of seats on which
+                 the user currently has sessions. Similar semantics
+                 apply, however note that the user may have
+@@ -171,7 +171,7 @@
+                 <function>sd_uid_is_on_seat()</function>,
+                 <function>sd_uid_get_sessions()</function>, and
+                 <function>sd_uid_get_seats()</function> interfaces are
+-                available as shared library, which can be compiled and
++                available as a shared library, which can be compiled and
+                 linked to with the <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+                 file.</para>
+         </refsect1>
+diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
+index 854864c..5544283 100644
+--- a/man/sysctl.d.xml
++++ b/man/sysctl.d.xml
+@@ -89,8 +89,8 @@
+                 administrator, who may use this logic to override the
+                 configuration files installed by vendor packages. All
+                 configuration files are sorted by their filename in
+-                lexicographic order, regardless in which of the
+-                directories they reside. If multiple files specify the
++                lexicographic order, regardless of which of the
++                directories they reside in. If multiple files specify the
+                 same variable name, the entry in the file with the
+                 lexicographically latest name will be applied. It is
+                 recommended to prefix all filenames with a two-digit
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index b4bc15d..61deb19 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -250,7 +250,7 @@ systemctl start foo
+           sleep state. Any user may take these locks and privileged
+           users may override these locks. If any locks are taken,
+           shutdown and sleep state requests will normally fail
+-          (regardless if privileged or not) and a list of active locks
++          (regardless of whether privileged or not) and a list of active locks
+           is printed. However, if <option>--ignore-inhibitors</option>
+           is specified, the locks are ignored and not printed, and the
+           operation attempted anyway, possibly requiring additional
+@@ -445,7 +445,7 @@ systemctl start foo
+           with identical immediate effects, however, since the latter
+           is lost on reboot, the changes are lost too.</para>
+-          <para>Similar, when used with
++          <para>Similarly, when used with
+           <command>set-property</command>, make changes only
+           temporarily, so that they are lost on the next
+           reboot.</para>
+diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml
+index da88e72..b1993ae 100644
+--- a/man/systemd-getty-generator.xml
++++ b/man/systemd-getty-generator.xml
+@@ -61,10 +61,10 @@
+                 subsystem. It will also instantiate
+                 <filename>serial-getty@.service</filename> instances
+                 for virtualizer consoles, if execution in a
+-                virtualized environment is detected. This should
+-                ensure that the user is shown a login prompt at the
+-                right place, regardless in which environment the
+-                system is started. For example, it is sufficient to
++                virtualized environment is detected. This
++                should ensure that the user is shown a login prompt at
++                the right place, regardless of which environment the
++                system is started in. For example, it is sufficient to
+                 redirect the kernel console with a kernel command line
+                 argument such as <varname>console=</varname> to get
+                 both kernel messages and a getty prompt on a serial
+diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
+index 90b443f..99457aa 100644
+--- a/man/systemd-halt.service.xml
++++ b/man/systemd-halt.service.xml
+@@ -65,7 +65,7 @@
+                 <para><filename>systemd-halt.service</filename> is a
+                 system service that is pulled in by
+                 <filename>halt.target</filename> and is responsible
+-                for the actual system halt. Similar,
++                for the actual system halt. Similarly,
+                 <filename>systemd-poweroff.service</filename> is
+                 pulled in by <filename>poweroff.target</filename>,
+                 <filename>systemd-reboot.service</filename> by
+diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
+index fef76bc..bc38d55 100644
+--- a/man/systemd-machine-id-setup.xml
++++ b/man/systemd-machine-id-setup.xml
+@@ -80,7 +80,7 @@
+                 UUID passed is sufficiently unique and is different
+                 for every booted instanced of the VM.</para>
+-                <para>Similar, if run inside a Linux container
++                <para>Similarly, if run inside a Linux container
+                 environment and a UUID is set for the container this
+                 is used to initialize the machine ID. For details see
+                 the documentation of the <ulink
+diff --git a/man/systemd.preset.xml b/man/systemd.preset.xml
+index 16db8cd..55cb4de 100644
+--- a/man/systemd.preset.xml
++++ b/man/systemd.preset.xml
+@@ -126,8 +126,8 @@
+                 administrator, who may use this logic to override the
+                 preset files installed by vendor packages. All preset
+                 files are sorted by their filename in lexicographic
+-                order, regardless in which of the directories they
+-                reside. If multiple files specify the same unit name,
++                order, regardless of which of the directories they
++                reside in. If multiple files specify the same unit name,
+                 the entry in the file with the lexicographically earliest
+                 name will be applied. It is recommended to prefix all
+                 filenames with a two-digit number and a dash, to simplify
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 8f9137c..80a935d 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -712,7 +712,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}
+                                 timeout for the service expires.
+                                 If set to
+                                 <option>always</option>, the service
+-                                will be restarted regardless whether
++                                will be restarted regardless of whether
+                                 it exited cleanly or not, got
+                                 terminated abnormally by a signal or
+                                 hit a timeout.</para>
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index 1c78562..ac3127d 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -213,7 +213,7 @@
+                                 traffic on any of the sockets will
+                                 trigger service activation, and all
+                                 listed sockets will be passed to the
+-                                service, regardless whether there is
++                                service, regardless of whether there is
+                                 incoming traffic on them or not. If
+                                 the empty string is assigned to any of
+                                 these options, the list of addresses
+@@ -225,7 +225,7 @@
+                                 it is often desirable to listen on it
+                                 before the interface it is configured
+                                 on is up and running, and even
+-                                regardless whether it will be up and
++                                regardless of whether it will be up and
+                                 running ever at all. To deal with this
+                                 it is recommended to set the
+                                 <varname>FreeBind=</varname> option
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index 77127ff..b70c5e9 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -634,7 +634,7 @@
+                                 dependency on another unit is shut
+                                 down while the latter is started up,
+                                 the shut down is ordered before the
+-                                start-up regardless whether the
++                                start-up regardless of whether the
+                                 ordering dependency is actually of
+                                 type <varname>After=</varname> or
+                                 <varname>Before=</varname>. If two
+@@ -938,7 +938,7 @@
+                                 exists, is a regular file and marked
+                                 executable.</para>
+-                                <para>Similar,
++                                <para>Similarly,
+                                 <varname>ConditionKernelCommandLine=</varname>
+                                 may be used to check whether a
+                                 specific kernel command line option is
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index 39aa68d..ed88751 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -88,8 +88,8 @@
+                 the local administrator, who may use this logic to
+                 override the configuration files installed by vendor
+                 packages. All configuration files are sorted by their
+-                filename in lexicographic order, regardless in which
+-                of the directories they reside. If multiple files
++                filename in lexicographic order, regardless of which
++                of the directories they reside in. If multiple files
+                 specify the same path, the entry in the file with the
+                 lexicographically earliest name will be applied, all
+                 all other conflicting entries logged as errors.</para>
diff --git a/debian/patches/man-sd_journal_send-does-nothing-when-journald-is-no.patch b/debian/patches/man-sd_journal_send-does-nothing-when-journald-is-no.patch
new file mode 100644 (file)
index 0000000..40f12aa
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 9 May 2014 08:39:25 -0400
+Subject: man: sd_journal_send does nothing when journald is not available
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1096067
+(cherry picked from commit bdf9fc1a940e342afb7a78075984419cb3bc3135)
+(cherry picked from commit 1b616bb22308aafb2a45b7f964cd7d485211b323)
+---
+ man/sd_journal_print.xml | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
+index 871baff..5ae10bf 100644
+--- a/man/sd_journal_print.xml
++++ b/man/sd_journal_print.xml
+@@ -218,6 +218,11 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
+                 errno-style error code. The
+                 <citerefentry><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+                 variable itself is not altered.</para>
++
++                <para>If
++                <citerefentry><refentrytitle>systemd-journald</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++                is not running (the socket is not present), those
++                functions do nothing, and also return 0.</para>
+         </refsect1>
+         <refsect1>
diff --git a/debian/patches/man-systemd-bootchart-fix-spacing-in-command.patch b/debian/patches/man-systemd-bootchart-fix-spacing-in-command.patch
new file mode 100644 (file)
index 0000000..7165b04
--- /dev/null
@@ -0,0 +1,27 @@
+From: Zachary Cook <zachcook1991@gmail.com>
+Date: Thu, 6 Mar 2014 03:49:49 -0500
+Subject: man: systemd-bootchart - fix spacing in command
+
+Use the same formatting as the systemd-analyze man page, so that man shows a space.
+
+(cherry picked from commit 82ed60080d327d7301fcd55f5a1f8511f894b9d5)
+(cherry picked from commit 7117b40be2484d2f318c14d42b8c1f47d44a4465)
+---
+ man/systemd-bootchart.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml
+index ae432b5..818afa1 100644
+--- a/man/systemd-bootchart.xml
++++ b/man/systemd-bootchart.xml
+@@ -76,8 +76,8 @@
+                         in which order, and where possible problems
+                         exist in the startup sequence of the system.
+                         It is essentially a more detailed version of
+-                        the <command>systemd-analyze</command>
+-                        <command>plot</command> function.
++                        the <command>systemd-analyze plot</command>
++                        function.
+                 </para>
+                 <para>
+                         Of course, bootchart can also be used at any
diff --git a/debian/patches/man-there-is-no-ExecStopPre-for-service-units.patch b/debian/patches/man-there-is-no-ExecStopPre-for-service-units.patch
new file mode 100644 (file)
index 0000000..6c0bc0c
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 21 Feb 2014 15:06:44 +0100
+Subject: man: there is no ExecStopPre= for service units
+
+https://bugs.freedesktop.org/show_bug.cgi?id=73177
+(cherry picked from commit c32acc96ef74d13d0059a680cdede5f05db1981a)
+---
+ man/systemd.service.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index 4d672f0..50b19a8 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -674,7 +674,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                                 processes specified with
+                                 <varname>ExecStartPre=</varname>,
+                                 <varname>ExecStartPost=</varname>,
+-                                <varname>ExecStopPre=</varname>,
++                                <varname>ExecStop=</varname>,
+                                 <varname>ExecStopPost=</varname>, or
+                                 <varname>ExecReload=</varname>.
+                                 When the death of the process is a
diff --git a/debian/patches/man-typo-fix.patch b/debian/patches/man-typo-fix.patch
new file mode 100644 (file)
index 0000000..c92dd80
--- /dev/null
@@ -0,0 +1,22 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sat, 4 Jan 2014 23:21:13 +0100
+Subject: man: typo fix
+
+(cherry picked from commit 3563b896da77bb2e6abc2ca0f03d8e2f570f1cc7)
+---
+ man/systemd.time.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd.time.xml b/man/systemd.time.xml
+index f438fa5..a837f23 100644
+--- a/man/systemd.time.xml
++++ b/man/systemd.time.xml
+@@ -222,7 +222,7 @@
+                 <para>In the date and time specifications, any
+                 component may be specified as <literal>*</literal> in
+                 which case any value will match. Alternatively, each
+-                component can be specified as list of values separated
++                component can be specified as a list of values separated
+                 by commas. Values may also be suffixed with
+                 <literal>/</literal> and a repetition value, which
+                 indicates that the value and all values plus multiples
diff --git a/debian/patches/man-units-fix-installation-of-systemd-nspawn-.servic.patch b/debian/patches/man-units-fix-installation-of-systemd-nspawn-.servic.patch
new file mode 100644 (file)
index 0000000..6a84893
--- /dev/null
@@ -0,0 +1,56 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 7 Nov 2013 23:57:19 -0500
+Subject: man,
+ units: fix installation of systemd-nspawn@.service and add example
+
+---
+ TODO                             |  1 +
+ man/systemd-nspawn.xml           | 12 ++++++++++++
+ units/systemd-nspawn@.service.in |  2 +-
+ 3 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/TODO b/TODO
+index 425f673..42ba030 100644
+--- a/TODO
++++ b/TODO
+@@ -491,6 +491,7 @@ Features:
+   - nspawn: maybe add a way to drop additional caps, in addition to add additional caps
+   - nspawn: maybe explicitly reset loginuid?
+   - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context
++  - refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK).
+ * cryptsetup:
+   - cryptsetup-generator: allow specification of passwords in crypttab itself
+diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
+index 7d450f9..ba9e516 100644
+--- a/man/systemd-nspawn.xml
++++ b/man/systemd-nspawn.xml
+@@ -428,6 +428,18 @@
+         </refsect1>
+         <refsect1>
++                <title>Example 4</title>
++
++                <programlisting># mv ~/arch-tree /var/lib/container/arch
++# systemctl enable systemd-nspawn@arch.service
++# systemctl start systemd-nspawn@arch.service</programlisting>
++
++                <para>This makes the Arch Linux container part of the
++                <filename>multi-user.target</filename> on the host.
++                </para>
++        </refsect1>
++
++        <refsect1>
+                 <title>Exit status</title>
+                 <para>The exit code of the program executed in the
+diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in
+index eca62e3..8e00736 100644
+--- a/units/systemd-nspawn@.service.in
++++ b/units/systemd-nspawn@.service.in
+@@ -14,4 +14,4 @@ ExecStart=@bindir@/systemd-nspawn -bjD /var/lib/container/%i
+ Type=notify
+ [Install]
+-Also=multi-user.target
++WantedBy=multi-user.target
diff --git a/debian/patches/man-units-tmpfiles.d-5-cleanup.patch b/debian/patches/man-units-tmpfiles.d-5-cleanup.patch
new file mode 100644 (file)
index 0000000..c38df03
--- /dev/null
@@ -0,0 +1,402 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 24 Dec 2013 10:21:45 -0500
+Subject: man,units: tmpfiles.d(5) cleanup
+
+Condition for /lib (necessary for split /usr) was missing from the unit.
+
+Some changes which were done in tmpfiles.d(5) were not carried over to
+systemd-tmpfiles(1).
+
+Also use markup where possible.
+
+(cherry picked from commit ef72c1f06e2bc696a799cd31a1e0ed25cc999ea4)
+
+Conflicts:
+       man/tmpfiles.d.xml
+---
+ man/systemd-tmpfiles.xml                |  53 ++++++----
+ man/tmpfiles.d.xml                      | 168 +++++++++++++++++++-------------
+ units/systemd-tmpfiles-setup.service.in |   1 +
+ 3 files changed, 134 insertions(+), 88 deletions(-)
+
+diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
+index ba727e1..91c0372 100644
+--- a/man/systemd-tmpfiles.xml
++++ b/man/systemd-tmpfiles.xml
+@@ -54,7 +54,9 @@
+         <refsynopsisdiv>
+                 <cmdsynopsis>
+-                        <command>systemd-tmpfiles <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">CONFIGURATION FILE</arg></command>
++                        <command>systemd-tmpfiles</command>
++                        <arg choice="opt" rep="repeat">OPTIONS</arg>
++                        <arg choice="opt" rep="repeat"><replaceable>CONFIGFILE</replaceable></arg>
+                 </cmdsynopsis>
+                 <para><filename>systemd-tmpfiles-setup.service</filename></para>
+@@ -67,22 +69,20 @@
+                 <title>Description</title>
+                 <para><command>systemd-tmpfiles</command> creates,
+-                deletes and cleans up volatile and temporary files and
++                deletes, and cleans up volatile and temporary files and
+                 directories, based on the configuration file format and
+-                location specified in <citerefentry>
+-                        <refentrytitle>tmpfiles.d</refentrytitle>
+-                        <manvolnum>5</manvolnum>
+-                </citerefentry>.</para>
++                location specified in
++                <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++                </para>
+                 <para>If invoked with no arguments, it applies all
+                 directives from all configuration files. If one or
+                 more filenames are passed on the command line, only
+                 the directives in these files are applied. If only
+                 the basename of a configuration file is specified,
+-                all configuration directories as specified in <citerefentry>
+-                        <refentrytitle>tmpfiles.d</refentrytitle>
+-                        <manvolnum>5</manvolnum>
+-                </citerefentry> are searched for a matching file.</para>
++                all configuration directories as specified in
++                <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++                are searched for a matching file.</para>
+         </refsect1>
+         <refsect1>
+@@ -94,12 +94,25 @@
+                         <varlistentry>
+                                 <term><option>--create</option></term>
+-                                <listitem><para>If this option is passed, all
+-                                files and directories marked with f,
+-                                F, d, D in the configuration files are
+-                                created. Files and directories marked with z,
+-                                Z have their ownership, access mode and security
+-                                labels set.</para></listitem>
++                                <listitem><para>If this option is
++                                passed, all files and directories
++                                marked with <varname>f</varname>,
++                                <varname>F</varname>,
++                                <varname>w</varname>,
++                                <varname>d</varname>,
++                                <varname>D</varname>,
++                                <varname>p</varname>,
++                                <varname>L</varname>,
++                                <varname>c</varname>,
++                                <varname>b</varname>,
++                                <varname>m</varname> in the
++                                configuration files are created or
++                                written to. Files and directories
++                                marked with <varname>z</varname>,
++                                <varname>Z</varname>,
++                                <varname>m</varname> have their
++                                ownership, access mode and security
++                                labels set. </para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+@@ -113,9 +126,11 @@
+                         <varlistentry>
+                                 <term><option>--remove</option></term>
+                                 <listitem><para>If this option is
+-                                passed, all files and directories marked
+-                                with r, R in the configuration files
+-                                are removed.</para></listitem>
++                                passed, all files and directories
++                                marked with <varname>r</varname>,
++                                <varname>R</varname> in the
++                                configuration files are
++                                removed.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+                                 <term><option>--prefix=PATH</option></term>
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index e8b630d..a00637b 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -67,23 +67,32 @@
+                 <title>Configuration Format</title>
+                 <para>Each configuration file shall be named in the
+-                style of <filename>&lt;package&gt;.conf</filename>.
+-                Files in <filename>/etc/</filename> override files
+-                with the same name in <filename>/usr/lib/</filename>
+-                and <filename>/run/</filename>.  Files in
+-                <filename>/run/</filename> override files with the same
+-                name in <filename>/usr/lib/</filename>. Packages
++                style of
++                <filename><replaceable>package</replaceable>.conf</filename>
++                or
++                <filename><replaceable>package</replaceable>-<replaceable>part</replaceable>.conf</filename>.
++                The second variant should be used when it is desirable
++                to make it easy to override just this part of
++                configuration.</para>
++
++                <para>Files in <filename>/etc/tmpfiles.d</filename>
++                override files with the same name in
++                <filename>/usr/lib/tmpfiles.d</filename> and
++                <filename>/run/tmpfiles.d</filename>. Files in
++                <filename>/run/tmpfiles.d</filename> override files
++                with the same name in
++                <filename>/usr/lib/tmpfiles.d</filename>. Packages
+                 should install their configuration files in
+-                <filename>/usr/lib/</filename>. Files in
+-                <filename>/etc/</filename> are reserved for the local
+-                administrator, who may use this logic to override the
+-                configuration files installed by vendor packages. All
+-                configuration files are sorted by their filename in
+-                lexicographic order, regardless in which of the
+-                directories they reside. If multiple files specify the
+-                same path, the entry in the file with the lexicographically
+-                earliest name will be applied, all all other conflicting
+-                entries logged as errors.</para>
++                <filename>/usr/lib/tmpfiles.d</filename>. Files in
++                <filename>/etc/tmpfiles.d</filename> are reserved for
++                the local administrator, who may use this logic to
++                override the configuration files installed by vendor
++                packages. All configuration files are sorted by their
++                filename in lexicographic order, regardless in which
++                of the directories they reside. If multiple files
++                specify the same path, the entry in the file with the
++                lexicographically earliest name will be applied, all
++                all other conflicting entries logged as errors.</para>
+                 <para>If the administrator wants to disable a
+                 configuration file supplied by the vendor, the
+@@ -93,10 +102,10 @@
+                 same filename.</para>
+                 <para>The configuration format is one line per path
+-                containing action, path, mode, ownership, age and argument
++                containing type, path, mode, ownership, age, and argument
+                 fields:</para>
+-                <programlisting>Type Path        Mode UID  GID  Age Argument
++                <programlisting>#Type Path        Mode UID  GID  Age Argument
+ d    /run/user   0755 root root 10d -
+ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+@@ -109,12 +118,12 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                         <variablelist>
+                                 <varlistentry>
+                                         <term><varname>f</varname></term>
+-                                        <listitem><para>Create a file if it does not exist yet (optionally writing a short string into it, if the argument parameter is passed)</para></listitem>
++                                        <listitem><para>Create a file if it does not exist yet. If the argument parameter is given, it will be written to the file.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>F</varname></term>
+-                                        <listitem><para>Create or truncate a file (optionally writing a short string into it, if the argument parameter is passed)</para></listitem>
++                                        <listitem><para>Create or truncate a file. If the argument parameter is given, it will be written to the file.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+@@ -127,32 +136,32 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                                 <varlistentry>
+                                         <term><varname>d</varname></term>
+-                                        <listitem><para>Create a directory if it does not exist yet</para></listitem>
++                                        <listitem><para>Create a directory if it does not exist yet.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>D</varname></term>
+-                                        <listitem><para>Create or empty a directory</para></listitem>
++                                        <listitem><para>Create or empty a directory.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>p</varname></term>
+-                                        <listitem><para>Create a named pipe (FIFO) if it does not exist yet</para></listitem>
++                                        <listitem><para>Create a named pipe (FIFO) if it does not exist yet.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>L</varname></term>
+-                                        <listitem><para>Create a symlink if it does not exist yet</para></listitem>
++                                        <listitem><para>Create a symlink if it does not exist yet.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>c</varname></term>
+-                                        <listitem><para>Create a character device node if it does not exist yet</para></listitem>
++                                        <listitem><para>Create a character device node if it does not exist yet.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>b</varname></term>
+-                                        <listitem><para>Create a block device node if it does not exist yet</para></listitem>
++                                        <listitem><para>Create a block device node if it does not exist yet.</para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+@@ -174,11 +183,12 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                                         as controlled with the Age
+                                         parameter. Note that lines of
+                                         this type do not influence the
+-                                        effect of r or R lines. Lines
+-                                        of this type accept
++                                        effect of <varname>r</varname>
++                                        or <varname>R</varname> lines.
++                                        Lines of this type accept
+                                         shell-style globs in place of
+-                                        normal path
+-                                        names.</para></listitem>
++                                        normal path names.
++                                        </para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+@@ -187,28 +197,31 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                                         during cleaning. Use this type
+                                         to exclude paths from clean-up
+                                         as controlled with the Age
+-                                        parameter. Unlike x this
++                                        parameter. Unlike
++                                        <varname>x</varname>, this
+                                         parameter will not exclude the
+-                                        content if path is a directory,
+-                                        but only directory itself.
+-                                        Note that lines of this type do
+-                                        not influence the effect of r
+-                                        or R lines. Lines of this type
+-                                        accept shell-style globs in
+-                                        place of normal path
+-                                        names.</para></listitem>
++                                        content if path is a
++                                        directory, but only directory
++                                        itself. Note that lines of
++                                        this type do not influence the
++                                        effect of <varname>r</varname>
++                                        or <varname>R</varname> lines.
++                                        Lines of this type accept
++                                        shell-style globs in place of
++                                        normal path names.
++                                        </para></listitem>
+                                 </varlistentry>
+                                 <varlistentry>
+                                         <term><varname>r</varname></term>
+                                         <listitem><para>Remove a file
+-                                        or directory if it
+-                                        exists. This may not be used
+-                                        to remove non-empty
+-                                        directories, use R for
+-                                        that. Lines of this type
+-                                        accept shell-style globs in
+-                                        place of normal path
++                                        or directory if it exists.
++                                        This may not be used to remove
++                                        non-empty directories, use
++                                        <varname>R</varname> for that.
++                                        Lines of this type accept
++                                        shell-style globs in place of
++                                        normal path
+                                         names.</para></listitem>
+                                 </varlistentry>
+@@ -308,11 +321,14 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                         <para>The file access mode to use when
+                         creating this file or directory. If omitted or
+                         when set to -, the default is used: 0755 for
+-                        directories, 0644 for all other file
+-                        objects. For z, Z lines, if omitted or when set
+-                        to -, the file access mode will not be
+-                        modified. This parameter is ignored for x, r,
+-                        R, L lines.</para>
++                        directories, 0644 for all other file objects.
++                        For <varname>z</varname>, <varname>Z</varname>
++                        lines, if omitted or when set to
++                        <literal>-</literal>, the file access mode
++                        will not be modified. This parameter is
++                        ignored for <varname>x</varname>,
++                        <varname>r</varname>, <varname>R</varname>,
++                        <varname>L</varname> lines.</para>
+                 </refsect2>
+                 <refsect2>
+@@ -321,10 +337,15 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                         <para>The user and group to use for this file
+                         or directory. This may either be a numeric
+                         user/group ID or a user or group name. If
+-                        omitted or when set to -, the default 0 (root)
+-                        is used. For z, Z lines, when omitted or when set to -,
+-                        the file ownership will not be modified.
+-                        These parameters are ignored for x, r, R, L lines.</para>
++                        omitted or when set to <literal>-</literal>,
++                        the default 0 (root) is used. For
++                        <varname>z</varname>, <varname>Z</varname>
++                        lines, when omitted or when set to -, the file
++                        ownership will not be modified. These
++                        parameters are ignored for
++                        <varname>x</varname>, <varname>r</varname>,
++                        <varname>R</varname>, <varname>L</varname>
++                        lines.</para>
+                 </refsect2>
+                 <refsect2>
+@@ -357,28 +378,37 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                         <para>When the age is set to zero, the files are cleaned
+                         unconditionally.</para>
+-                        <para>The age field only applies to lines starting with
+-                        d, D and x. If omitted or set to -, no automatic clean-up
+-                        is done.</para>
++                        <para>The age field only applies to lines
++                        starting with <varname>d</varname>,
++                        <varname>D</varname>, and
++                        <varname>x</varname>. If omitted or set to
++                        <literal>-</literal>, no automatic clean-up is
++                        done.</para>
+                         <para>If the age field starts with a tilde
+-                        character (~), the clean-up is only applied to
+-                        files and directories one level inside the
+-                        directory specified, but not the files and
+-                        directories immediately inside it.</para>
++                        character <literal>~</literal>, the clean-up
++                        is only applied to files and directories one
++                        level inside the directory specified, but not
++                        the files and directories immediately inside
++                        it.</para>
+                 </refsect2>
+                 <refsect2>
+                         <title>Argument</title>
+-                        <para>For L lines determines the destination
+-                        path of the symlink. For c, b determines the
++                        <para>For <varname>L</varname> lines
++                        determines the destination path of the
++                        symlink. For <varname>c</varname>,
++                        <varname>b</varname> determines the
+                         major/minor of the device node, with major and
+-                        minor formatted as integers, separated by :,
+-                        e.g. "1:3". For f, F, w may be used to specify
+-                        a short string that is written to the file,
+-                        suffixed by a newline. Ignored for all other
+-                        lines.</para>
++                        minor formatted as integers, separated by
++                        <literal>:</literal>, e.g.
++                        <literal>1:3</literal>. For
++                        <varname>f</varname>, <varname>F</varname>,
++                        and <varname>w</varname> may be used to
++                        specify a short string that is written to the
++                        file, suffixed by a newline. Ignored for all
++                        other lines.</para>
+                 </refsect2>
+         </refsect1>
+diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
+index 6f98063..3405e28 100644
+--- a/units/systemd-tmpfiles-setup.service.in
++++ b/units/systemd-tmpfiles-setup.service.in
+@@ -14,6 +14,7 @@ Conflicts=shutdown.target
+ After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
+ Before=sysinit.target shutdown.target
+ ConditionDirectoryNotEmpty=|/usr/lib/tmpfiles.d
++ConditionDirectoryNotEmpty=|/lib/tmpfiles.d
+ ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
+ ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
+ ConditionDirectoryNotEmpty=|/run/tmpfiles.d
diff --git a/debian/patches/man-update-URL-refernce-in-daemon-7.patch b/debian/patches/man-update-URL-refernce-in-daemon-7.patch
new file mode 100644 (file)
index 0000000..03ae3fd
--- /dev/null
@@ -0,0 +1,24 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 16:22:48 +0900
+Subject: man: update URL refernce in daemon(7)
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-May/019410.html
+(cherry picked from commit 0afedd300cbe53bd5a54aefc81cede1eae9a9ab8)
+(cherry picked from commit 13fc6c9bfacdca10d3e7eb73cd96515cae760734)
+---
+ man/daemon.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 170949e..543468e 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -352,7 +352,7 @@
+                         <para>These recommendations are similar but
+                         not identical to the <ulink
+-                        url="http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSystemStartup/Articles/LaunchOnDemandDaemons.html#//apple_ref/doc/uid/TP40001762-104738">Apple
++                        url="https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html">Apple
+                         MacOS X Daemon Requirements</ulink>.</para>
+                 </refsect2>
diff --git a/debian/patches/man-update-journald-rate-limit-defaults.patch b/debian/patches/man-update-journald-rate-limit-defaults.patch
new file mode 100644 (file)
index 0000000..b07bcd9
--- /dev/null
@@ -0,0 +1,27 @@
+From: =?utf-8?q?Mantas_Mikul=C4=97nas?= <grawity@gmail.com>
+Date: Wed, 30 Apr 2014 19:53:13 +0300
+Subject: man: update journald rate limit defaults
+
+This brings the man page back into sync with the actual code.
+
+(cherry picked from commit 8f18f550e7023948f199616fdfbb0f09711fd615)
+(cherry picked from commit 430015550fe479455aeba7b4362bfa578cf75e2b)
+---
+ man/journald.conf.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index 27c326e..77ecd5d 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -190,8 +190,8 @@
+                                 limiting is applied per-service, so
+                                 that two services which log do not
+                                 interfere with each other's
+-                                limits. Defaults to 200 messages in
+-                                10s. The time specification for
++                                limits. Defaults to 1000 messages in
++                                30s. The time specification for
+                                 <varname>RateLimitInterval=</varname>
+                                 may be specified in the following
+                                 units: <literal>s</literal>,
diff --git a/debian/patches/man-update-link-to-LSB.patch b/debian/patches/man-update-link-to-LSB.patch
new file mode 100644 (file)
index 0000000..070a610
--- /dev/null
@@ -0,0 +1,33 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 6 Mar 2014 08:10:19 -0500
+Subject: man: update link to LSB
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1073402
+(cherry picked from commit 27d14fb331ba8144f99f4da2d13f15cf5c8b8a9f)
+(cherry picked from commit bc447bbd474ed77da1a9cce0dcf85fb4f0e7cb35)
+---
+ man/daemon.xml | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/man/daemon.xml b/man/daemon.xml
+index 26ba600..932de3b 100644
+--- a/man/daemon.xml
++++ b/man/daemon.xml
+@@ -252,7 +252,7 @@
+                                 detect service errors and problems. It
+                                 is recommended to follow the exit code
+                                 scheme as defined in the <ulink
+-                                url="http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
++                                url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
+                                 recommendations for SysV init
+                                 scripts</ulink>.</para></listitem>
+@@ -395,7 +395,7 @@
+                         exclusively on boot (and manually by the
+                         administrator) via SysV init scripts, as
+                         detailed in the <ulink
+-                        url="http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
++                        url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
+                         Linux Standard Base Core
+                         Specification</ulink>. This method of
+                         activation is supported ubiquitously on Linux
diff --git a/debian/patches/man-updates-to-the-passive-target-section.patch b/debian/patches/man-updates-to-the-passive-target-section.patch
new file mode 100644 (file)
index 0000000..53a3d9b
--- /dev/null
@@ -0,0 +1,124 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 10 Jun 2014 18:52:28 +0200
+Subject: man: updates to the passive target section
+
+(cherry picked from commit 51cb9d734a182c4892a6b31f58d75489a2ca432b)
+(cherry picked from commit 1f98d3636de425d9c49cd0dcb889865fbb996924)
+---
+ man/systemd.special.xml | 58 ++++++++++++++++++++++++++++++++++++-------------
+ 1 file changed, 43 insertions(+), 15 deletions(-)
+
+diff --git a/man/systemd.special.xml b/man/systemd.special.xml
+index 8ccccc2..38b94a7 100644
+--- a/man/systemd.special.xml
++++ b/man/systemd.special.xml
+@@ -866,7 +866,13 @@
+                                         will be stopped before the
+                                         network -- to whatever level
+                                         it might be set up then -- is
+-                                        shut down. Also see <ulink
++                                        shut down. It is hence useful
++                                        when writing service files
++                                        that require network access on
++                                        shutdown, which should order
++                                        themselves after this target,
++                                        but not pull it in. Also see
++                                        <ulink
+                                         url="http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget">Running
+                                         Services After the Network is
+                                         up</ulink> for more
+@@ -882,7 +888,6 @@
+                                         an LSB header referring to the
+                                         <literal>$network</literal>
+                                         facility.</para>
+-
+                                 </listitem>
+                         </varlistentry>
+                         <varlistentry>
+@@ -896,7 +901,12 @@
+                                         user/group name lookups for
+                                         which
+                                         <filename>nss-user-lookup.target</filename>
+-                                        should be used. systemd
++                                        should be used. All services
++                                        for which the availability of
++                                        full host/network name
++                                        resolution is essential should
++                                        be ordered after this target,
++                                        but not pull it in. systemd
+                                         automatically adds
+                                         dependencies of type
+                                         <varname>After=</varname> for
+@@ -918,7 +928,16 @@
+                                         host/network name lookups for
+                                         which
+                                         <filename>nss-lookup.target</filename>
+-                                        should be used. </para>
++                                        should be used. All services
++                                        for which the availability of
++                                        the full user/group database is
++                                        essential should be ordered
++                                        after this target, but not
++                                        pull it in. Note that system
++                                        users are always resolvable,
++                                        and hence do not require any
++                                        special ordering against this
++                                        target.</para>
+                                 </listitem>
+                         </varlistentry>
+                         <varlistentry>
+@@ -943,19 +962,18 @@
+                                         should use
+                                         <filename>network-online.target</filename>
+                                         (see above).</para>
+-
+-                                        <para>Again, this target unit
+-                                        is <emphasis>not</emphasis>
+-                                        suitable for pulling in other
+-                                        units, it is only useful for
+-                                        ordering.</para>
+                                 </listitem>
+                         </varlistentry>
+                         <varlistentry>
+                                 <term><filename>rpcbind.target</filename></term>
+                                 <listitem>
+-                                        <para>systemd automatically
+-                                        adds dependencies of type
++                                        <para>The portmapper/rpcbind
++                                        pulls in this target and
++                                        orders itself before it, to
++                                        indicate its
++                                        availability. systemd
++                                        automatically adds
++                                        dependencies of type
+                                         <varname>After=</varname> for
+                                         this target unit to all SysV
+                                         init script service units with
+@@ -967,14 +985,24 @@
+                         <varlistentry>
+                                 <term><filename>time-sync.target</filename></term>
+                                 <listitem>
+-                                        <para>systemd automatically
+-                                        adds dependencies of type
++                                        <para>Services responsible for
++                                        synchronizing the system clock
++                                        from a remote source (such as
++                                        NTP client implementations)
++                                        should pull in this target and
++                                        order themselves before
++                                        it. All services where correct
++                                        time is essential should be
++                                        ordered after this unit, but
++                                        not pull it in. systemd
++                                        automatically adds
++                                        dependencies of type
+                                         <varname>After=</varname> for
+                                         this target unit to all SysV
+                                         init script service units with
+                                         an LSB header referring to the
+                                         <literal>$time</literal>
+-                                        facility.</para>
++                                        facility. </para>
+                                 </listitem>
+                         </varlistentry>
+                 </variablelist>
diff --git a/debian/patches/man-use-spaces-instead-of-tabs.patch b/debian/patches/man-use-spaces-instead-of-tabs.patch
new file mode 100644 (file)
index 0000000..5f6a5e5
--- /dev/null
@@ -0,0 +1,162 @@
+From: "Jason St. John" <jstjohn@purdue.edu>
+Date: Fri, 14 Feb 2014 22:07:22 -0500
+Subject: man: use spaces instead of tabs
+
+Several sections of the man pages included intermixed tabs and spaces;
+this commit replaces all tabs with spaces.
+
+(cherry picked from commit b200a92cdc47b204e2ed7fbdd1eaf15abfd019c6)
+
+Conflicts:
+       man/crypttab.xml
+       man/sd_bus_creds_get_pid.xml
+       man/systemd.service.xml
+---
+ man/systemd-delta.xml   | 68 ++++++++++++++++++++++++-------------------------
+ man/systemd.service.xml |  4 +--
+ man/systemd.socket.xml  | 20 +++++++--------
+ 3 files changed, 46 insertions(+), 46 deletions(-)
+
+diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
+index f802aa5..23fb8d1 100644
+--- a/man/systemd-delta.xml
++++ b/man/systemd-delta.xml
+@@ -50,8 +50,8 @@
+         <refsynopsisdiv>
+                 <cmdsynopsis>
+                         <command>systemd-delta</command>
+-                      <arg choice="opt" rep="repeat">OPTIONS</arg>
+-                      <arg choice="opt" rep="repeat"><replaceable>PREFIX</replaceable><optional>/<replaceable>SUFFIX</replaceable></optional>|<replaceable>SUFFIX</replaceable></arg>
++                        <arg choice="opt" rep="repeat">OPTIONS</arg>
++                        <arg choice="opt" rep="repeat"><replaceable>PREFIX</replaceable><optional>/<replaceable>SUFFIX</replaceable></optional>|<replaceable>SUFFIX</replaceable></arg>
+                 </cmdsynopsis>
+         </refsynopsisdiv>
+@@ -78,27 +78,27 @@
+                 the name of the main configuration file, must match).
+                 For a fuller explanation, see
+                 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+-              </para>
+-
+-              <para>The command line argument will be split into a
+-              prefix and a suffix. Either is optional. The prefix
+-              must be one of the directories containing
+-              configuration files (<filename>/etc</filename>,
+-              <filename>/run</filename>,
+-              <filename>/usr/lib</filename>, ...). If it is given,
+-              only overriding files contained in this directory will
+-              be shown. Otherwise, all overriding files will be
+-              shown. The suffix must be a name of a subdirectory
+-              containing configuration files like
+-              <filename>tmpfiles.d</filename>,
+-              <filename>sysctl.d</filename> or
+-              <filename>systemd/system</filename>. If it is given,
+-              only configuration files in this subdirectory (across
+-              all configuration paths) will be analyzed. Otherwise,
+-              all configuration files will be analyzed. If the
+-              commandline argument is not given at all, all
+-              configuration files will be analyzed. See below for
+-              some examples.</para>
++                </para>
++
++                <para>The command line argument will be split into a
++                prefix and a suffix. Either is optional. The prefix
++                must be one of the directories containing
++                configuration files (<filename>/etc</filename>,
++                <filename>/run</filename>,
++                <filename>/usr/lib</filename>, ...). If it is given,
++                only overriding files contained in this directory will
++                be shown. Otherwise, all overriding files will be
++                shown. The suffix must be a name of a subdirectory
++                containing configuration files like
++                <filename>tmpfiles.d</filename>,
++                <filename>sysctl.d</filename> or
++                <filename>systemd/system</filename>. If it is given,
++                only configuration files in this subdirectory (across
++                all configuration paths) will be analyzed. Otherwise,
++                all configuration files will be analyzed. If the
++                commandline argument is not given at all, all
++                configuration files will be analyzed. See below for
++                some examples.</para>
+         </refsect1>
+         <refsect1>
+@@ -200,21 +200,21 @@
+                 </variablelist>
+         </refsect1>
+-      <refsect1>
+-              <title>Examples</title>
++        <refsect1>
++                <title>Examples</title>
+-              <para>To see all local configuration:</para>
+-              <programlisting>systemd-delta</programlisting>
++                <para>To see all local configuration:</para>
++                <programlisting>systemd-delta</programlisting>
+-              <para>To see all runtime configuration:</para>
+-              <programlisting>systemd-delta /run</programlisting>
++                <para>To see all runtime configuration:</para>
++                <programlisting>systemd-delta /run</programlisting>
+-              <para>To see all system unit configuration changes:</para>
+-              <programlisting>systemd-delta systemd/system</programlisting>
++                <para>To see all system unit configuration changes:</para>
++                <programlisting>systemd-delta systemd/system</programlisting>
+-              <para>To see all runtime "drop-in" changes for system units:</para>
+-              <programlisting>systemd-delta --type=extended /run/systemd/system</programlisting>
+-      </refsect1>
++                <para>To see all runtime "drop-in" changes for system units:</para>
++                <programlisting>systemd-delta --type=extended /run/systemd/system</programlisting>
++        </refsect1>
+         <refsect1>
+                 <title>Exit status</title>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index c116a9b..0f4be71 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -769,8 +769,8 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}</programlisting>
+                               exit statuses is merged. If the empty
+                               string is assigned to this option, the
+                               list is reset, all prior assignments
+-                              of this option will have no
+-                              effect.</para></listitem>
++                                of this option will have no
++                                effect.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index da0f2aa..39fba51 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -121,16 +121,16 @@
+                 boot or late system shutdown should disable this
+                 option.</para>
+-              <para>Socket units will have a
+-              <varname>Before=</varname> dependency on the service
+-              which they trigger added implicitly. No implicit
+-              <varname>WantedBy=</varname> or
+-              <varname>RequiredBy=</varname> dependency from the
+-              socket to the service is added. This means that the
+-              service may be started without the socket, in which
+-              case it must be able to open sockets by itself. To
+-              prevent this, an explicit <varname>Requires=</varname>
+-              dependency may be added.</para>
++                <para>Socket units will have a
++                <varname>Before=</varname> dependency on the service
++                which they trigger added implicitly. No implicit
++                <varname>WantedBy=</varname> or
++                <varname>RequiredBy=</varname> dependency from the
++                socket to the service is added. This means that the
++                service may be started without the socket, in which
++                case it must be able to open sockets by itself. To
++                prevent this, an explicit <varname>Requires=</varname>
++                dependency may be added.</para>
+                 <para>Socket units may be used to implement on-demand
+                 starting of services, as well as parallelized starting
diff --git a/debian/patches/manager-configurable-StartLimit-default-values.patch b/debian/patches/manager-configurable-StartLimit-default-values.patch
new file mode 100644 (file)
index 0000000..6e01668
--- /dev/null
@@ -0,0 +1,160 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 8 Nov 2013 16:01:22 +0100
+Subject: manager: configurable StartLimit default values
+
+https://bugzilla.redhat.com/show_bug.cgi?id=821723
+---
+ man/systemd-system.conf.xml | 13 +++++++++++++
+ man/systemd.service.xml     |  9 ++++++---
+ src/core/main.c             |  6 ++++++
+ src/core/manager.h          |  3 +++
+ src/core/service.c          |  4 +++-
+ src/core/system.conf        |  2 ++
+ src/core/user.conf          |  2 ++
+ src/shared/def.h            |  3 +++
+ 8 files changed, 38 insertions(+), 4 deletions(-)
+
+diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
+index c1f2648..9a1a99f 100644
+--- a/man/systemd-system.conf.xml
++++ b/man/systemd-system.conf.xml
+@@ -115,6 +115,19 @@
+                                 <varname>TimeoutSec=</varname> value.
+                                 </para></listitem>
+                         </varlistentry>
++                        <varlistentry>
++                                <term><varname>DefaultStartLimitInterval=</varname></term>
++                                <term><varname>DefaultStartLimitBurst=</varname></term>
++
++                                <listitem><para>Configure the default start rate
++                                limiting, as configured per-service by
++                                <varname>StartLimitInterval=</varname> and
++                                <varname>StartLimitBurst=</varname>. See
++                                <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++                                for details on the per-service
++                                settings).
++                                </para></listitem>
++                        </varlistentry>
+                         <varlistentry>
+                                 <term><varname>CPUAffinity=</varname></term>
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index df04048..3f31c11 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -863,12 +863,15 @@
+                                 these two options, this rate limiting
+                                 may be modified. Use
+                                 <varname>StartLimitInterval=</varname>
+-                                to configure the checking interval
+-                                (defaults to 10s, set to 0 to disable
++                                to configure the checking interval (defaults to
++                                <varname>DefaultStartLimitInterval=</varname> in
++                                manager configuration file, set to 0 to disable
+                                 any kind of rate limiting). Use
+                                 <varname>StartLimitBurst=</varname> to
+                                 configure how many starts per interval
+-                                are allowed (defaults to 5). These
++                                are allowed (defaults to
++                                <varname>DefaultStartLimitBurst=</varname> in
++                                manager configuration file). These
+                                 configuration options are particularly
+                                 useful in conjunction with
+                                 <varname>Restart=</varname>, however
+diff --git a/src/core/main.c b/src/core/main.c
+index 937994c..00fd394 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -93,6 +93,8 @@ static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT;
+ static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC;
+ static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC;
+ static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
++static usec_t arg_default_start_limit_interval = DEFAULT_START_LIMIT_INTERVAL;
++static unsigned arg_default_start_limit_burst = DEFAULT_START_LIMIT_BURST;
+ static usec_t arg_runtime_watchdog = 0;
+ static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE;
+ static char **arg_default_environment = NULL;
+@@ -642,6 +644,8 @@ static int parse_config_file(void) {
+                 { "Manager", "DefaultTimeoutStartSec", config_parse_sec,         0, &arg_default_timeout_start_usec },
+                 { "Manager", "DefaultTimeoutStopSec", config_parse_sec,          0, &arg_default_timeout_stop_usec  },
+                 { "Manager", "DefaultRestartSec",     config_parse_sec,          0, &arg_default_restart_usec  },
++                { "Manager", "DefaultStartLimitInterval", config_parse_sec,      0, &arg_default_start_limit_interval },
++                { "Manager", "DefaultStartLimitBurst", config_parse_unsigned,    0, &arg_default_start_limit_burst },
+                 { "Manager", "JoinControllers",       config_parse_join_controllers, 0, &arg_join_controllers },
+                 { "Manager", "RuntimeWatchdogSec",    config_parse_sec,          0, &arg_runtime_watchdog    },
+                 { "Manager", "ShutdownWatchdogSec",   config_parse_sec,          0, &arg_shutdown_watchdog   },
+@@ -1551,6 +1555,8 @@ int main(int argc, char *argv[]) {
+         m->default_restart_usec = arg_default_restart_usec;
+         m->default_timeout_start_usec = arg_default_timeout_start_usec;
+         m->default_timeout_stop_usec = arg_default_timeout_stop_usec;
++        m->default_start_limit_interval = arg_default_start_limit_interval;
++        m->default_start_limit_burst = arg_default_start_limit_burst;
+         m->runtime_watchdog = arg_runtime_watchdog;
+         m->shutdown_watchdog = arg_shutdown_watchdog;
+         m->userspace_timestamp = userspace_timestamp;
+diff --git a/src/core/manager.h b/src/core/manager.h
+index e74c609..ee42c5e 100644
+--- a/src/core/manager.h
++++ b/src/core/manager.h
+@@ -233,6 +233,9 @@ struct Manager {
+         usec_t default_restart_usec, default_timeout_start_usec,
+                 default_timeout_stop_usec;
++        usec_t default_start_limit_interval;
++        unsigned default_start_limit_burst;
++
+         struct rlimit *rlimit[RLIMIT_NLIMITS];
+         /* non-zero if we are reloading or reexecuting, */
+diff --git a/src/core/service.c b/src/core/service.c
+index e81aa1f..5662180 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -143,7 +143,9 @@ static void service_init(Unit *u) {
+         kill_context_init(&s->kill_context);
+         cgroup_context_init(&s->cgroup_context);
+-        RATELIMIT_INIT(s->start_limit, 10*USEC_PER_SEC, 5);
++        RATELIMIT_INIT(s->start_limit,
++                       u->manager->default_start_limit_interval,
++                       u->manager->default_start_limit_burst);
+         s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID;
+ }
+diff --git a/src/core/system.conf b/src/core/system.conf
+index 3c6cc03..38bbca5 100644
+--- a/src/core/system.conf
++++ b/src/core/system.conf
+@@ -27,6 +27,8 @@
+ #DefaultTimeoutStartSec=90s
+ #DefaultTimeoutStopSec=90s
+ #DefaultRestartSec=100ms
++#DefaultStartLimitInterval=10s
++#DefaultStartLimitBurst=5
+ #DefaultEnvironment=
+ #DefaultLimitCPU=
+ #DefaultLimitFSIZE=
+diff --git a/src/core/user.conf b/src/core/user.conf
+index b030701..923ca66 100644
+--- a/src/core/user.conf
++++ b/src/core/user.conf
+@@ -17,3 +17,5 @@
+ #DefaultTimeoutStartSec=90s
+ #DefaultTimeoutStopSec=90s
+ #DefaultRestartSec=100ms
++#DefaultStartLimitInterval=10s
++#DefaultStartLimitBurst=5
+diff --git a/src/shared/def.h b/src/shared/def.h
+index edd0bcf..e4ef735 100644
+--- a/src/shared/def.h
++++ b/src/shared/def.h
+@@ -27,6 +27,9 @@
+ #define DEFAULT_RESTART_USEC (100*USEC_PER_MSEC)
+ #define DEFAULT_CONFIRM_USEC (30*USEC_PER_SEC)
++#define DEFAULT_START_LIMIT_INTERVAL (10*USEC_PER_SEC)
++#define DEFAULT_START_LIMIT_BURST 5
++
+ #define DEFAULT_EXIT_USEC (5*USEC_PER_MINUTE)
+ #define SYSTEMD_CGROUP_CONTROLLER "name=systemd"
diff --git a/debian/patches/manager-don-t-do-plymouth-in-a-container.patch b/debian/patches/manager-don-t-do-plymouth-in-a-container.patch
new file mode 100644 (file)
index 0000000..2ec48e6
--- /dev/null
@@ -0,0 +1,25 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 20 Nov 2013 03:44:11 +0100
+Subject: manager: don't do plymouth in a container
+
+Given that plymouth listens on an abstract namespace socket and if
+CLONE_NEWNET is not used the abstract namespace is shared with the host
+we might actually end up send plymouth data to the host.
+---
+ src/core/manager.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index ce32baf..944c196 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -1966,6 +1966,9 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
+         if (m->running_as != SYSTEMD_SYSTEM)
+                 return;
++        if (detect_container(NULL) > 0)
++                return;
++
+         if (u->type != UNIT_SERVICE &&
+             u->type != UNIT_MOUNT &&
+             u->type != UNIT_SWAP)
diff --git a/debian/patches/manager-when-verifying-whether-clients-may-change-en.patch b/debian/patches/manager-when-verifying-whether-clients-may-change-en.patch
new file mode 100644 (file)
index 0000000..a08fe9c
--- /dev/null
@@ -0,0 +1,41 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 4 Oct 2013 17:01:37 +0200
+Subject: manager: when verifying whether clients may change environment using
+ selinux check for "reload" rather "reboot"
+
+This appears to be a copy/paste error.
+---
+ src/core/dbus-manager.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
+index 676a07f..8f4d017 100644
+--- a/src/core/dbus-manager.c
++++ b/src/core/dbus-manager.c
+@@ -1397,7 +1397,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                 _cleanup_strv_free_ char **l = NULL;
+                 char **e = NULL;
+-                SELINUX_ACCESS_CHECK(connection, message, "reboot");
++                SELINUX_ACCESS_CHECK(connection, message, "reload");
+                 r = bus_parse_strv(message, &l);
+                 if (r == -ENOMEM)
+@@ -1424,7 +1424,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                 _cleanup_strv_free_ char **l = NULL;
+                 char **e = NULL;
+-                SELINUX_ACCESS_CHECK(connection, message, "reboot");
++                SELINUX_ACCESS_CHECK(connection, message, "reload");
+                 r = bus_parse_strv(message, &l);
+                 if (r == -ENOMEM)
+@@ -1452,7 +1452,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
+                 char **f = NULL;
+                 DBusMessageIter iter;
+-                SELINUX_ACCESS_CHECK(connection, message, "reboot");
++                SELINUX_ACCESS_CHECK(connection, message, "reload");
+                 if (!dbus_message_iter_init(message, &iter))
+                         goto oom;
diff --git a/debian/patches/mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch b/debian/patches/mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
new file mode 100644 (file)
index 0000000..206d0ca
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:38:52 +0200
+Subject: mkdir: pass a proper function pointer to mkdir_safe_internal
+
+---
+ src/shared/mkdir.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/mkdir.c b/src/shared/mkdir.c
+index b7e5c6e..43c6ea6 100644
+--- a/src/shared/mkdir.c
++++ b/src/shared/mkdir.c
+@@ -53,7 +53,7 @@ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkd
+ }
+ int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) {
+-        return mkdir_safe_internal(path, mode, uid, gid, false);
++        return mkdir_safe_internal(path, mode, uid, gid, mkdir);
+ }
+ static int is_dir(const char* path) {
diff --git a/debian/patches/modules-load-fix-error-handling.patch b/debian/patches/modules-load-fix-error-handling.patch
new file mode 100644 (file)
index 0000000..6013e55
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:37:44 +0200
+Subject: modules-load: fix error handling
+
+---
+ src/modules-load/modules-load.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
+index 7b19ee0..49ee420 100644
+--- a/src/modules-load/modules-load.c
++++ b/src/modules-load/modules-load.c
+@@ -302,8 +302,8 @@ int main(int argc, char *argv[]) {
+                 STRV_FOREACH(i, arg_proc_cmdline_modules) {
+                         k = load_module(ctx, *i);
+-                        if (k < 0)
+-                                r = EXIT_FAILURE;
++                        if (k < 0 && r == 0)
++                                r = k;
+                 }
+                 r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
diff --git a/debian/patches/mount-check-for-NULL-before-reading-pm-what.patch b/debian/patches/mount-check-for-NULL-before-reading-pm-what.patch
new file mode 100644 (file)
index 0000000..0586608
--- /dev/null
@@ -0,0 +1,25 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Fri, 4 Oct 2013 18:22:40 -0400
+Subject: mount: check for NULL before reading pm->what
+
+Since a57f7e2c828b85, a mount unit with garbage in it would cause
+systemd to crash on loading it.
+
+ref: https://bugs.freedesktop.org/show_bug.cgi?id=70148
+---
+ src/core/mount.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 93bfa99..db055f0 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -182,7 +182,7 @@ static int mount_add_mount_links(Mount *m) {
+          * for the source path (if this is a bind mount) to be
+          * available. */
+         pm = get_mount_parameters_fragment(m);
+-        if (pm && path_is_absolute(pm->what)) {
++        if (pm && pm->what && path_is_absolute(pm->what)) {
+                 r = unit_require_mounts_for(UNIT(m), pm->what);
+                 if (r < 0)
+                         return r;
diff --git a/debian/patches/mount-don-t-fire-PropertiesChanged-signals-for-mount.patch b/debian/patches/mount-don-t-fire-PropertiesChanged-signals-for-mount.patch
new file mode 100644 (file)
index 0000000..c8306a8
--- /dev/null
@@ -0,0 +1,48 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 26 Feb 2014 04:28:37 +0100
+Subject: mount: don't fire PropertiesChanged signals for mounts that are
+ stopped
+
+(cherry picked from commit aef831369cd2a7a1bd4a58dd96ff8628ed6a85f9)
+---
+ src/core/mount.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 0a0ef82..65ea3f9 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1691,20 +1691,20 @@ void mount_fd_event(Manager *m, int events) {
+                 Mount *mount = MOUNT(u);
+                 if (!mount->is_mounted) {
+-                        /* This has just been unmounted. */
+                         mount->from_proc_self_mountinfo = false;
+                         switch (mount->state) {
+                         case MOUNT_MOUNTED:
++                                /* This has just been unmounted by
++                                 * somebody else, follow the state
++                                 * change. */
+                                 mount_enter_dead(mount, MOUNT_SUCCESS);
+                                 break;
+                         default:
+-                                mount_set_state(mount, mount->state);
+                                 break;
+-
+                         }
+                 } else if (mount->just_mounted || mount->just_changed) {
+@@ -1715,6 +1715,9 @@ void mount_fd_event(Manager *m, int events) {
+                         case MOUNT_DEAD:
+                         case MOUNT_FAILED:
++                                /* This has just been mounted by
++                                 * somebody else, follow the state
++                                 * change. */
+                                 mount_enter_mounted(mount, MOUNT_SUCCESS);
+                                 break;
diff --git a/debian/patches/mount-don-t-send-out-PropertiesChanged-message-if-ac.patch b/debian/patches/mount-don-t-send-out-PropertiesChanged-message-if-ac.patch
new file mode 100644 (file)
index 0000000..ed7b4fc
--- /dev/null
@@ -0,0 +1,73 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 26 Feb 2014 04:27:50 +0100
+Subject: mount: don't send out PropertiesChanged message if actually nothing
+ got changed
+
+(cherry picked from commit ff5f34d08c191c326c41a083745522383ac86cae)
+
+Conflicts:
+       src/core/mount.c
+---
+ src/core/mount.c | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index c0445a6..0a0ef82 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1412,9 +1412,10 @@ static int mount_add_one(
+                 const char *fstype,
+                 int passno,
+                 bool set_flags) {
++
+         int r;
+         Unit *u;
+-        bool delete;
++        bool delete, changed = false;
+         char *e, *w = NULL, *o = NULL, *f = NULL;
+         MountParameters *p;
+         bool load_extras = false;
+@@ -1483,6 +1484,7 @@ static int mount_add_one(
+                 }
+                 unit_add_to_load_queue(u);
++                changed = true;
+         } else {
+                 delete = false;
+                 free(e);
+@@ -1502,6 +1504,7 @@ static int mount_add_one(
+                         /* Load in the extras later on, after we
+                          * finished initialization of the unit */
+                         load_extras = true;
++                        changed = true;
+                 }
+         }
+@@ -1513,10 +1516,16 @@ static int mount_add_one(
+         }
+         p = &MOUNT(u)->parameters_proc_self_mountinfo;
++
++        changed = changed ||
++                !streq_ptr(p->options, options) ||
++                !streq_ptr(p->what, what) ||
++                !streq_ptr(p->fstype, fstype);
++
+         if (set_flags) {
+                 MOUNT(u)->is_mounted = true;
+                 MOUNT(u)->just_mounted = !MOUNT(u)->from_proc_self_mountinfo;
+-                MOUNT(u)->just_changed = !streq_ptr(p->options, o);
++                MOUNT(u)->just_changed = changed;
+         }
+         MOUNT(u)->from_proc_self_mountinfo = true;
+@@ -1538,7 +1547,8 @@ static int mount_add_one(
+                         goto fail;
+         }
+-        unit_add_to_dbus_queue(u);
++        if (changed)
++                unit_add_to_dbus_queue(u);
+         return 0;
diff --git a/debian/patches/nspawn-add-new-drop-capability-switch.patch b/debian/patches/nspawn-add-new-drop-capability-switch.patch
new file mode 100644 (file)
index 0000000..b69df2a
--- /dev/null
@@ -0,0 +1,81 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 20 Nov 2013 22:10:42 +0100
+Subject: nspawn: add new --drop-capability= switch
+
+---
+ man/systemd-nspawn.xml | 10 ++++++++++
+ src/nspawn/nspawn.c    | 12 ++++++++++--
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
+index ba9e516..c1a5cad 100644
+--- a/man/systemd-nspawn.xml
++++ b/man/systemd-nspawn.xml
+@@ -304,6 +304,16 @@
+                         </varlistentry>
+                         <varlistentry>
++                                <term><option>--drop-capability=</option></term>
++
++                                <listitem><para>Specify one or more
++                                additional capabilities to drop for
++                                the container. This allows running the
++                                container with fewer capabilities than
++                                the default (see above).</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
+                                 <term><option>--link-journal=</option></term>
+                                 <listitem><para>Control whether the
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 85bbadf..7346253 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -130,6 +130,7 @@ static int help(void) {
+                "     --read-only           Mount the root directory read-only\n"
+                "     --capability=CAP      In addition to the default, retain specified\n"
+                "                           capability\n"
++               "     --drop-capability=CAP Drop the specified capability from the default set\n"
+                "     --link-journal=MODE   Link up guest journal, one of no, auto, guest, host\n"
+                "  -j                       Equivalent to --link-journal=host\n"
+                "     --bind=PATH[:PATH]    Bind mount a file or directory from the host into\n"
+@@ -148,6 +149,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 ARG_UUID,
+                 ARG_READ_ONLY,
+                 ARG_CAPABILITY,
++                ARG_DROP_CAPABILITY,
+                 ARG_LINK_JOURNAL,
+                 ARG_BIND,
+                 ARG_BIND_RO
+@@ -163,6 +165,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "uuid",            required_argument, NULL, ARG_UUID            },
+                 { "read-only",       no_argument,       NULL, ARG_READ_ONLY       },
+                 { "capability",      required_argument, NULL, ARG_CAPABILITY      },
++                { "drop-capability", required_argument, NULL, ARG_DROP_CAPABILITY },
+                 { "link-journal",    required_argument, NULL, ARG_LINK_JOURNAL    },
+                 { "bind",            required_argument, NULL, ARG_BIND            },
+                 { "bind-ro",         required_argument, NULL, ARG_BIND_RO         },
+@@ -247,7 +250,8 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_read_only = true;
+                         break;
+-                case ARG_CAPABILITY: {
++                case ARG_CAPABILITY:
++                case ARG_DROP_CAPABILITY: {
+                         char *state, *word;
+                         size_t length;
+@@ -266,7 +270,11 @@ static int parse_argv(int argc, char *argv[]) {
+                                 }
+                                 free(t);
+-                                arg_retain |= 1ULL << (uint64_t) cap;
++
++                                if (c == ARG_CAPABILITY)
++                                        arg_retain |= 1ULL << (uint64_t) cap;
++                                else
++                                        arg_retain &= ~(1ULL << (uint64_t) cap);
+                         }
+                         break;
diff --git a/debian/patches/nspawn-allow-to-bind-mount-journal-on-top-of-a-non-e.patch b/debian/patches/nspawn-allow-to-bind-mount-journal-on-top-of-a-non-e.patch
new file mode 100644 (file)
index 0000000..e321b75
--- /dev/null
@@ -0,0 +1,43 @@
+From: Djalal Harouni <tixxdz@opendz.org>
+Date: Fri, 11 Apr 2014 01:45:52 +0100
+Subject: nspawn: allow to bind mount journal on top of a non empty container
+ journal dentry
+
+Currently if nspawn was called with --link-journal=host or
+--link-journal=auto and the right /var/log/journal/machine-id/ exists
+then the bind mount the subdirectory into the container might fail due
+to the ~/mycontainer/var/log/journal/machine-id/ of the container not
+being empty.
+
+There is no reason to check if the container journal subdir is empty
+since there will be a bind mount on top of it. The user asked for a bind
+mount so give it.
+
+Note: a next call with --link-journal=guest may fail due to the
+/var/log/journal/machine-id/ on the host not being empty.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=76193
+
+Reported-by: Tobias Hunger <tobias.hunger@gmail.com>
+(cherry picked from commit e6a4a517befe559adf6d1dbbadf425c3538849c9)
+(cherry picked from commit 8113d58e81f21d21cc44eda4381f56d5c4be9005)
+---
+ src/nspawn/nspawn.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 028dbe3..d645001 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -939,11 +939,6 @@ static int setup_journal(const char *directory) {
+         } else if (access(p, F_OK) < 0)
+                 return 0;
+-        if (dir_is_empty(q) == 0) {
+-                log_error("%s not empty.", q);
+-                return -ENOTEMPTY;
+-        }
+-
+         r = mkdir_p(q, 0755);
+         if (r < 0) {
+                 log_error("Failed to create %s: %m", q);
diff --git a/debian/patches/nspawn-complain-and-continue-if-machine-has-same-id.patch b/debian/patches/nspawn-complain-and-continue-if-machine-has-same-id.patch
new file mode 100644 (file)
index 0000000..3b1fc40
--- /dev/null
@@ -0,0 +1,63 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 11 Dec 2013 22:00:33 -0500
+Subject: nspawn: complain and continue if machine has same id
+
+If --link-journal=host or --link-journal=guest is used, this totally
+cannot work and we exit with an error. If however --link-journal=auto
+or --link-journal=no is used, just display a warning.
+
+Having the same machine id can happen if booting from the same
+filesystem as the host. Since other things mostly function correctly,
+let's allow that.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=68369
+(cherry picked from commit 4d680aeea1e479f08f3dbdb7430def5d9eefe2ee)
+---
+ src/nspawn/nspawn.c | 23 +++++++++++++++++++----
+ 1 file changed, 19 insertions(+), 4 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 7346253..618f9c3 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -811,14 +811,11 @@ static int setup_hostname(void) {
+ }
+ static int setup_journal(const char *directory) {
+-        sd_id128_t machine_id;
++        sd_id128_t machine_id, this_id;
+         _cleanup_free_ char *p = NULL, *b = NULL, *q = NULL, *d = NULL;
+         char *id;
+         int r;
+-        if (arg_link_journal == LINK_NO)
+-                return 0;
+-
+         p = strappend(directory, "/etc/machine-id");
+         if (!p)
+                 return log_oom();
+@@ -842,6 +839,24 @@ static int setup_journal(const char *directory) {
+                 return r;
+         }
++        r = sd_id128_get_machine(&this_id);
++        if (r < 0) {
++                log_error("Failed to retrieve machine ID: %s", strerror(-r));
++                return r;
++        }
++
++        if (sd_id128_equal(machine_id, this_id)) {
++                log_full(arg_link_journal == LINK_AUTO ? LOG_WARNING : LOG_ERR,
++                         "Host and machine ids are equal (%s): refusing to link journals", id);
++                if (arg_link_journal == LINK_AUTO)
++                        return 0;
++                return
++                        -EEXIST;
++        }
++
++        if (arg_link_journal == LINK_NO)
++                return 0;
++
+         free(p);
+         p = strappend("/var/log/journal/", id);
+         q = strjoin(directory, "/var/log/journal/", id, NULL);
diff --git a/debian/patches/nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch b/debian/patches/nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch
new file mode 100644 (file)
index 0000000..cb4c81a
--- /dev/null
@@ -0,0 +1,76 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 10 Mar 2014 21:36:01 +0100
+Subject: nspawn: don't try mknod() of /dev/console with the correct
+ major/minor
+
+We overmount /dev/console with an external pty anyway, hence there's no
+point in using the real major/minor when we create the node to
+overmount. Instead, use the one of /dev/null now.
+
+This fixes a race against the cgroup device controller setup we are
+using. In case /dev/console was create before the cgroup policy was
+applied all was good, but if created in the opposite order the mknod()
+would fail, since creating /dev/console is not allowed by it. Creating
+/dev/null instances is however permitted, and hence use it.
+
+(cherry picked from commit eb0f0863f5af48865fb4569e2076d5f9e2313995)
+(cherry picked from commit 91dd24f207a5cb93227d4a7d364f033bfd572a31)
+---
+ src/nspawn/nspawn.c | 25 ++++++++++---------------
+ 1 file changed, 10 insertions(+), 15 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 410b879..8718e94 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -679,23 +679,19 @@ static int setup_ptmx(const char *dest) {
+ }
+ static int setup_dev_console(const char *dest, const char *console) {
++        _cleanup_umask_ mode_t u;
++        const char *to;
+         struct stat st;
+-        _cleanup_free_ char *to = NULL;
+         int r;
+-        _cleanup_umask_ mode_t u;
+         assert(dest);
+         assert(console);
+         u = umask(0000);
+-        if (stat(console, &st) < 0) {
+-                log_error("Failed to stat %s: %m", console);
++        if (stat("/dev/null", &st) < 0) {
++                log_error("Failed to stat /dev/null: %m");
+                 return -errno;
+-
+-        } else if (!S_ISCHR(st.st_mode)) {
+-                log_error("/dev/console is not a char device");
+-                return -EIO;
+         }
+         r = chmod_and_chown(console, 0600, 0, 0);
+@@ -704,16 +700,15 @@ static int setup_dev_console(const char *dest, const char *console) {
+                 return r;
+         }
+-        if (asprintf(&to, "%s/dev/console", dest) < 0)
+-                return log_oom();
+-
+         /* We need to bind mount the right tty to /dev/console since
+          * ptys can only exist on pts file systems. To have something
+-         * to bind mount things on we create a device node first, that
+-         * has the right major/minor (note that the major minor
+-         * doesn't actually matter here, since we mount it over
+-         * anyway). */
++         * to bind mount things on we create a device node first, and
++         * use /dev/null for that since we the cgroups device policy
++         * allows us to create that freely, while we cannot create
++         * /dev/console. (Note that the major minor doesn't actually
++         * matter here, since we mount it over anyway). */
++        to = strappenda(dest, "/dev/console");
+         if (mknod(to, (st.st_mode & ~07777) | 0600, st.st_rdev) < 0) {
+                 log_error("mknod() for /dev/console failed: %m");
+                 return -errno;
diff --git a/debian/patches/nspawn-explicitly-terminate-machines-when-we-exit-ns.patch b/debian/patches/nspawn-explicitly-terminate-machines-when-we-exit-ns.patch
new file mode 100644 (file)
index 0000000..36050b2
--- /dev/null
@@ -0,0 +1,124 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 6 Nov 2013 02:05:06 +0100
+Subject: nspawn: explicitly terminate machines when we exit nspawn
+
+https://bugs.freedesktop.org/show_bug.cgi?id=68370
+https://bugzilla.redhat.com/show_bug.cgi?id=988883
+
+Conflicts:
+       src/nspawn/nspawn.c
+---
+ src/nspawn/nspawn.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 65 insertions(+), 5 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index cda6c82..85bbadf 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -43,9 +43,9 @@
+ #include <sys/socket.h>
+ #include <linux/netlink.h>
+-#include <systemd/sd-daemon.h>
+-#include <systemd/sd-bus.h>
+-
++#include "sd-daemon.h"
++#include "sd-bus.h"
++#include "sd-id128.h"
+ #include "log.h"
+ #include "util.h"
+ #include "mkdir.h"
+@@ -56,13 +56,13 @@
+ #include "strv.h"
+ #include "path-util.h"
+ #include "loopback-setup.h"
+-#include "sd-id128.h"
+ #include "dev-setup.h"
+ #include "fdset.h"
+ #include "build.h"
+ #include "fileio.h"
+ #include "bus-internal.h"
+ #include "bus-message.h"
++#include "bus-error.h"
+ #include "ptyfwd.h"
+ #ifndef TTY_GID
+@@ -966,10 +966,64 @@ static int register_machine(void) {
+                         strempty(arg_directory),
+                         !isempty(arg_slice), "Slice", "s", arg_slice);
+         if (r < 0) {
+-                log_error("Failed to register machine: %s", error.message ? error.message : strerror(-r));
++                log_error("Failed to register machine: %s", bus_error_message(&error, r));
++                return r;
++        }
++
++        return 0;
++}
++
++static int terminate_machine(pid_t pid) {
++        _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
++        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
++        _cleanup_bus_unref_ sd_bus *bus = NULL;
++        const char *path;
++        int r;
++
++        r = sd_bus_open_system(&bus);
++        if (r < 0) {
++                log_error("Failed to open system bus: %s", strerror(-r));
++                return r;
++        }
++
++        r = sd_bus_call_method(
++                        bus,
++                        "org.freedesktop.machine1",
++                        "/org/freedesktop/machine1",
++                        "org.freedesktop.machine1.Manager",
++                        "GetMachineByPID",
++                        &error,
++                        &reply,
++                        "u",
++                        (uint32_t) pid);
++        if (r < 0) {
++                /* Note that the machine might already have been
++                 * cleaned up automatically, hence don't consider it a
++                 * failure if we cannot get the machine object. */
++                log_debug("Failed to get machine: %s", bus_error_message(&error, r));
++                return 0;
++        }
++
++        r = sd_bus_message_read(reply, "o", &path);
++        if (r < 0) {
++                log_error("Failed to parse GetMachineByPID() reply: %s", bus_error_message(&error, r));
+                 return r;
+         }
++        r = sd_bus_call_method(
++                        bus,
++                        "org.freedesktop.machine1",
++                        path,
++                        "org.freedesktop.machine1.Machine",
++                        "Terminate",
++                        &error,
++                        NULL,
++                        NULL);
++        if (r < 0) {
++                log_debug("Failed to terminate machine: %s", bus_error_message(&error, r));
++                return 0;
++        }
++
+         return 0;
+ }
+@@ -1448,6 +1502,12 @@ int main(int argc, char *argv[]) {
+                 if (saved_attr_valid)
+                         tcsetattr(STDIN_FILENO, TCSANOW, &saved_attr);
++                /* Kill if it is not dead yet anyway */
++                terminate_machine(pid);
++
++                /* Redundant, but better safe than sorry */
++                kill(pid, SIGKILL);
++
+                 k = wait_for_terminate(pid, &status);
+                 if (k < 0) {
+                         r = EXIT_FAILURE;
diff --git a/debian/patches/nspawn-if-we-don-t-find-bash-try-sh.patch b/debian/patches/nspawn-if-we-don-t-find-bash-try-sh.patch
new file mode 100644 (file)
index 0000000..a7957a6
--- /dev/null
@@ -0,0 +1,24 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 14 Feb 2014 16:41:03 +0100
+Subject: nspawn: if we don't find bash, try sh
+
+(cherry picked from commit 262d10e6bd8e4a0a6a0967fbb5f89a5b989779ac)
+
+Conflicts:
+       src/nspawn/nspawn.c
+---
+ src/nspawn/nspawn.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index cafc306..410b879 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -1499,6 +1499,7 @@ int main(int argc, char *argv[]) {
+                         else {
+                                 chdir(home ? home : "/root");
+                                 execle("/bin/bash", "-bash", NULL, (char**) envp);
++                                execle("/bin/sh", "-sh", NULL, (char**) envp);
+                         }
+                         log_error("execv() failed: %m");
diff --git a/debian/patches/nspawn-log-out-of-memory-errors.patch b/debian/patches/nspawn-log-out-of-memory-errors.patch
new file mode 100644 (file)
index 0000000..0913ccb
--- /dev/null
@@ -0,0 +1,36 @@
+From: Djalal Harouni <tixxdz@opendz.org>
+Date: Tue, 5 Nov 2013 15:26:37 +0100
+Subject: nspawn: log out of memory errors
+
+---
+ src/nspawn/nspawn.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 9616dbf..db47fbd 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -224,6 +224,9 @@ static int parse_argv(int argc, char *argv[]) {
+                 case 'S':
+                         arg_slice = strdup(optarg);
++                        if (!arg_slice)
++                                return log_oom();
++
+                         break;
+                 case 'M':
+@@ -315,11 +318,11 @@ static int parse_argv(int argc, char *argv[]) {
+                         r = strv_extend(x, a);
+                         if (r < 0)
+-                                return r;
++                                return log_oom();
+                         r = strv_extend(x, b);
+                         if (r < 0)
+-                                return r;
++                                return log_oom();
+                         break;
+                 }
diff --git a/debian/patches/nspawn-only-pass-in-slice-setting-if-it-is-set.patch b/debian/patches/nspawn-only-pass-in-slice-setting-if-it-is-set.patch
new file mode 100644 (file)
index 0000000..89286ee
--- /dev/null
@@ -0,0 +1,21 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 30 Oct 2013 18:40:21 +0100
+Subject: nspawn: only pass in slice setting if it is set
+
+---
+ src/nspawn/nspawn.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index eb9605c..9616dbf 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -1202,7 +1202,7 @@ static int register_machine(void) {
+                         "container",
+                         (uint32_t) 0,
+                         strempty(arg_directory),
+-                        1, "Slice", "s", strempty(arg_slice));
++                        !isempty(arg_slice), "Slice", "s", arg_slice);
+         if (r < 0) {
+                 log_error("Failed to register machine: %s", error.message ? error.message : strerror(-r));
+                 return r;
diff --git a/debian/patches/nspawn-properly-format-container_uuid-in-UUID-format.patch b/debian/patches/nspawn-properly-format-container_uuid-in-UUID-format.patch
new file mode 100644 (file)
index 0000000..edbd35a
--- /dev/null
@@ -0,0 +1,54 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 16 May 2014 19:37:19 +0200
+Subject: nspawn: properly format container_uuid in UUID format
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-April/018971.html
+(cherry picked from commit 9f24adc288de142d6606fde3c5a5971613f3b6b9)
+(cherry picked from commit e0036127752b25d87405e3ee508d4dbe41a23b7d)
+---
+ src/nspawn/nspawn.c | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index adc682d..028dbe3 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -561,6 +561,15 @@ static int setup_resolv_conf(const char *dest) {
+         return 0;
+ }
++static char* id128_format_as_uuid(sd_id128_t id, char s[37]) {
++
++        snprintf(s, 37,
++                 "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
++                 SD_ID128_FORMAT_VAL(id));
++
++        return s;
++}
++
+ static int setup_boot_id(const char *dest) {
+         _cleanup_free_ char *from = NULL, *to = NULL;
+         sd_id128_t rnd;
+@@ -583,10 +592,7 @@ static int setup_boot_id(const char *dest) {
+                 return r;
+         }
+-        snprintf(as_uuid, sizeof(as_uuid),
+-                 "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+-                 SD_ID128_FORMAT_VAL(rnd));
+-        char_array_0(as_uuid);
++        id128_format_as_uuid(rnd, as_uuid);
+         r = write_string_file(from, as_uuid);
+         if (r < 0) {
+@@ -1446,7 +1452,9 @@ int main(int argc, char *argv[]) {
+                         }
+                         if (!sd_id128_equal(arg_uuid, SD_ID128_NULL)) {
+-                                if (asprintf((char**)(envp + n_env++), "container_uuid=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(arg_uuid)) < 0) {
++                                char as_uuid[37];
++
++                                if (asprintf((char**)(envp + n_env++), "container_uuid=%s", id128_format_as_uuid(arg_uuid, as_uuid)) < 0) {
+                                         log_oom();
+                                         goto child_fail;
+                                 }
diff --git a/debian/patches/nspawn-restore-journal-directory-is-empty-check.patch b/debian/patches/nspawn-restore-journal-directory-is-empty-check.patch
new file mode 100644 (file)
index 0000000..47f0a93
--- /dev/null
@@ -0,0 +1,29 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 15:19:46 +0900
+Subject: nspawn: restore journal directory is empty check
+
+This undoes part of commit e6a4a517befe559adf6d1dbbadf425c3538849c9.
+
+Instead of removing the error message about non-empty journal bind mount
+directories, simply downgrade the message to a warning and proceed.
+
+(cherry picked from commit cdb2b9d05a2f3d649f47bd2ba24eb3fe30b52e92)
+(cherry picked from commit 2b1f027f8e194fdb52bc75d3607b01232bdbee15)
+---
+ src/nspawn/nspawn.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index d645001..28e50fb 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -939,6 +939,9 @@ static int setup_journal(const char *directory) {
+         } else if (access(p, F_OK) < 0)
+                 return 0;
++        if (dir_is_empty(q) == 0)
++                log_warning("%s is not empty, proceeding anyway.", q);
++
+         r = mkdir_p(q, 0755);
+         if (r < 0) {
+                 log_error("Failed to create %s: %m", q);
diff --git a/debian/patches/nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch b/debian/patches/nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch
new file mode 100644 (file)
index 0000000..17740cd
--- /dev/null
@@ -0,0 +1,592 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 30 Oct 2013 18:58:59 +0100
+Subject: nspawn: split out pty forwaring logic into ptyfwd.c
+
+Conflicts:
+       Makefile.am
+       src/nspawn/nspawn.c
+---
+ Makefile.am         |   4 +-
+ src/nspawn/nspawn.c | 245 +-------------------------------------------------
+ src/shared/ptyfwd.c | 252 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/shared/ptyfwd.h |  27 ++++++
+ 4 files changed, 284 insertions(+), 244 deletions(-)
+ create mode 100644 src/shared/ptyfwd.c
+ create mode 100644 src/shared/ptyfwd.h
+
+diff --git a/Makefile.am b/Makefile.am
+index 34de7f2..b4fc33b 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -724,7 +724,9 @@ libsystemd_shared_la_SOURCES = \
+       src/shared/boot-timestamps.c \
+       src/shared/refcnt.h \
+       src/shared/mkdir.c \
+-      src/shared/mkdir.h
++      src/shared/mkdir.h \
++      src/shared/ptyfwd.c \
++      src/shared/ptyfwd.h
+ #-------------------------------------------------------------------------------
+ noinst_LTLIBRARIES += \
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index db47fbd..cda6c82 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -63,6 +63,7 @@
+ #include "fileio.h"
+ #include "bus-internal.h"
+ #include "bus-message.h"
++#include "ptyfwd.h"
+ #ifndef TTY_GID
+ #define TTY_GID 5
+@@ -937,248 +938,6 @@ static int drop_capabilities(void) {
+         return capability_bounding_set_drop(~arg_retain, false);
+ }
+-static int process_pty(int master, pid_t pid, sigset_t *mask) {
+-
+-        char in_buffer[LINE_MAX], out_buffer[LINE_MAX];
+-        size_t in_buffer_full = 0, out_buffer_full = 0;
+-        struct epoll_event stdin_ev, stdout_ev, master_ev, signal_ev;
+-        bool stdin_readable = false, stdout_writable = false, master_readable = false, master_writable = false;
+-        int ep = -1, signal_fd = -1, r;
+-        bool tried_orderly_shutdown = false;
+-
+-        assert(master >= 0);
+-        assert(pid > 0);
+-        assert(mask);
+-
+-        fd_nonblock(STDIN_FILENO, 1);
+-        fd_nonblock(STDOUT_FILENO, 1);
+-        fd_nonblock(master, 1);
+-
+-        signal_fd = signalfd(-1, mask, SFD_NONBLOCK|SFD_CLOEXEC);
+-        if (signal_fd < 0) {
+-                log_error("signalfd(): %m");
+-                r = -errno;
+-                goto finish;
+-        }
+-
+-        ep = epoll_create1(EPOLL_CLOEXEC);
+-        if (ep < 0) {
+-                log_error("Failed to create epoll: %m");
+-                r = -errno;
+-                goto finish;
+-        }
+-
+-        /* We read from STDIN only if this is actually a TTY,
+-         * otherwise we assume non-interactivity. */
+-        if (isatty(STDIN_FILENO)) {
+-                zero(stdin_ev);
+-                stdin_ev.events = EPOLLIN|EPOLLET;
+-                stdin_ev.data.fd = STDIN_FILENO;
+-
+-                if (epoll_ctl(ep, EPOLL_CTL_ADD, STDIN_FILENO, &stdin_ev) < 0) {
+-                        log_error("Failed to register STDIN in epoll: %m");
+-                        r = -errno;
+-                        goto finish;
+-                }
+-        }
+-
+-        zero(stdout_ev);
+-        stdout_ev.events = EPOLLOUT|EPOLLET;
+-        stdout_ev.data.fd = STDOUT_FILENO;
+-
+-        zero(master_ev);
+-        master_ev.events = EPOLLIN|EPOLLOUT|EPOLLET;
+-        master_ev.data.fd = master;
+-
+-        zero(signal_ev);
+-        signal_ev.events = EPOLLIN;
+-        signal_ev.data.fd = signal_fd;
+-
+-        if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0) {
+-                if (errno != EPERM) {
+-                        log_error("Failed to register stdout in epoll: %m");
+-                        r = -errno;
+-                        goto finish;
+-                }
+-                /* stdout without epoll support. Likely redirected to regular file. */
+-                stdout_writable = true;
+-        }
+-
+-        if (epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 ||
+-            epoll_ctl(ep, EPOLL_CTL_ADD, signal_fd, &signal_ev) < 0) {
+-                log_error("Failed to register fds in epoll: %m");
+-                r = -errno;
+-                goto finish;
+-        }
+-
+-        for (;;) {
+-                struct epoll_event ev[16];
+-                ssize_t k;
+-                int i, nfds;
+-
+-                nfds = epoll_wait(ep, ev, ELEMENTSOF(ev), -1);
+-                if (nfds < 0) {
+-
+-                        if (errno == EINTR || errno == EAGAIN)
+-                                continue;
+-
+-                        log_error("epoll_wait(): %m");
+-                        r = -errno;
+-                        goto finish;
+-                }
+-
+-                assert(nfds >= 1);
+-
+-                for (i = 0; i < nfds; i++) {
+-                        if (ev[i].data.fd == STDIN_FILENO) {
+-
+-                                if (ev[i].events & (EPOLLIN|EPOLLHUP))
+-                                        stdin_readable = true;
+-
+-                        } else if (ev[i].data.fd == STDOUT_FILENO) {
+-
+-                                if (ev[i].events & (EPOLLOUT|EPOLLHUP))
+-                                        stdout_writable = true;
+-
+-                        } else if (ev[i].data.fd == master) {
+-
+-                                if (ev[i].events & (EPOLLIN|EPOLLHUP))
+-                                        master_readable = true;
+-
+-                                if (ev[i].events & (EPOLLOUT|EPOLLHUP))
+-                                        master_writable = true;
+-
+-                        } else if (ev[i].data.fd == signal_fd) {
+-                                struct signalfd_siginfo sfsi;
+-                                ssize_t n;
+-
+-                                n = read(signal_fd, &sfsi, sizeof(sfsi));
+-                                if (n != sizeof(sfsi)) {
+-
+-                                        if (n >= 0) {
+-                                                log_error("Failed to read from signalfd: invalid block size");
+-                                                r = -EIO;
+-                                                goto finish;
+-                                        }
+-
+-                                        if (errno != EINTR && errno != EAGAIN) {
+-                                                log_error("Failed to read from signalfd: %m");
+-                                                r = -errno;
+-                                                goto finish;
+-                                        }
+-                                } else {
+-
+-                                        if (sfsi.ssi_signo == SIGWINCH) {
+-                                                struct winsize ws;
+-
+-                                                /* The window size changed, let's forward that. */
+-                                                if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)
+-                                                        ioctl(master, TIOCSWINSZ, &ws);
+-                                        } else if (sfsi.ssi_signo == SIGTERM && arg_boot && !tried_orderly_shutdown) {
+-
+-                                                log_info("Trying to halt container. Send SIGTERM again to trigger immediate termination.");
+-
+-                                                /* This only works for systemd... */
+-                                                tried_orderly_shutdown = true;
+-                                                kill(pid, SIGRTMIN+3);
+-
+-                                        } else {
+-                                                r = 0;
+-                                                goto finish;
+-                                        }
+-                                }
+-                        }
+-                }
+-
+-                while ((stdin_readable && in_buffer_full <= 0) ||
+-                       (master_writable && in_buffer_full > 0) ||
+-                       (master_readable && out_buffer_full <= 0) ||
+-                       (stdout_writable && out_buffer_full > 0)) {
+-
+-                        if (stdin_readable && in_buffer_full < LINE_MAX) {
+-
+-                                k = read(STDIN_FILENO, in_buffer + in_buffer_full, LINE_MAX - in_buffer_full);
+-                                if (k < 0) {
+-
+-                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
+-                                                stdin_readable = false;
+-                                        else {
+-                                                log_error("read(): %m");
+-                                                r = -errno;
+-                                                goto finish;
+-                                        }
+-                                } else
+-                                        in_buffer_full += (size_t) k;
+-                        }
+-
+-                        if (master_writable && in_buffer_full > 0) {
+-
+-                                k = write(master, in_buffer, in_buffer_full);
+-                                if (k < 0) {
+-
+-                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
+-                                                master_writable = false;
+-                                        else {
+-                                                log_error("write(): %m");
+-                                                r = -errno;
+-                                                goto finish;
+-                                        }
+-
+-                                } else {
+-                                        assert(in_buffer_full >= (size_t) k);
+-                                        memmove(in_buffer, in_buffer + k, in_buffer_full - k);
+-                                        in_buffer_full -= k;
+-                                }
+-                        }
+-
+-                        if (master_readable && out_buffer_full < LINE_MAX) {
+-
+-                                k = read(master, out_buffer + out_buffer_full, LINE_MAX - out_buffer_full);
+-                                if (k < 0) {
+-
+-                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
+-                                                master_readable = false;
+-                                        else {
+-                                                log_error("read(): %m");
+-                                                r = -errno;
+-                                                goto finish;
+-                                        }
+-                                }  else
+-                                        out_buffer_full += (size_t) k;
+-                        }
+-
+-                        if (stdout_writable && out_buffer_full > 0) {
+-
+-                                k = write(STDOUT_FILENO, out_buffer, out_buffer_full);
+-                                if (k < 0) {
+-
+-                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
+-                                                stdout_writable = false;
+-                                        else {
+-                                                log_error("write(): %m");
+-                                                r = -errno;
+-                                                goto finish;
+-                                        }
+-
+-                                } else {
+-                                        assert(out_buffer_full >= (size_t) k);
+-                                        memmove(out_buffer, out_buffer + k, out_buffer_full - k);
+-                                        out_buffer_full -= k;
+-                                }
+-                        }
+-                }
+-        }
+-
+-finish:
+-        if (ep >= 0)
+-                close_nointr_nofail(ep);
+-
+-        if (signal_fd >= 0)
+-                close_nointr_nofail(signal_fd);
+-
+-        return r;
+-}
+-
+ static int register_machine(void) {
+         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+         _cleanup_bus_unref_ sd_bus *bus = NULL;
+@@ -1683,7 +1442,7 @@ int main(int argc, char *argv[]) {
+                 fdset_free(fds);
+                 fds = NULL;
+-                if (process_pty(master, pid, &mask) < 0)
++                if (process_pty(master, &mask, arg_boot ? pid : 0, SIGRTMIN+3) < 0)
+                         goto finish;
+                 if (saved_attr_valid)
+diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c
+new file mode 100644
+index 0000000..1e2852b
+--- /dev/null
++++ b/src/shared/ptyfwd.c
+@@ -0,0 +1,252 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2010-2013 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <sys/epoll.h>
++#include <sys/signalfd.h>
++#include <sys/ioctl.h>
++#include <limits.h>
++#include <termios.h>
++
++#include "util.h"
++#include "ptyfwd.h"
++
++int process_pty(int master, sigset_t *mask, pid_t kill_pid, int signo) {
++        char in_buffer[LINE_MAX], out_buffer[LINE_MAX];
++        size_t in_buffer_full = 0, out_buffer_full = 0;
++        struct epoll_event stdin_ev, stdout_ev, master_ev, signal_ev;
++        bool stdin_readable = false, stdout_writable = false, master_readable = false, master_writable = false;
++        bool tried_orderly_shutdown = false;
++        _cleanup_close_ int ep = -1, signal_fd = -1;
++
++        assert(master >= 0);
++        assert(mask);
++        assert(kill_pid == 0 || kill_pid > 1);
++        assert(signo >= 0 && signo < _NSIG);
++
++        fd_nonblock(STDIN_FILENO, 1);
++        fd_nonblock(STDOUT_FILENO, 1);
++        fd_nonblock(master, 1);
++
++        signal_fd = signalfd(-1, mask, SFD_NONBLOCK|SFD_CLOEXEC);
++        if (signal_fd < 0) {
++                log_error("signalfd(): %m");
++                return -errno;
++        }
++
++        ep = epoll_create1(EPOLL_CLOEXEC);
++        if (ep < 0) {
++                log_error("Failed to create epoll: %m");
++                return -errno;
++        }
++
++        /* We read from STDIN only if this is actually a TTY,
++         * otherwise we assume non-interactivity. */
++        if (isatty(STDIN_FILENO)) {
++                zero(stdin_ev);
++                stdin_ev.events = EPOLLIN|EPOLLET;
++                stdin_ev.data.fd = STDIN_FILENO;
++
++                if (epoll_ctl(ep, EPOLL_CTL_ADD, STDIN_FILENO, &stdin_ev) < 0) {
++                        log_error("Failed to register STDIN in epoll: %m");
++                        return -errno;
++                }
++        }
++
++        zero(stdout_ev);
++        stdout_ev.events = EPOLLOUT|EPOLLET;
++        stdout_ev.data.fd = STDOUT_FILENO;
++
++        zero(master_ev);
++        master_ev.events = EPOLLIN|EPOLLOUT|EPOLLET;
++        master_ev.data.fd = master;
++
++        zero(signal_ev);
++        signal_ev.events = EPOLLIN;
++        signal_ev.data.fd = signal_fd;
++
++        if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0) {
++                if (errno != EPERM) {
++                        log_error("Failed to register stdout in epoll: %m");
++                        return -errno;
++                }
++
++                /* stdout without epoll support. Likely redirected to regular file. */
++                stdout_writable = true;
++        }
++
++        if (epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 ||
++            epoll_ctl(ep, EPOLL_CTL_ADD, signal_fd, &signal_ev) < 0) {
++                log_error("Failed to register fds in epoll: %m");
++                return -errno;
++        }
++
++        for (;;) {
++                struct epoll_event ev[16];
++                ssize_t k;
++                int i, nfds;
++
++                nfds = epoll_wait(ep, ev, ELEMENTSOF(ev), -1);
++                if (nfds < 0) {
++
++                        if (errno == EINTR || errno == EAGAIN)
++                                continue;
++
++                        log_error("epoll_wait(): %m");
++                        return -errno;
++                }
++
++                assert(nfds >= 1);
++
++                for (i = 0; i < nfds; i++) {
++                        if (ev[i].data.fd == STDIN_FILENO) {
++
++                                if (ev[i].events & (EPOLLIN|EPOLLHUP))
++                                        stdin_readable = true;
++
++                        } else if (ev[i].data.fd == STDOUT_FILENO) {
++
++                                if (ev[i].events & (EPOLLOUT|EPOLLHUP))
++                                        stdout_writable = true;
++
++                        } else if (ev[i].data.fd == master) {
++
++                                if (ev[i].events & (EPOLLIN|EPOLLHUP))
++                                        master_readable = true;
++
++                                if (ev[i].events & (EPOLLOUT|EPOLLHUP))
++                                        master_writable = true;
++
++                        } else if (ev[i].data.fd == signal_fd) {
++                                struct signalfd_siginfo sfsi;
++                                ssize_t n;
++
++                                n = read(signal_fd, &sfsi, sizeof(sfsi));
++                                if (n != sizeof(sfsi)) {
++
++                                        if (n >= 0) {
++                                                log_error("Failed to read from signalfd: invalid block size");
++                                                return -EIO;
++                                        }
++
++                                        if (errno != EINTR && errno != EAGAIN) {
++                                                log_error("Failed to read from signalfd: %m");
++                                                return -errno;
++                                        }
++                                } else {
++
++                                        if (sfsi.ssi_signo == SIGWINCH) {
++                                                struct winsize ws;
++
++                                                /* The window size changed, let's forward that. */
++                                                if (ioctl(STDIN_FILENO, TIOCGWINSZ, &ws) >= 0)
++                                                        ioctl(master, TIOCSWINSZ, &ws);
++
++                                        } else if (sfsi.ssi_signo == SIGTERM && kill_pid > 0 && signo > 0 && !tried_orderly_shutdown) {
++
++                                                if (kill(kill_pid, signo) < 0)
++                                                        return 0;
++
++                                                log_info("Trying to halt container. Send SIGTERM again to trigger immediate termination.");
++
++                                                /* This only works for systemd... */
++                                                tried_orderly_shutdown = true;
++
++                                        } else
++                                                return 0;
++                                }
++                        }
++                }
++
++                while ((stdin_readable && in_buffer_full <= 0) ||
++                       (master_writable && in_buffer_full > 0) ||
++                       (master_readable && out_buffer_full <= 0) ||
++                       (stdout_writable && out_buffer_full > 0)) {
++
++                        if (stdin_readable && in_buffer_full < LINE_MAX) {
++
++                                k = read(STDIN_FILENO, in_buffer + in_buffer_full, LINE_MAX - in_buffer_full);
++                                if (k < 0) {
++
++                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
++                                                stdin_readable = false;
++                                        else {
++                                                log_error("read(): %m");
++                                                return -errno;
++                                        }
++                                } else
++                                        in_buffer_full += (size_t) k;
++                        }
++
++                        if (master_writable && in_buffer_full > 0) {
++
++                                k = write(master, in_buffer, in_buffer_full);
++                                if (k < 0) {
++
++                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
++                                                master_writable = false;
++                                        else {
++                                                log_error("write(): %m");
++                                                return -errno;
++                                        }
++
++                                } else {
++                                        assert(in_buffer_full >= (size_t) k);
++                                        memmove(in_buffer, in_buffer + k, in_buffer_full - k);
++                                        in_buffer_full -= k;
++                                }
++                        }
++
++                        if (master_readable && out_buffer_full < LINE_MAX) {
++
++                                k = read(master, out_buffer + out_buffer_full, LINE_MAX - out_buffer_full);
++                                if (k < 0) {
++
++                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
++                                                master_readable = false;
++                                        else {
++                                                log_error("read(): %m");
++                                                return -errno;
++                                        }
++                                }  else
++                                        out_buffer_full += (size_t) k;
++                        }
++
++                        if (stdout_writable && out_buffer_full > 0) {
++
++                                k = write(STDOUT_FILENO, out_buffer, out_buffer_full);
++                                if (k < 0) {
++
++                                        if (errno == EAGAIN || errno == EPIPE || errno == ECONNRESET || errno == EIO)
++                                                stdout_writable = false;
++                                        else {
++                                                log_error("write(): %m");
++                                                return -errno;
++                                        }
++
++                                } else {
++                                        assert(out_buffer_full >= (size_t) k);
++                                        memmove(out_buffer, out_buffer + k, out_buffer_full - k);
++                                        out_buffer_full -= k;
++                                }
++                        }
++                }
++        }
++}
+diff --git a/src/shared/ptyfwd.h b/src/shared/ptyfwd.h
+new file mode 100644
+index 0000000..8b65702
+--- /dev/null
++++ b/src/shared/ptyfwd.h
+@@ -0,0 +1,27 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++#pragma once
++
++/***
++  This file is part of systemd.
++
++  Copyright 2010-2013 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <sys/types.h>
++#include <signal.h>
++
++int process_pty(int master, sigset_t *mask, pid_t kill_pid, int signo);
diff --git a/debian/patches/pam-module-fix-warning-about-ignoring-vtnr.patch b/debian/patches/pam-module-fix-warning-about-ignoring-vtnr.patch
new file mode 100644 (file)
index 0000000..39a2bb4
--- /dev/null
@@ -0,0 +1,23 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 19 Feb 2014 09:13:09 -0500
+Subject: pam-module: fix warning about ignoring vtnr
+
+Feb 19 22:15:01 server crond[26418]: pam_systemd(crond:session): Ignoring vtnr
+0 for  which is not seat0
+---
+ src/login/pam-module.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index 7ebb5d2..aa09ec1 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -335,7 +335,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+                         get_seat_from_display(display, NULL, &vtnr);
+         }
+-        if (seat && !streq(seat, "seat0")) {
++        if (seat && !streq(seat, "seat0") && vtnr != 0) {
+                 pam_syslog(handle, LOG_DEBUG,
+                       "Ignoring vtnr %d for %s which is not seat0", vtnr, seat);
+                 vtnr = 0;
diff --git a/debian/patches/pam-use-correct-log-level.patch b/debian/patches/pam-use-correct-log-level.patch
new file mode 100644 (file)
index 0000000..63aeec1
--- /dev/null
@@ -0,0 +1,22 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 10 Feb 2014 16:37:09 +0100
+Subject: pam: use correct log level
+
+(cherry picked from commit 3831838ae7b3ac145711bb84a71cb86cdd829975)
+---
+ src/login/pam-module.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index 4d6b052..5baf1b7 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -204,7 +204,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+         }
+         if (debug)
+-                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
++                pam_syslog(handle, LOG_DEBUG, "pam-systemd initializing");
+         r = get_user_data(handle, &username, &pw);
+         if (r != PAM_SUCCESS)
diff --git a/debian/patches/pam_systemd-Ignore-vtnr-when-seat-seat0.patch b/debian/patches/pam_systemd-Ignore-vtnr-when-seat-seat0.patch
new file mode 100644 (file)
index 0000000..7c4ad54
--- /dev/null
@@ -0,0 +1,29 @@
+From: Matthew Monaco <matthew.monaco@0x01b.net>
+Date: Fri, 24 Jan 2014 11:23:01 -0700
+Subject: pam_systemd: Ignore vtnr when seat != seat0
+
+logind considers it an error for a seat other than seat0 to have a
+non-zero vtnr for CreateSession
+
+(cherry picked from commit d7353ef6095f5e7db63d9cc898c7134b64482550)
+---
+ src/login/pam-module.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index 973daf7..7ebb5d2 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -335,6 +335,12 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+                         get_seat_from_display(display, NULL, &vtnr);
+         }
++        if (seat && !streq(seat, "seat0")) {
++                pam_syslog(handle, LOG_DEBUG,
++                      "Ignoring vtnr %d for %s which is not seat0", vtnr, seat);
++                vtnr = 0;
++        }
++
+         if (!type)
+                 type = !isempty(display) ? "x11" :
+                         !isempty(tty) ? "tty" : "unspecified";
diff --git a/debian/patches/pam_systemd-do-not-set-XDG_RUNTIME_DIR-if-the-sessio.patch b/debian/patches/pam_systemd-do-not-set-XDG_RUNTIME_DIR-if-the-sessio.patch
new file mode 100644 (file)
index 0000000..51e5d3c
--- /dev/null
@@ -0,0 +1,197 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 26 Nov 2013 05:05:00 +0100
+Subject: pam_systemd: do not set XDG_RUNTIME_DIR if the session's original
+ user is not the same as the newly logged in one
+
+It's better not to set any XDG_RUNTIME_DIR at all rather than one of a
+different user. So let's do this.
+
+This changes the bus call parameters of CreateSession(), but that is
+explicitly an internal API hence should be fine. Note however, that a
+logind restart (the way the RPM postinst scriptlets do it) is necessary
+to make things work again.
+
+(cherry picked from commit baae0358f349870544884e405e82e4be7d8add9f)
+
+Conflicts:
+       src/login/logind-dbus.c
+       src/login/logind-session-dbus.c
+       src/login/pam-module.c
+
+Note: Backported by Dr. Werner Fink <werner@suse.de>
+---
+ src/login/logind-dbus.c         |  1 +
+ src/login/logind-session-dbus.c |  1 +
+ src/login/pam-module.c          | 67 ++++++++++++++++++++++-------------------
+ 3 files changed, 38 insertions(+), 31 deletions(-)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index 583d62e..6f3e442 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -523,6 +523,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message) {
+                                 DBUS_TYPE_OBJECT_PATH, &path,
+                                 DBUS_TYPE_STRING, &session->user->runtime_path,
+                                 DBUS_TYPE_UNIX_FD, &fifo_fd,
++                                DBUS_TYPE_UINT32, &session->user->uid,
+                                 DBUS_TYPE_STRING, &cseat,
+                                 DBUS_TYPE_UINT32, &vtnr,
+                                 DBUS_TYPE_BOOLEAN, &exists,
+diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
+index be4e01c..86b0746 100644
+--- a/src/login/logind-session-dbus.c
++++ b/src/login/logind-session-dbus.c
+@@ -755,6 +755,7 @@ int session_send_create_reply(Session *s, DBusError *error) {
+                                     DBUS_TYPE_OBJECT_PATH, &path,
+                                     DBUS_TYPE_STRING, &s->user->runtime_path,
+                                     DBUS_TYPE_UNIX_FD, &fifo_fd,
++                                    DBUS_TYPE_UINT32, &s->user->uid,
+                                     DBUS_TYPE_STRING, &cseat,
+                                     DBUS_TYPE_UINT32, &vtnr,
+                                     DBUS_TYPE_BOOLEAN, &exists,
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index aa09ec1..4d6b052 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -86,31 +86,24 @@ static int get_user_data(
+         const char *username = NULL;
+         struct passwd *pw = NULL;
+-        uid_t uid;
+         int r;
+         assert(handle);
+         assert(ret_username);
+         assert(ret_pw);
+-        r = audit_loginuid_from_pid(0, &uid);
+-        if (r >= 0)
+-                pw = pam_modutil_getpwuid(handle, uid);
+-        else {
+-                r = pam_get_user(handle, &username, NULL);
+-                if (r != PAM_SUCCESS) {
+-                        pam_syslog(handle, LOG_ERR, "Failed to get user name.");
+-                        return r;
+-                }
+-
+-                if (isempty(username)) {
+-                        pam_syslog(handle, LOG_ERR, "User name not valid.");
+-                        return PAM_AUTH_ERR;
+-                }
++        r = pam_get_user(handle, &username, NULL);
++        if (r != PAM_SUCCESS) {
++                pam_syslog(handle, LOG_ERR, "Failed to get user name.");
++                return r;
++        }
+-                pw = pam_modutil_getpwnam(handle, username);
++        if (isempty(username)) {
++                pam_syslog(handle, LOG_ERR, "User name not valid.");
++                return PAM_AUTH_ERR;
+         }
++        pw = pam_modutil_getpwnam(handle, username);
+         if (!pw) {
+                 pam_syslog(handle, LOG_ERR, "Failed to get user data.");
+                 return PAM_USER_UNKNOWN;
+@@ -123,16 +116,14 @@ static int get_user_data(
+ }
+ static int get_seat_from_display(const char *display, const char **seat, uint32_t *vtnr) {
+-        _cleanup_free_ char *p = NULL;
+-        int r;
+-        _cleanup_close_ int fd = -1;
+         union sockaddr_union sa = {
+                 .un.sun_family = AF_UNIX,
+         };
++         _cleanup_free_ char *p = NULL, *tty = NULL;
++         _cleanup_close_ int fd = -1;
+         struct ucred ucred;
+         socklen_t l;
+-        _cleanup_free_ char *tty = NULL;
+-        int v;
++        int v, r;
+         assert(display);
+         assert(vtnr);
+@@ -194,14 +185,12 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+         dbus_bool_t remote, existing;
+         int r;
+         uint32_t vtnr = 0;
++        uid_t original_uid;
+         assert(handle);
+         dbus_error_init(&error);
+-        if (debug)
+-                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
+-
+         /* Make this a NOP on non-logind systems */
+         if (!logind_running())
+                 return PAM_SUCCESS;
+@@ -214,6 +203,9 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+                 goto finish;
+         }
++        if (debug)
++                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
++
+         r = get_user_data(handle, &username, &pw);
+         if (r != PAM_SUCCESS)
+                 goto finish;
+@@ -381,7 +373,11 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+         if (debug)
+                 pam_syslog(handle, LOG_DEBUG, "Asking logind to create session: "
+                            "uid=%u pid=%u service=%s type=%s class=%s seat=%s vtnr=%u tty=%s display=%s remote=%s remote_user=%s remote_host=%s",
+-                           uid, pid, service, type, class, seat, vtnr, tty, display, yes_no(remote), remote_user, remote_host);
++                              pw->pw_uid, pid,
++                              strempty(service),
++                              type, class,
++                              seat, vtnr, tty, display,
++                              yes_no(remote), remote_user, remote_host);
+         reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error);
+         if (!reply) {
+@@ -395,6 +391,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+                                    DBUS_TYPE_OBJECT_PATH, &object_path,
+                                    DBUS_TYPE_STRING, &runtime_path,
+                                    DBUS_TYPE_UNIX_FD, &session_fd,
++                                   DBUS_TYPE_UINT32, &original_uid,
+                                    DBUS_TYPE_STRING, &seat,
+                                    DBUS_TYPE_UINT32, &vtnr,
+                                    DBUS_TYPE_BOOLEAN, &existing,
+@@ -406,8 +403,8 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+         if (debug)
+                 pam_syslog(handle, LOG_DEBUG, "Reply from logind: "
+-                           "id=%s object_path=%s runtime_path=%s session_fd=%d seat=%s vtnr=%u",
+-                           id, object_path, runtime_path, session_fd, seat, vtnr);
++                           "id=%s object_path=%s runtime_path=%s session_fd=%d seat=%s vtnr=%u original_uid=%u",
++                           id, object_path, runtime_path, session_fd, seat, vtnr, original_uid);
+         r = pam_misc_setenv(handle, "XDG_SESSION_ID", id, 0);
+         if (r != PAM_SUCCESS) {
+@@ -415,10 +412,18 @@ _public_ PAM_EXTERN int pam_sm_open_session(
+                 goto finish;
+         }
+-        r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0);
+-        if (r != PAM_SUCCESS) {
+-                pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
+-                goto finish;
++        if (original_uid == pw->pw_uid) {
++                /* Don't set $XDG_RUNTIME_DIR if the user we now
++                 * authenticated for does not match the original user
++                 * of the session. We do this in order not to result
++                 * in privileged apps clobbering the runtime directory
++                 * unnecessarily. */
++
++                r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0);
++                if (r != PAM_SUCCESS) {
++                         pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
++                         goto finish;
++                }
+         }
+         if (!isempty(seat)) {
diff --git a/debian/patches/random-seed-improve-debugging-messages-a-bit.patch b/debian/patches/random-seed-improve-debugging-messages-a-bit.patch
new file mode 100644 (file)
index 0000000..c761cfc
--- /dev/null
@@ -0,0 +1,69 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 12 Nov 2013 22:05:16 -0500
+Subject: random-seed: improve debugging messages a bit
+
+---
+ Makefile.am                   | 2 ++
+ src/random-seed/random-seed.c | 8 ++++----
+ 2 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 910e780..16a5c3c 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -159,6 +159,7 @@ AM_CPPFLAGS = \
+       -DSYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH=\"$(rootbindir)/systemd-tty-ask-password-agent\" \
+       -DSYSTEMD_STDIO_BRIDGE_BINARY_PATH=\"$(bindir)/systemd-stdio-bridge\" \
+       -DROOTPREFIX=\"$(rootprefix)\" \
++      -DRANDOM_SEED_DIR=\"$(localstatedir)/lib/systemd/\" \
+       -DRANDOM_SEED=\"$(localstatedir)/lib/systemd/random-seed\" \
+       -DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" \
+       -DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" \
+@@ -4242,6 +4243,7 @@ substitutions = \
+        '|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \
+        '|PACKAGE_NAME=$(PACKAGE_NAME)|' \
+        '|PACKAGE_URL=$(PACKAGE_URL)|' \
++       '|RANDOM_SEED_DIR=$(localstatedir)/lib/systemd/|' \
+        '|RANDOM_SEED=$(localstatedir)/lib/systemd/random-seed|' \
+        '|prefix=$(prefix)|' \
+        '|exec_prefix=$(exec_prefix)|' \
+diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c
+index afbd500..af79ecf 100644
+--- a/src/random-seed/random-seed.c
++++ b/src/random-seed/random-seed.c
+@@ -72,7 +72,7 @@ int main(int argc, char *argv[]) {
+         r = mkdir_parents_label(RANDOM_SEED, 0755);
+         if (r < 0) {
+-                log_error("Failed to create parent directory of " RANDOM_SEED ": %s", strerror(-r));
++                log_error("Failed to create directory " RANDOM_SEED_DIR ": %s", strerror(-r));
+                 goto finish;
+         }
+@@ -86,7 +86,7 @@ int main(int argc, char *argv[]) {
+                 if (seed_fd < 0) {
+                         seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY);
+                         if (seed_fd < 0) {
+-                                log_error("Failed to open random seed: %m");
++                                log_error("Failed to open " RANDOM_SEED ": %m");
+                                 r = -errno;
+                                 goto finish;
+                         }
+@@ -106,7 +106,7 @@ int main(int argc, char *argv[]) {
+                 if (k <= 0) {
+                         if (r != 0)
+-                                log_error("Failed to read seed file: %m");
++                                log_error("Failed to read seed from " RANDOM_SEED ": %m");
+                         r = k == 0 ? -EIO : (int) k;
+@@ -125,7 +125,7 @@ int main(int argc, char *argv[]) {
+                 seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
+                 if (seed_fd < 0) {
+-                        log_error("Failed to open random seed: %m");
++                        log_error("Failed to open " RANDOM_SEED ": %m");
+                         r = -errno;
+                         goto finish;
+                 }
diff --git a/debian/patches/reduce-the-amount-of-messages-logged-to-dev-kmsg-whe.patch b/debian/patches/reduce-the-amount-of-messages-logged-to-dev-kmsg-whe.patch
new file mode 100644 (file)
index 0000000..6bca2a4
--- /dev/null
@@ -0,0 +1,37 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Sat, 5 Apr 2014 13:59:01 -0400
+Subject: reduce the amount of messages logged to /dev/kmsg when "debug" is
+ specified
+
+(cherry picked from commit b2103dccb354de3f38c49c14ccb637bdf665e40f)
+
+Conflicts:
+       src/core/main.c
+
+(cherry picked from commit c025499ceaf503d52f07a93fa8244f94fe6d6a73)
+
+Conflicts:
+       src/core/main.c
+---
+ src/core/main.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index 935762f..1ac1ba7 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -411,12 +411,9 @@ static int parse_proc_cmdline_word(const char *word) {
+         } else if (streq(word, "quiet"))
+                 arg_show_status = false;
+         else if (streq(word, "debug")) {
+-                /* Log to kmsg, the journal socket will fill up before the
+-                 * journal is started and tools running during that time
+-                 * will block with every log message for for 60 seconds,
+-                 * before they give up. */
+                 log_set_max_level(LOG_DEBUG);
+-                log_set_target(LOG_TARGET_KMSG);
++                if (detect_container(NULL) > 0)
++                        log_set_target(LOG_TARGET_KMSG);
+         } else if (!in_initrd()) {
+                 unsigned i;
diff --git a/debian/patches/rpm-don-t-hardcode-the-binary-paths-in-the-macros-re.patch b/debian/patches/rpm-don-t-hardcode-the-binary-paths-in-the-macros-re.patch
new file mode 100644 (file)
index 0000000..be6ec5e
--- /dev/null
@@ -0,0 +1,71 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 13 Jun 2014 19:05:22 +0200
+Subject: rpm: don't hardcode the binary paths in the macros, rely on $PATH
+
+this gives us a little bit more freedom to move things around later on,
+as we don't hardcode the systemd paths in old RPMs that shall work with
+new systemds.
+
+(cherry picked from commit 8cf7c96517c3688d29b30651adcda9e71e7fcb07)
+(cherry picked from commit 2ea8cba266174f4c4afe7b0a5fbbfebf93fb37cc)
+---
+ src/core/macros.systemd.in | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in
+index 89b4825..167016a 100644
+--- a/src/core/macros.systemd.in
++++ b/src/core/macros.systemd.in
+@@ -37,42 +37,42 @@ Requires(postun): systemd \
+ %systemd_post() \
+ if [ $1 -eq 1 ] ; then \
+         # Initial installation \
+-        @rootbindir@/systemctl preset %{?*} >/dev/null 2>&1 || : \
++        systemctl preset %{?*} >/dev/null 2>&1 || : \
+ fi \
+ %{nil}
+ %systemd_preun() \
+ if [ $1 -eq 0 ] ; then \
+         # Package removal, not upgrade \
+-        @rootbindir@/systemctl --no-reload disable %{?*} > /dev/null 2>&1 || : \
+-        @rootbindir@/systemctl stop %{?*} > /dev/null 2>&1 || : \
++        systemctl --no-reload disable %{?*} > /dev/null 2>&1 || : \
++        systemctl stop %{?*} > /dev/null 2>&1 || : \
+ fi \
+ %{nil}
+ %systemd_postun() \
+-@rootbindir@/systemctl daemon-reload >/dev/null 2>&1 || : \
++systemctl daemon-reload >/dev/null 2>&1 || : \
+ %{nil}
+ %systemd_postun_with_restart() \
+-@rootbindir@/systemctl daemon-reload >/dev/null 2>&1 || : \
++systemctl daemon-reload >/dev/null 2>&1 || : \
+ if [ $1 -ge 1 ] ; then \
+         # Package upgrade, not uninstall \
+-        @rootbindir@/systemctl try-restart %{?*} >/dev/null 2>&1 || : \
++        systemctl try-restart %{?*} >/dev/null 2>&1 || : \
+ fi \
+ %{nil}
+ %udev_hwdb_update() \
+-@rootbindir@/udevadm hwdb --update >/dev/null 2>&1 || : \
++udevadm hwdb --update >/dev/null 2>&1 || : \
+ %{nil}
+ %udev_rules_update() \
+-@rootbindir@/udevadm control --reload >/dev/null 2>&1 || : \
++udevadm control --reload >/dev/null 2>&1 || : \
+ %{nil}
+ %journal_catalog_update() \
+-@rootbindir@/journalctl --update-catalog >/dev/null 2>&1 || : \
++journalctl --update-catalog >/dev/null 2>&1 || : \
+ %{nil}
+ %tmpfiles_create() \
+-@rootbindir@/systemd-tmpfiles --create %{?*} >/dev/null 2>&1 || : \
++systemd-tmpfiles --create %{?*} >/dev/null 2>&1 || : \
+ %{nil}
diff --git a/debian/patches/rules-add-loop-control-and-btrfs-control-to-disk-gro.patch b/debian/patches/rules-add-loop-control-and-btrfs-control-to-disk-gro.patch
new file mode 100644 (file)
index 0000000..d4a750c
--- /dev/null
@@ -0,0 +1,23 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 18 Jun 2014 03:37:32 +0200
+Subject: rules: add loop-control and btrfs-control to "disk" group
+
+(cherry picked from commit 27e7c26268bd4c16edb92f2b8a8626b00c6f2dad)
+(cherry picked from commit cc1e6e5c1432bdeef730bfdfb09cc61d750b748d)
+---
+ rules/50-udev-default.rules | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules
+index 0bccf67..23ca088 100644
+--- a/rules/50-udev-default.rules
++++ b/rules/50-udev-default.rules
+@@ -59,6 +59,8 @@ KERNEL=="pktcdvd", GROUP="cdrom"
+ SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape"
+ SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk"
+ KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
++KERNEL=="loop-control", GROUP="disk", OPTIONS+="static_node=loop-control"
++KERNEL=="btrfs-control", GROUP="disk"
+ KERNEL=="rawctl", GROUP="disk"
+ SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk"
+ SUBSYSTEM=="aoe", GROUP="disk", MODE="0220"
diff --git a/debian/patches/rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch b/debian/patches/rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
new file mode 100644 (file)
index 0000000..88b11be
--- /dev/null
@@ -0,0 +1,34 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 16 Oct 2013 02:51:24 +0200
+Subject: rules: don't limit some of the rules to the "add" action
+
+Devices should show up in systemd regardless whether the user invoked
+"udevadm trigger" or not. Before this change some devices might have
+suddenly disappeared due issuing that command.
+
+Conflicts:
+       rules/99-systemd.rules.in
+---
+ rules/99-systemd.rules.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index 3c99475..307f18f 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -53,12 +53,12 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy
+ # Pull in backlight save/restore for all firmware backlight devices
+-ACTION=="add", SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
++SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
+ # Asynchronously mount file systems implemented by these modules as
+ # soon as they are loaded.
+-SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
+-SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"
++SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
++SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"
+ LABEL="systemd_end"
diff --git a/debian/patches/rules-drivers-do-not-reset-RUN-list.patch b/debian/patches/rules-drivers-do-not-reset-RUN-list.patch
new file mode 100644 (file)
index 0000000..df0fedb
--- /dev/null
@@ -0,0 +1,33 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Fri, 3 Jan 2014 01:32:03 +0100
+Subject: rules: drivers - do not reset RUN list
+
+(cherry picked from commit b11d8d199334494d3434875e63856540cec7f8d1)
+---
+ rules/80-drivers.rules | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/rules/80-drivers.rules b/rules/80-drivers.rules
+index 0b22d73..8551f47 100644
+--- a/rules/80-drivers.rules
++++ b/rules/80-drivers.rules
+@@ -2,12 +2,12 @@
+ ACTION=="remove", GOTO="drivers_end"
+-ENV{MODALIAS}=="?*", RUN{builtin}="kmod load $env{MODALIAS}"
+-SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}="kmod load tifm_sd"
+-SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}="kmod load tifm_ms"
+-SUBSYSTEM=="memstick", RUN{builtin}="kmod load ms_block mspro_block"
+-SUBSYSTEM=="i2o", RUN{builtin}="kmod load i2o_block"
+-SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}="kmod load ppdev"
+-KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}="kmod load sm_ftl"
++ENV{MODALIAS}=="?*", RUN{builtin}+="kmod load $env{MODALIAS}"
++SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}+="kmod load tifm_sd"
++SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}+="kmod load tifm_ms"
++SUBSYSTEM=="memstick", RUN{builtin}+="kmod load ms_block mspro_block"
++SUBSYSTEM=="i2o", RUN{builtin}+="kmod load i2o_block"
++SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}+="kmod load ppdev"
++KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}+="kmod load sm_ftl"
+ LABEL="drivers_end"
diff --git a/debian/patches/rules-expose-loop-block-devices-to-systemd.patch b/debian/patches/rules-expose-loop-block-devices-to-systemd.patch
new file mode 100644 (file)
index 0000000..b4f707f
--- /dev/null
@@ -0,0 +1,31 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 16 Oct 2013 02:49:54 +0200
+Subject: rules: expose loop block devices to systemd
+
+Since the kernel no longer exposes a large number of "dead" loop devices
+it is OK to expose them now in systemd, so let's do that. This has the
+benefit that mount dependencies on loop devices start to work.
+---
+ rules/99-systemd.rules.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index bbb7d0c..3c99475 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -11,12 +11,12 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd"
+ KERNEL=="vport*", TAG+="systemd"
+-SUBSYSTEM=="block", KERNEL!="ram*|loop*", TAG+="systemd"
+-SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
++SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd"
++SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
+ # Ignore encrypted devices with no identified superblock on it, since
+ # we are probably still calling mke2fs or mkswap on it.
+-SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0"
++SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0"
+ # Ignore raid devices that are not yet assembled and started
+ SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0"
diff --git a/debian/patches/rules-load-path_id-on-DRM-devices.patch b/debian/patches/rules-load-path_id-on-DRM-devices.patch
new file mode 100644 (file)
index 0000000..61c4443
--- /dev/null
@@ -0,0 +1,43 @@
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Sun, 3 Nov 2013 13:01:20 +0100
+Subject: rules: load path_id on DRM devices
+
+The path_id-builtin provides useful unique aliases for DRM devices. If we
+want to configure DRM render-nodes for compositors, we want to avoid
+storing the whole sys-path in configuration files. Hence, allow users to
+store the short PATH_ID instead.
+
+Load path_id-builtin unconditionally on DRM devices now to always provide
+this alias.
+---
+ Makefile.am        | 1 +
+ rules/60-drm.rules | 8 ++++++++
+ 2 files changed, 9 insertions(+)
+ create mode 100644 rules/60-drm.rules
+
+diff --git a/Makefile.am b/Makefile.am
+index 7ab345a..34de7f2 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2209,6 +2209,7 @@ dist_udevrules_DATA += \
+       rules/99-systemd.rules \
+       rules/42-usb-hid-pm.rules \
+       rules/50-udev-default.rules \
++      rules/60-drm.rules \
+       rules/60-keyboard.rules \
+       rules/60-persistent-storage-tape.rules \
+       rules/60-persistent-serial.rules \
+diff --git a/rules/60-drm.rules b/rules/60-drm.rules
+new file mode 100644
+index 0000000..de038c1
+--- /dev/null
++++ b/rules/60-drm.rules
+@@ -0,0 +1,8 @@
++# do not edit this file, it will be overwritten on update
++
++ACTION=="remove", GOTO="drm_end"
++SUBSYSTEM!="drm", GOTO="drm_end"
++
++SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id"
++
++LABEL="drm_end"
diff --git a/debian/patches/rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch b/debian/patches/rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch
new file mode 100644 (file)
index 0000000..b66decd
--- /dev/null
@@ -0,0 +1,28 @@
+From: Peter Rajnoha <prajnoha@redhat.com>
+Date: Mon, 10 Mar 2014 22:58:14 +0100
+Subject: rules: mark loop device as SYSTEMD_READY=0 if no file is attached
+
+Check existence of loop/backing_file in sysfs and mark loop devices with
+SYSTEMD_READY if missing. Such loop files is uninitialized and it's not
+ready for use yet (there's no file attached).
+
+(cherry picked from commit ebc54302d7fc70927d5dc119e178ff03f6a911ed)
+(cherry picked from commit 28be65e12016d365783ac9646bf588ec68352b75)
+---
+ rules/99-systemd.rules.in | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index 1eaf0c1..79a03cd 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -22,6 +22,9 @@ SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_T
+ SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0"
+ SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0"
++# Ignore loop devices that don't have any file attached
++SUBSYSTEM=="block", KERNEL=="loop[0-9]*", TEST!="loop/backing_file", ENV{SYSTEMD_READY}="0"
++
+ # Ignore nbd devices in the "add" event, with "change" the nbd is ready
+ ACTION=="add", SUBSYSTEM=="block", KERNEL=="nbd*", ENV{SYSTEMD_READY}="0"
diff --git a/debian/patches/rules-remove-pointless-MODE-settings.patch b/debian/patches/rules-remove-pointless-MODE-settings.patch
new file mode 100644 (file)
index 0000000..7b99477
--- /dev/null
@@ -0,0 +1,39 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Mon, 21 Oct 2013 03:49:03 +0200
+Subject: rules: remove pointless MODE= settings
+
+Changing the default MODE= for the group accessi, but not specifying
+a GROUP= does not provide anything.
+
+It disables the default logic that the mode switches to 0660 as soon
+as a GROUP= is specifed, which make custom rules uneccesarily complicated.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=70665
+---
+ rules/50-udev-default.rules | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules
+index f764789..679dfdf 100644
+--- a/rules/50-udev-default.rules
++++ b/rules/50-udev-default.rules
+@@ -20,9 +20,7 @@ KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP=
+ SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"
+-SUBSYSTEM=="input", KERNEL=="mouse*|mice|event*", MODE="0640"
+-SUBSYSTEM=="input", KERNEL=="ts[0-9]*|uinput", MODE="0640"
+-SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0644"
++SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664"
+ SUBSYSTEM=="video4linux", GROUP="video"
+ SUBSYSTEM=="misc", KERNEL=="agpgart", GROUP="video"
+@@ -63,7 +61,7 @@ SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk"
+ SUBSYSTEM=="aoe", GROUP="disk", MODE="0220"
+ SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
+-KERNEL=="rfkill", MODE="0644"
++KERNEL=="rfkill", MODE="0664"
+ KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun"
+ KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
diff --git a/debian/patches/rules-simply-60-drm.rules.patch b/debian/patches/rules-simply-60-drm.rules.patch
new file mode 100644 (file)
index 0000000..fa898a2
--- /dev/null
@@ -0,0 +1,23 @@
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Sun, 3 Nov 2013 16:17:14 +0100
+Subject: rules: simply 60-drm.rules
+
+We don't need any GOTO, if we merge all matches into a single line.
+---
+ rules/60-drm.rules | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/rules/60-drm.rules b/rules/60-drm.rules
+index de038c1..1ed3e44 100644
+--- a/rules/60-drm.rules
++++ b/rules/60-drm.rules
+@@ -1,8 +1,3 @@
+ # do not edit this file, it will be overwritten on update
+-ACTION=="remove", GOTO="drm_end"
+-SUBSYSTEM!="drm", GOTO="drm_end"
+-
+-SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id"
+-
+-LABEL="drm_end"
++ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", IMPORT{builtin}="path_id"
diff --git a/debian/patches/run-support-system-to-match-other-commands-even-if-r.patch b/debian/patches/run-support-system-to-match-other-commands-even-if-r.patch
new file mode 100644 (file)
index 0000000..0ecc7b4
--- /dev/null
@@ -0,0 +1,110 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 6 Nov 2013 17:31:20 +0100
+Subject: run: support --system to match other commands, even if redundant
+
+Conflicts:
+       man/systemd-run.xml
+       src/run/run.c
+---
+ man/systemd-run.xml |  9 +++++++++
+ src/run/run.c       | 20 +++++++++++++-------
+ 2 files changed, 22 insertions(+), 7 deletions(-)
+
+diff --git a/man/systemd-run.xml b/man/systemd-run.xml
+index 252335b..48a0715 100644
+--- a/man/systemd-run.xml
++++ b/man/systemd-run.xml
+@@ -113,6 +113,15 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+       </varlistentry>
+       <varlistentry>
++        <term><option>--system</option></term>
++
++        <listitem>
++          <para>Talk to the service manager of the system. This is the
++          implied default.</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
+         <term><option>--scope</option></term>
+         <listitem>
+diff --git a/src/run/run.c b/src/run/run.c
+index 18a4920..a6abead 100644
+--- a/src/run/run.c
++++ b/src/run/run.c
+@@ -61,6 +61,7 @@ static int parse_argv(int argc, char *argv[]) {
+         enum {
+                 ARG_VERSION = 0x100,
+                 ARG_USER,
++                ARG_SYSTEM,
+                 ARG_SCOPE,
+                 ARG_UNIT,
+                 ARG_DESCRIPTION,
+@@ -72,6 +73,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "help",              no_argument,       NULL, 'h'             },
+                 { "version",           no_argument,       NULL, ARG_VERSION     },
+                 { "user",              no_argument,       NULL, ARG_USER        },
++                { "system",            no_argument,       NULL, ARG_SYSTEM      },
+                 { "scope",             no_argument,       NULL, ARG_SCOPE       },
+                 { "unit",              required_argument, NULL, ARG_UNIT        },
+                 { "description",       required_argument, NULL, ARG_DESCRIPTION },
+@@ -103,6 +105,10 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_user = true;
+                         break;
++                case ARG_SYSTEM:
++                        arg_user = false;
++                        break;
++
+                 case ARG_SCOPE:
+                         arg_scope = true;
+                         break;
+@@ -333,12 +339,12 @@ int main(int argc, char* argv[]) {
+         r = parse_argv(argc, argv);
+         if (r <= 0)
+-                goto fail;
++                goto finish;
+         r = find_binary(argv[optind], &command);
+         if (r < 0) {
+                 log_error("Failed to find executable %s: %s", argv[optind], strerror(-r));
+-                goto fail;
++                goto finish;
+         }
+         argv[optind] = command;
+@@ -346,7 +352,7 @@ int main(int argc, char* argv[]) {
+                 description = strv_join(argv + optind, " ");
+                 if (!description) {
+                         r = log_oom();
+-                        goto fail;
++                        goto finish;
+                 }
+                 arg_description = description;
+@@ -357,8 +363,8 @@ int main(int argc, char* argv[]) {
+         else
+                 r = sd_bus_open_system(&bus);
+         if (r < 0) {
+-                log_error("Failed to create new bus connection: %s", strerror(-r));
+-                goto fail;
++                log_error("Failed to create bus connection: %s", strerror(-r));
++                goto finish;
+         }
+         if (arg_scope)
+@@ -368,9 +374,9 @@ int main(int argc, char* argv[]) {
+         if (r < 0) {
+                 log_error("Failed start transient unit: %s", error.message ? error.message : strerror(-r));
+                 sd_bus_error_free(&error);
+-                goto fail;
++                goto finish;
+         }
+-fail:
++finish:
+         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ }
diff --git a/debian/patches/s390-getty-generator-initialize-essential-system-ter.patch b/debian/patches/s390-getty-generator-initialize-essential-system-ter.patch
new file mode 100644 (file)
index 0000000..c351ffc
--- /dev/null
@@ -0,0 +1,58 @@
+From: Hendrik Brueckner <brueckner@redhat.com>
+Date: Fri, 31 Jan 2014 17:08:37 +0100
+Subject: s390/getty-generator: initialize essential system terminals/consoles
+
+Ensure to start getty programs on all essential system consoles on Linux on
+System z.  Add these essential devices to the list of virtualization_consoles
+to always generate getty configurations.
+
+For the sake of completion, the list of essential consoles is:
+
+  /dev/sclp_line0 - Operating system messages applet (LPAR)
+  /dev/ttysclp0 - Integrated ASCII console applet (z/VM and LPAR)
+  /dev/ttyS0 - Already handled by systemd (3215 console on z/VM)
+  /dev/hvc0  - Already handled by systemd (IUCV HVC terminal on z/VM)
+
+Depending on the environment, z/VM or LPAR, only a subset of these terminals
+are available.
+
+See also RH BZ 860158[1] "Cannot login via Operating System Console into RHEL7
+instance installed on a LPAR".  This bugzilla actually blocks the installation
+of Linux on System z instances in LPAR mode.
+
+[1] https://bugzilla.redhat.com/show_bug.cgi?id=860158
+
+(cherry picked from commit 07901fc142504efb67c07875a588933dc59a3955)
+---
+ rules/99-systemd.rules.in             | 2 +-
+ src/getty-generator/getty-generator.c | 4 +++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
+index a00ffed..1eaf0c1 100644
+--- a/rules/99-systemd.rules.in
++++ b/rules/99-systemd.rules.in
+@@ -7,7 +7,7 @@
+ ACTION=="remove", GOTO="systemd_end"
+-SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd"
++SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*", TAG+="systemd"
+ KERNEL=="vport*", TAG+="systemd"
+diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
+index 6c93806..40374b5 100644
+--- a/src/getty-generator/getty-generator.c
++++ b/src/getty-generator/getty-generator.c
+@@ -91,7 +91,9 @@ int main(int argc, char *argv[]) {
+         static const char virtualization_consoles[] =
+                 "hvc0\0"
+                 "xvc0\0"
+-                "hvsi0\0";
++                "hvsi0\0"
++                "sclp_line0\0"
++                "ttysclp0\0";
+         int r = EXIT_SUCCESS;
+         char *active;
diff --git a/debian/patches/selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch b/debian/patches/selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch
new file mode 100644 (file)
index 0000000..5b9eb47
--- /dev/null
@@ -0,0 +1,41 @@
+From: Colin Walters <walters@verbum.org>
+Date: Fri, 21 Feb 2014 03:29:00 +0100
+Subject: selinux: Don't attempt to load policy in initramfs if it doesn't
+ exist
+
+Currently on at least Fedora, SELinux policy does not come in the
+initramfs.  systemd will attempt to load *both* in the initramfs and
+in the real root.
+
+Now, the selinux_init_load_policy() API has a regular error return
+value, as well as an "enforcing" boolean.  To determine enforcing
+state, it looks for /etc/selinux/config as well as the presence of
+"enforcing=" on the kernel command line.
+
+Ordinarily, neither of those exist in the initramfs, so it will return
+"unknown" for enforcing, and systemd will simply ignore the failure to
+load policy.
+
+(cherry picked from commit 37f78db2f4a33474fc349f406b0a0a48e9c573a2)
+---
+ src/core/selinux-setup.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c
+index 7a32ed5..9a5d6b2 100644
+--- a/src/core/selinux-setup.c
++++ b/src/core/selinux-setup.c
+@@ -58,6 +58,13 @@ int selinux_setup(bool *loaded_policy) {
+        cb.func_log = null_log;
+        selinux_set_callback(SELINUX_CB_LOG, cb);
++       /* Don't load policy in the initrd if we don't appear to have
++        * it.  For the real root, we check below if we've already
++        * loaded policy, and return gracefully.
++        */
++       if (in_initrd() && access(selinux_path(), F_OK) < 0)
++               return 0;
++
+        /* Already initialized by somebody else? */
+        r = getcon_raw(&con);
+        if (r == 0) {
index 2d51cecc72b78b92f3bd2c7bc23fe8678600c032..4d725e26c674e51c704f48e3f9921e5e916cf2b5 100644 (file)
@@ -1,3 +1,484 @@
+## v208-stable patches:
+acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
+fix-lingering-references-to-var-lib-backlight-random.patch
+acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
+systemctl-fix-name-mangling-for-sysv-units.patch
+cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
+journald-add-missing-error-check.patch
+bus-fix-potentially-uninitialized-memory-access.patch
+dbus-fix-return-value-of-dispatch_rqueue.patch
+modules-load-fix-error-handling.patch
+efi-never-call-qsort-on-potentially-NULL-arrays.patch
+strv-don-t-access-potentially-NULL-string-arrays.patch
+mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
+tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
+execute.c-always-set-SHELL.patch
+man-Improve-the-description-of-parameter-X-in-tmpfil.patch
+execute-more-debugging-messages.patch
+gpt-auto-generator-exit-immediately-if-in-container.patch
+systemd-order-remote-mounts-from-mountinfo-before-re.patch
+manager-when-verifying-whether-clients-may-change-en.patch
+logind-fix-bus-introspection-data-for-TakeControl.patch
+mount-check-for-NULL-before-reading-pm-what.patch
+core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
+utf8-fix-utf8_is_printable.patch
+shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
+systemd-serialize-deserialize-forbid_restart-value.patch
+core-unify-the-way-we-denote-serialization-attribute.patch
+journald-fix-minor-memory-leak.patch
+keymap-Fix-Samsung-900X-34-C.patch
+do-not-accept-garbage-from-acpi-firmware-performance.patch
+journald-remove-rotated-file-from-hashmap-when-rotat.patch
+login-fix-invalid-free-in-sd_session_get_vt.patch
+login-make-sd_session_get_vt-actually-work.patch
+udevadm.xml-document-resolve-names-option-for-test.patch
+Never-call-qsort-on-potentially-NULL-arrays.patch
+dbus-common-avoid-leak-in-error-path.patch
+drop-ins-check-return-value.patch
+Make-sure-that-we-don-t-dereference-NULL.patch
+man-add-more-markup-to-udevadm-8.patch
+shared-util-Fix-glob_extend-argument.patch
+Fix-bad-assert-in-show_pid_array.patch
+Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
+man-document-the-b-special-boot-option.patch
+logind-allow-unprivileged-session-device-access.patch
+rules-expose-loop-block-devices-to-systemd.patch
+rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
+tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
+hwdb-update.patch
+rules-remove-pointless-MODE-settings.patch
+analyze-set-white-backgound.patch
+shell-completion-dump-has-moved-to-systemd-analyze.patch
+systemd-use-unit-name-in-PrivateTmp-directories.patch
+catalog-remove-links-to-non-existent-wiki-pages.patch
+journalctl-add-list-boots-to-show-boot-IDs-and-times.patch
+udev-builtin-path_id-add-support-for-bcma-bus.patch
+udev-ata_id-log-faling-ioctls-as-debug.patch
+libudev-default-log_priority-to-INFO.patch
+nspawn-only-pass-in-slice-setting-if-it-is-set.patch
+zsh-completion-add-systemd-run.patch
+man-explain-NAME-in-systemctl-man-page.patch
+virt-move-caching-of-virtualization-check-results-in.patch
+systemctl-fix-typo-in-help-text.patch
+analyze-plot-place-the-text-on-the-side-with-most-sp.patch
+detect_virtualization-returns-NULL-pass-empty-string.patch
+rules-load-path_id-on-DRM-devices.patch
+rules-simply-60-drm.rules.patch
+udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch
+nspawn-log-out-of-memory-errors.patch
+Configurable-Timeouts-Restarts-default-values.patch
+man-fix-typo.patch
+man-do-not-use-term-in-para.patch
+cgroup-run-PID-1-in-the-root-cgroup.patch
+shutdown-trim-the-cgroup-tree-on-loop-iteration.patch
+nspawn-split-out-pty-forwaring-logic-into-ptyfwd.c.patch
+nspawn-explicitly-terminate-machines-when-we-exit-ns.patch
+run-support-system-to-match-other-commands-even-if-r.patch
+acpi-fpdt-break-on-zero-or-negative-length-read.patch
+man-add-rationale-into-systemd-halt-8.patch
+systemd-python-convert-keyword-value-to-string.patch
+systemctl-make-LOAD-column-width-dynamic.patch
+Make-hibernation-test-work-for-swap-files.patch
+man-add-docs-for-sd_is_special-and-some-man-page-sym.patch
+systemctl-return-r-instead-of-always-returning-0.patch
+journal-fix-minor-memory-leak.patch
+manager-configurable-StartLimit-default-values.patch
+man-units-fix-installation-of-systemd-nspawn-.servic.patch
+systemd-fix-memory-leak-in-cgroup-code.patch
+button-don-t-exit-if-we-cannot-handle-a-button-press.patch
+timer-properly-format-relative-timestamps-in-the-fut.patch
+timer-consider-usec_t-1-an-invalid-timestamp.patch
+udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch
+Add-support-for-saving-restoring-keyboard-backlights.patch
+static-nodes-don-t-call-mkdir.patch
+Fix-kmod-error-message-to-have-correct-version-requi.patch
+systemd-python-fix-booted-and-add-two-functions-to-d.patch
+activate-mention-E-in-the-help-text.patch
+activate-fix-crash-when-s-is-passed.patch
+journal-timestamp-support-on-console-messages.patch
+man-add-bootctl-8.patch
+zsh-completion-add-bootctl.patch
+Resolve-dev-console-to-the-active-tty-instead-of-jus.patch
+Only-disable-output-on-console-during-boot-if-needed.patch
+Fix-possible-lack-of-status-messages-on-shutdown-reb.patch
+fsck-modernization.patch
+Introduce-udev-object-cleanup-functions.patch
+util-allow-trailing-semicolons-on-define_trivial_cle.patch
+fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch
+fstab-generator-use-RequiresOverridable-for-fsck-uni.patch
+bash-completion-journalctl-file.patch
+random-seed-improve-debugging-messages-a-bit.patch
+Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch
+tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch
+core-socket-fix-SO_REUSEPORT.patch
+localed-match-converted-keymaps-before-legacy.patch
+keymap-Add-Toshiba-Satellite-U940.patch
+calendar-support-yearly-and-annually-names-the-same-.patch
+hashmap-be-a-bit-more-conservative-with-pre-allocati.patch
+manager-don-t-do-plymouth-in-a-container.patch
+nspawn-add-new-drop-capability-switch.patch
+valgrind-make-running-PID-1-in-valgrind-useful.patch
+efi-boot-generator-don-t-mount-boot-eagerly.patch
+hwdb-Update-database-of-Bluetooth-company-identifier.patch
+journal-when-appending-to-journal-file-allocate-larg.patch
+journal-make-table-const.patch
+journald-keep-statistics-on-how-of-we-hit-miss-the-m.patch
+journal-optimize-bisection-logic-a-bit-by-caching-th.patch
+journal-fix-iteration-when-we-go-backwards-from-the-.patch
+journal-allow-journal_file_copy_entry-to-work-on-non.patch
+journal-simplify-pre-allocation-logic.patch
+journald-mention-how-long-we-needed-to-flush-to-var-.patch
+automount-log-info-about-triggering-process.patch
+virt-split-detect_vm-into-separate-functions.patch
+hwdb-Update-database-of-Bluetooth-company-identi-131.patch
+sysfs-show.c-return-negative-error.patch
+util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
+docs-remove-unneeded-the-s-in-gudev-docs.patch
+man-explicitly-say-when-multiple-units-can-be-specif.patch
+systemd-treat-reload-failure-as-failure.patch
+journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch
+systemd-add-a-start-job-for-all-units-specified-with.patch
+core-device-ignore-SYSTEMD_WANTS-in-user-mode.patch
+Fix-memory-leak-in-stdout-journal-streams.patch
+man-document-is-enabled-output.patch
+hostnamed-avoid-using-NULL-in-error-path.patch
+logind-use-correct-who-enum-values-with-KillUnit.patch
+Revert-systemd-add-a-start-job-for-all-units-specifi.patch
+core-do-not-segfault-if-swap-activity-happens-when-p.patch
+kernel-install-add-h-help.patch
+kernel-install-fix-help-output.patch
+man-improve-wording-and-comma-usage-in-systemd.journ.patch
+drop-several-entries-from-kbd-model-map-whose-kbd-la.patch
+correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch
+hwdb-Update-database-of-Bluetooth-company-identi-151.patch
+Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch
+libudev-hwdb-use-libudev-not-systemd-logging.patch
+core-manager-remove-infinite-loop.patch
+util-check-for-overflow-in-greedy_realloc.patch
+journald-use-a-bit-more-cleanup-magic.patch
+journald-malloc-less-when-streaming-messages.patch
+activate-clean-up-inherited-descriptors.patch
+man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch
+units-don-t-run-readahead-done-timers-in-containers.patch
+test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch
+journal-pipe-journalctl-help-output-into-a-pager.patch
+nspawn-complain-and-continue-if-machine-has-same-id.patch
+man-beef-up-ExecStart-description.patch
+man-remove-advice-to-avoid-setting-the-same-var-more.patch
+systemctl-add-the-plain-option-to-the-help-message.patch
+Fix-a-few-resource-leaks-in-error-paths.patch
+Fix-a-few-signed-unsigned-format-string-issues.patch
+util-try-harder-to-increase-the-send-recv-buffers-of.patch
+execute-also-set-SO_SNDBUF-when-spawning-a-service-w.patch
+journal-file-protect-against-alloca-0.patch
+man-describe-journalctl-show-cursor.patch
+journal-fix-against-theoretical-undefined-behavior.patch
+journald-downgrade-warning-message-when-dev-kmsg-doe.patch
+journal-file.c-remove-redundant-assignment-of-variab.patch
+login-Don-t-stop-a-running-user-manager-from-garbage.patch
+libudev-devices-received-from-udev-are-always-initia.patch
+log-don-t-reopen-dev-console-each-time-we-call-log_o.patch
+log-when-we-log-to-dev-console-and-got-disconnected-.patch
+loginctl-when-showing-device-tree-of-seats-with-no-d.patch
+man-be-more-explicit-about-option-arguments-that-tak.patch
+man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch
+journalctl-zsh-completion-fix-several-issues-in-help.patch
+keymap-Refactor-Acer-tables.patch
+logging-reduce-send-timeout-to-something-more-sensib.patch
+DEFAULT_PATH_SPLIT_USR-macro.patch
+fstab-generator-Do-not-try-to-fsck-non-devices.patch
+logind-remove-dead-variable.patch
+hwdb-update-189.patch
+delta-replace-readdir_r-with-readdir.patch
+delta-fix-delta-for-drop-ins.patch
+delta-if-prefix-is-specified-only-show-overrides-the.patch
+log-log_error-and-friends-add-a-newline-after-each-l.patch
+man-units-tmpfiles.d-5-cleanup.patch
+tmpfiles-introduce-the-concept-of-unsafe-operations.patch
+sleep-config-fix-useless-check-for-swapfile-type.patch
+journalctl-make-sure-b-foobar-cannot-be-misunderstoo.patch
+man-resolve-word-omissions.patch
+man-improvements-to-comma-placement.patch
+man-grammar-and-wording-improvements.patch
+man-document-fail-nofail-auto-noauto.patch
+man-fix-description-of-is-enabled-returned-value.patch
+man-fix-Type-reference.patch
+man-fix-Type-reference-v2.patch
+hwdb-Update-database-of-Bluetooth-company-identi-205.patch
+man-add-a-note-about-propagating-signals.patch
+man-include-autoconf-snippet-in-daemon-7.patch
+systemd-python-fix-setting-of-exception-codes.patch
+systemd-python-fix-listen_fds-under-Python-2.patch
+man-expand-on-some-more-subtle-points-in-systemd.soc.patch
+tmpfiles-rename-unsafe-to-boot.patch
+sleep-config-Dereference-pointer-before-check-for-NU.patch
+sleep-config-fix-double-free.patch
+rules-drivers-do-not-reset-RUN-list.patch
+core-manager-print-info-about-interesting-signals.patch
+core-service-check-if-mainpid-matches-only-if-it-is-.patch
+man-typo-fix.patch
+swap-remove-if-else-with-the-same-data-path.patch
+hwdb-update-219.patch
+journal-Add-missing-byte-order-conversions.patch
+hwdb-change-key-mappings-for-Samsung-90X3A.patch
+hwdb-add-Samsung-700G.patch
+hwdb-remove-duplicate-entry-for-Samsung-700Z.patch
+hwdb-fix-match-for-Thinkpad-X201-tablet.patch
+keymap-Recognize-different-Toshiba-Satellite-capital.patch
+sleep.c-fix-typo.patch
+delta-ensure-that-d_type-will-be-set-on-every-fs.patch
+tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch
+man-mention-which-variables-will-be-expanded-in-Exec.patch
+hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch
+journal-fix-access-to-munmapped-memory-in-sd_journal.patch
+gpt-auto-generator-skip-nonexistent-devices.patch
+gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch
+journald-do-not-free-space-when-disk-space-runs-low.patch
+man-add-busctl-1.patch
+journalctl-flip-to-full-by-default.patch
+coredumpctl-in-case-of-error-free-pattern-after-prin.patch
+shell-completion-remove-load-from-systemctl.patch
+units-drop-Install-section-from-multi-user.target-an.patch
+systemctl-skip-native-unit-file-handling-if-sysv-fil.patch
+hwdb-Update-database-of-Bluetooth-company-identi-241.patch
+udev-static_node-do-not-exit-rule-after-first-static.patch
+cryptsetup-Support-key-slot-option.patch
+pam_systemd-Ignore-vtnr-when-seat-seat0.patch
+keymap-Add-HP-Chromebook-14-Falco.patch
+keymap-Add-release-quirk-for-Acer-AOA-switchvideomod.patch
+keymap-Add-Sony-Vaio-VGN-FW250.patch
+keymap-Add-Toshiba-EQUIUM.patch
+tmpfiles-fix-memory-leak-of-exclude_prefixes.patch
+analyze-fix-plot-issues-when-using-gummiboot.patch
+udev-add-zram-to-the-list-of-devices-inappropriate-f.patch
+bash-completion-fix-completion-of-complete-verbs.patch
+shell-completion-fix-completion-of-localectl-set-loc.patch
+zsh-completions-kernel-install-only-show-existing-ke.patch
+core-fix-crashes-if-locale.conf-contains-invalid-utf.patch
+core-do-not-print-invalid-utf-8-in-error-messages.patch
+cryptsetup-generator-auto-add-deps-for-device-as-pas.patch
+man-fix-reference-in-systemd-inhibit-1.patch
+man-fix-another-reference-in-systemd-inhibit-1.patch
+fstab-generator-Create-fsck-root-symlink-with-correc.patch
+efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch
+core-make-StopWhenUnneeded-work-in-conjunction-with-.patch
+man-always-place-programlisting-and-programlisting-i.patch
+Temporary-work-around-for-slow-shutdown-due-to-unter.patch
+pam-module-fix-warning-about-ignoring-vtnr.patch
+pam_systemd-do-not-set-XDG_RUNTIME_DIR-if-the-sessio.patch
+core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch
+Revert-login-Don-t-stop-a-running-user-manager-from-.patch
+Revert-journalctl-flip-to-full-by-default.patch
+util-fix-handling-of-trailing-whitespace-in-split_qu.patch
+udev-net_id-Introduce-predictable-network-names-for-.patch
+utils-silence-the-compiler-warning.patch
+fix-SELinux-check-for-transient-units.patch
+s390-getty-generator-initialize-essential-system-ter.patch
+pam-use-correct-log-level.patch
+nspawn-if-we-don-t-find-bash-try-sh.patch
+units-systemd-logind-fails-hard-without-dbus.patch
+man-fix-grammatical-errors-and-other-formatting-issu.patch
+man-replace-STDOUT-with-standard-output-etc.patch
+man-use-spaces-instead-of-tabs.patch
+macro-add-a-macro-to-test-whether-a-value-is-in-a-sp.patch
+core-fix-property-changes-in-transient-units.patch
+core-more-exact-test-on-the-procfs-special-string-de.patch
+doc-update-punctuation.patch
+doc-resolve-missing-extraneous-words-or-inappropriat.patch
+doc-choose-different-words-to-improve-clarity.patch
+doc-properly-use-XML-entities.patch
+man-machinectl-there-is-no-command-kill-machine.patch
+load-modules-properly-return-a-failing-error-code-if.patch
+machinectl-add-bash-completion.patch
+delta-add-bash-completion.patch
+man-document-MAINPID.patch
+man-busctl-typo-fix.patch
+journal-don-t-clobber-return-parameters-of-sd_journa.patch
+udev-make-sure-we-always-return-a-valid-error-code-i.patch
+bootctl-add-bash-completion.patch
+selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch
+man-there-is-no-ExecStopPre-for-service-units.patch
+man-document-that-per-interface-sysctl-variables-are.patch
+journal-downgrade-vaccuum-message-to-debug-level.patch
+core-gc-half-created-stub-units.patch
+getty-generator-verify-ttys-before-we-make-use-of-th.patch
+units-serial-getty-.service-add-Install-section.patch
+README-document-that-var-run-must-be-a-symlink-run.patch
+Use-var-run-dbus-system_bus_socket-for-the-D-Bus-soc.patch
+mount-don-t-send-out-PropertiesChanged-message-if-ac.patch
+mount-don-t-fire-PropertiesChanged-signals-for-mount.patch
+logs-show-fix-corrupt-output-with-empty-messages.patch
+journalctl-refuse-extra-arguments-with-verify-and-si.patch
+cdrom_id-use-the-old-MMC-fallback.patch
+udev-rules-setup-tty-permissions-and-group-for-sclp_.patch
+bash-add-completion-for-systemd-nspawn.patch
+add-bash-completion-for-systemd-cgls.patch
+hwdb-Update-database-of-Bluetooth-company-identi-314.patch
+hwdb-Update-database-of-Bluetooth-company-identi-315.patch
+Allow-fractional-parts-in-disk-sizes.patch
+add-bash-completion-for-systemd-cgtop.patch
+execute-free-directory-path-if-we-fail-to-remove-it-.patch
+add-bash-completion-for-systemd-detect-virt.patch
+Do-not-print-invalid-UTF-8-in-error-messages.patch
+add-bash-completion-for-systemd-cat.patch
+journal-assume-that-next-entry-is-after-previous-ent.patch
+journal-forget-file-after-encountering-an-error.patch
+logind-ignore-failing-close-on-session-devices.patch
+core-introduce-new-stop-protocol-for-unit-scopes.patch
+core-watch-SIGCHLD-more-closely-to-track-processes-o.patch
+logind-rework-session-shutdown-logic.patch
+logind-order-all-scopes-after-both-systemd-logind.se.patch
+logind-given-that-we-can-now-relatively-safely-shutd.patch
+logind-fix-reference-to-systemd-user-sessions.servic.patch
+logind-add-forgotten-call-to-user_send_changed.patch
+logind-save-session-after-setting-the-stopping-flag.patch
+logind-save-user-state-after-stopping-the-session.patch
+logind-initialize-timer_fd.patch
+logind-pass-pointer-to-User-object-to-user_save.patch
+core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch
+core-correctly-unregister-PIDs-from-PID-hashtables.patch
+logind-uninitialized-timer_fd-is-set-to-1.patch
+logind-add-forgotten-return-statement.patch
+core-fix-detection-of-dead-processes.patch
+Fix-prototype-of-get_process_state.patch
+core-check-for-return-value-from-get_process_state.patch
+man-update-link-to-LSB.patch
+man-systemd-bootchart-fix-spacing-in-command.patch
+man-add-missing-comma.patch
+build-sys-Don-t-distribute-generated-udev-rule.patch
+units-Do-not-unescape-instance-name-in-systemd-backl.patch
+util-add-timeout-to-generator-execution.patch
+input_id-Recognize-buttonless-joystick-types.patch
+logind-fix-policykit-checks.patch
+nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch
+build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch
+rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch
+man-multiple-sleep-modes-are-to-be-separated-by-whit.patch
+man-fix-description-of-systemctl-after-before.patch
+udev-properly-detect-reference-to-unexisting-part-of.patch
+hwdb-Update-database-of-Bluetooth-company-identi-357.patch
+gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch
+man-improve-wording-of-systemctl-s-after-before.patch
+cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch
+hwdb-update-361.patch
+core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch
+man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch
+man-be-more-specific-when-EnvironmentFile-is-read.patch
+systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch
+systemctl-add-more-verbose-explanation-of-kill-who-a.patch
+ask-password-when-the-user-types-a-overly-long-passw.patch
+util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch
+core-do-not-read-system-boot-timestamps-in-systemd-u.patch
+hwdb-Update-database-of-Bluetooth-company-identi-370.patch
+Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch
+udev-do-not-export-static-node-tags-for-non-existing.patch
+journalctl-free-arg_file-on-exit.patch
+journal-fix-export-of-messages-containing-newlines.patch
+tty-ask-password-agent-return-negative-errno.patch
+systemd-python-use-.hex-instead-of-.get_hex.patch
+reduce-the-amount-of-messages-logged-to-dev-kmsg-whe.patch
+journal-cleanup-up-error-handling-in-update_catalog.patch
+hwdb-Update-database-of-Bluetooth-company-identi-379.patch
+bash-completion-fix-__get_startable_units.patch
+hwdb-update-381.patch
+hwdb-PCI-include-primary-model-string-in-subsystem-m.patch
+sysctl-replaces-some-slashes-with-dots.patch
+man-document-relationship-between-RequiresMountsFor-.patch
+install-create_symlink-check-unlink-return-value.patch
+delta-do-not-use-unicode-chars-in-C-locale.patch
+core-print-debug-instead-of-error-message.patch
+tmpfiles-fix-permissions-on-new-journal-files.patch
+implement-a-union-to-pad-out-file_handle.patch
+analyze-fix-plot-with-bad-y-size.patch
+util-make-sure-all-our-name_to_handle_at-code-makes-.patch
+Fix-keysize-handling-in-cryptsetup-bits-vs.-bytes.patch
+udev-increase-the-size-of-RESULT-buffer.patch
+job-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch
+machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch
+hwdb-update-396.patch
+core-check-the-right-variable-for-failed-open.patch
+man-sd_journal_send-does-nothing-when-journald-is-no.patch
+core-sysvcompat-network-should-be-equivalent-to-netw.patch
+udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch
+udev-avoid-use-of-uninitialized-err.patch
+shared-install-do-not-prefix-created-symlink-with-ro.patch
+shared-include-root-when-canonicalizing-conf-paths.patch
+Make-systemctl-root-look-for-files-in-the-proper-pla.patch
+util-replace-close_nointr_nofail-by-a-more-useful-sa.patch
+async-add-asynchronous-close-call.patch
+core-close-socket-fds-asynchronously.patch
+logind-bring-polkit-policy-for-hibernate-in-line-wit.patch
+unit.c-Move-code-around-to-easy-cherrypicking.patch
+core-make-sure-to-serialize-jobs-for-all-units.patch
+man-clarify-that-the-ExecReload-command-should-be-sy.patch
+man-readahead-fix-cmdline-switch-inconsistency-betwe.patch
+build-sys-at-configure-check-for-verifying-that-ln-s.patch
+man-update-journald-rate-limit-defaults.patch
+nspawn-properly-format-container_uuid-in-UUID-format.patch
+core-reindent-selinux-ima-smack-setup.c.patch
+core-let-selinux_setup-load-policy-more-than-once.patch
+hwdb-Update-database-of-Bluetooth-company-identi-418.patch
+hwdb-update-419.patch
+nspawn-allow-to-bind-mount-journal-on-top-of-a-non-e.patch
+nspawn-restore-journal-directory-is-empty-check.patch
+machine-escape-fields-we-store-in-run-so-that-they-c.patch
+logind-also-escape-external-data-when-saving-to-run.patch
+man-drop-reference-to-file-locking-for-PID-file-crea.patch
+man-update-URL-refernce-in-daemon-7.patch
+conf-parser-never-consider-it-an-error-if-we-cannot-.patch
+socket-properly-handle-if-our-service-vanished-durin.patch
+keymap-Add-Lenovo-Enhanced-USB-Keyboard.patch
+keymap-Asus-EeePC-touchpad-toggle-key.patch
+udev-keyboard-also-hook-into-change-events.patch
+Do-not-unescape-unit-names-in-Install-section.patch
+util-ignore_file-should-not-allow-files-ending-with.patch
+udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch
+tty-ask-password-agent-Do-tell-what-directory-we-fai.patch
+keyboard-add-Plantronics-.Audio-mute-button.patch
+hwdb-fix-case-sensitive-match.patch
+man-fix-references-to-sd_journal_cutoff_realtime_use.patch
+man-Searching-for-an-explanation-of-what-a-slice-uni.patch
+systemd-detect-virt-only-discover-Xen-domU.patch
+man-updates-to-the-passive-target-section.patch
+label-when-clearing-selinux-context-don-t-mangle-err.patch
+units-order-network-online.target-after-network.targ.patch
+core-fix-invalid-free-in-killall.patch
+install-fix-invalid-free-in-unit_file_mask.patch
+rpm-don-t-hardcode-the-binary-paths-in-the-macros-re.patch
+tmpfiles-set-up-selinux-label-proeprly-when-creating.patch
+util-add-files_same-helper-function.patch
+Add-strappenda3.patch
+unit-name-fix-detection-of-unit-templates-instances.patch
+conf-files-fix-when-for-root-logic.patch
+bootchart-set-white-background.patch
+backlight-always-prefer-firmware-platform-backlights.patch
+install-various-modernizations.patch
+install-simplify-and-clarify-disabling-logic-for-ins.patch
+install-when-looking-for-a-unit-file-for-enabling-se.patch
+install-make-sure-systemctl-disable-foobar-.service-.patch
+install-make-sure-that-root-mode-doesn-t-make-us-con.patch
+install-simplify-symlink-root-logic.patch
+backlight-include-ID_PATH-in-file-names-for-backligh.patch
+backlight-Fix-copy-paste-error-printing-an-unrelated.patch
+backlight-Avoid-restoring-brightness-to-an-unreadabl.patch
+backlight-do-nothing-if-max_brightness-is-0.patch
+backlight-unify-error-messages.patch
+backlight-handle-saved-brightness-exceeding-max-brig.patch
+backlight-Do-not-clamp-brightness-for-LEDs.patch
+cryptsetup-introduce-new-cryptsetup-pre.traget-unit-.patch
+rules-add-loop-control-and-btrfs-control-to-disk-gro.patch
+hwdb-Update-database-of-Bluetooth-company-identi-468.patch
+Fix-instance-argument-for-systemd-backlight-.service.patch
+socket-check-return-from-exec_spawn.patch
+getty-generator-properly-escape-instance-names.patch
+conf-files-include-root-in-returned-file-paths.patch
+shared-add-root-argument-to-search_and_fopen.patch
+shared-fix-search_and_fopen-with-alternate-roots.patch
+Reset-signal-mask-on-re-exec-to-init.patch
+core-clean-up-signal-reset-logic-when-reexec.patch
+util-treat-fuse.sshfs-as-a-network-filesystem.patch
+
+## Debian specific patches:
 Add-back-support-for-Debian-specific-config-files.patch
 Make-systemctl-enable-disable-call-update-rc.d-for-s.patch
 change-the-log_info-line-in-systemctl-to-reflect-rea.patch
@@ -9,7 +490,6 @@ fix-systemctl-enable-disable-error-message-Failed-to.patch
 don-t-try-to-start-autovt-units-when-not-running-wit.patch
 timedated-don-t-rely-on-usr-being-mounted-in-the-ini.patch
 fstab-generator-don-t-rely-on-usr-being-mounted-in-t.patch
-man-fix-reference-in-systemd-inhibit-1.patch
 fix-remaining-reference-to-systemd-logind.conf.patch
 Make-hostnamed-localed-timedated-D-Bus-activatable.patch
 Update-localed-to-use-the-Debian-config-files.patch
@@ -19,7 +499,6 @@ Don-t-mount-tmp-as-tmpfs-by-default.patch
 Fix-up-tmpfiles.d-permissions-properly.patch
 Revert-udev-network-device-renaming-immediately-give.patch
 udev-hwdb-Store-binary-database-in-libdir-not-in-etc.patch
-systemd-order-remote-mounts-from-mountinfo-before-re.patch
 Make-99-systemd.rules-check-for-run-systemd-systemd-.patch
 Make-net.ifnames-opt-in-instead-of-opt-out.patch
 Don-t-move-libgudev-to-lib.patch
@@ -41,8 +520,5 @@ Add-targets-for-compatibility-with-Debian-insserv-sy.patch
 more-cd-aliases.patch
 Check-for-kmod-binary.patch
 Adjust-systemd-user-pam-config-file-for-Debian.patch
-login-Don-t-stop-a-running-user-manager-from-garbage.patch
 Add-run-initctl-support-to-SysV-compat-tools.patch
-login-make-sd_session_get_vt-actually-work.patch
-login-fix-invalid-free-in-sd_session_get_vt.patch
 core-transaction-fix-cycle-break-attempts-outside-tr.patch
diff --git a/debian/patches/shared-add-root-argument-to-search_and_fopen.patch b/debian/patches/shared-add-root-argument-to-search_and_fopen.patch
new file mode 100644 (file)
index 0000000..30e408e
--- /dev/null
@@ -0,0 +1,142 @@
+From: Michael Marineau <michael.marineau@coreos.com>
+Date: Thu, 13 Mar 2014 21:32:12 -0700
+Subject: shared: add root argument to search_and_fopen
+
+This adds the same root argument to search_and_fopen that
+conf_files_list already has. Tools that use those two functions as a
+pair can now be easily modified to load configuration files from an
+alternate root filesystem tree.
+
+(cherry picked from commit 4cf7ea556aa1e74f9b34d4467f36d46a1bb25da3)
+(cherry picked from commit 8d4847827db40b7148973558940f90495f5accba)
+
+Conflicts:
+       src/shared/util.h
+---
+ src/binfmt/binfmt.c             |  2 +-
+ src/modules-load/modules-load.c |  2 +-
+ src/shared/util.c               | 12 ++++++------
+ src/shared/util.h               |  4 ++--
+ src/sysctl/sysctl.c             |  2 +-
+ src/tmpfiles/tmpfiles.c         |  2 +-
+ 6 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
+index 7ed1ae7..e3a3d4f 100644
+--- a/src/binfmt/binfmt.c
++++ b/src/binfmt/binfmt.c
+@@ -85,7 +85,7 @@ static int apply_file(const char *path, bool ignore_enoent) {
+         assert(path);
+-        r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
++        r = search_and_fopen_nulstr(path, "re", NULL, conf_file_dirs, &f);
+         if (r < 0) {
+                 if (ignore_enoent && r == -ENOENT)
+                         return 0;
+diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
+index ba7d417..bfb6e7e 100644
+--- a/src/modules-load/modules-load.c
++++ b/src/modules-load/modules-load.c
+@@ -181,7 +181,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent
+         assert(ctx);
+         assert(path);
+-        r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
++        r = search_and_fopen_nulstr(path, "re", NULL, conf_file_dirs, &f);
+         if (r < 0) {
+                 if (ignore_enoent && r == -ENOENT)
+                         return 0;
+diff --git a/src/shared/util.c b/src/shared/util.c
+index f034134..65a09d9 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -5687,14 +5687,14 @@ int on_ac_power(void) {
+         return found_online || !found_offline;
+ }
+-static int search_and_fopen_internal(const char *path, const char *mode, char **search, FILE **_f) {
++static int search_and_fopen_internal(const char *path, const char *mode, const char *root, char **search, FILE **_f) {
+         char **i;
+         assert(path);
+         assert(mode);
+         assert(_f);
+-        if (!path_strv_canonicalize_absolute_uniq(search, NULL))
++        if (!path_strv_canonicalize_absolute_uniq(search, root))
+                 return -ENOMEM;
+         STRV_FOREACH(i, search) {
+@@ -5718,7 +5718,7 @@ static int search_and_fopen_internal(const char *path, const char *mode, char **
+         return -ENOENT;
+ }
+-int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f) {
++int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f) {
+         _cleanup_strv_free_ char **copy = NULL;
+         assert(path);
+@@ -5741,10 +5741,10 @@ int search_and_fopen(const char *path, const char *mode, const char **search, FI
+         if (!copy)
+                 return -ENOMEM;
+-        return search_and_fopen_internal(path, mode, copy, _f);
++        return search_and_fopen_internal(path, mode, root, copy, _f);
+ }
+-int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f) {
++int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f) {
+         _cleanup_strv_free_ char **s = NULL;
+         if (path_is_absolute(path)) {
+@@ -5763,7 +5763,7 @@ int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear
+         if (!s)
+                 return -ENOMEM;
+-        return search_and_fopen_internal(path, mode, s, _f);
++        return search_and_fopen_internal(path, mode, root, s, _f);
+ }
+ int create_tmp_dir(char template[], char** dir_name) {
+diff --git a/src/shared/util.h b/src/shared/util.h
+index f358362..b00395c 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -629,8 +629,8 @@ char *strip_tab_ansi(char **p, size_t *l);
+ int on_ac_power(void);
+-int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f);
+-int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f);
++int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f);
++int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f);
+ int create_tmp_dir(char template[], char** dir_name);
+ #define FOREACH_LINE(line, f, on_error)                         \
+diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
+index 70c4d89..1b7b482 100644
+--- a/src/sysctl/sysctl.c
++++ b/src/sysctl/sysctl.c
+@@ -137,7 +137,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
+         assert(path);
+-        r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
++        r = search_and_fopen_nulstr(path, "re", NULL, conf_file_dirs, &f);
+         if (r < 0) {
+                 if (ignore_enoent && r == -ENOENT)
+                         return 0;
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 6b0dfaf..ca99bb4 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -1364,7 +1364,7 @@ static int read_config_file(const char *fn, bool ignore_enoent) {
+         assert(fn);
+-        r = search_and_fopen_nulstr(fn, "re", conf_file_dirs, &f);
++        r = search_and_fopen_nulstr(fn, "re", NULL, conf_file_dirs, &f);
+         if (r < 0) {
+                 if (ignore_enoent && r == -ENOENT)
+                         return 0;
diff --git a/debian/patches/shared-fix-search_and_fopen-with-alternate-roots.patch b/debian/patches/shared-fix-search_and_fopen-with-alternate-roots.patch
new file mode 100644 (file)
index 0000000..f194ee6
--- /dev/null
@@ -0,0 +1,29 @@
+From: Michael Marineau <michael.marineau@coreos.com>
+Date: Thu, 19 Jun 2014 19:07:06 -0700
+Subject: shared: fix search_and_fopen with alternate roots
+
+Update for the current behavior of path_strv_resolve which now returns
+paths relative to the given root, not the full absolute paths.
+
+(cherry picked from commit 375eadd911a9f83f89f1e7de5e05f44cc81e3642)
+(cherry picked from commit 686e842aecfc9f89547f9d9021afb9e1a21067ec)
+---
+ src/shared/util.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 65a09d9..7aa3d02 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -5701,7 +5701,10 @@ static int search_and_fopen_internal(const char *path, const char *mode, const c
+                 _cleanup_free_ char *p = NULL;
+                 FILE *f;
+-                p = strjoin(*i, "/", path, NULL);
++                if (root)
++                        p = strjoin(root, *i, "/", path, NULL);
++                else
++                        p = strjoin(*i, "/", path, NULL);
+                 if (!p)
+                         return -ENOMEM;
diff --git a/debian/patches/shared-include-root-when-canonicalizing-conf-paths.patch b/debian/patches/shared-include-root-when-canonicalizing-conf-paths.patch
new file mode 100644 (file)
index 0000000..7892de9
--- /dev/null
@@ -0,0 +1,194 @@
+From: Michael Marineau <michael.marineau@coreos.com>
+Date: Fri, 31 Jan 2014 15:35:04 -0800
+Subject: shared: include root when canonicalizing conf paths
+
+The conf_files_list family accepts an alternate root path to prefix all
+directories in the list but path_strv_canonicalize_uniq doesn't use it.
+This results in the suspicious behavior of resolving directory symlinks
+based on the contents of / instead of the alternate root.
+
+This adds a prefix argument to path_strv_canonicalize which will now
+prepend the prefix, if given, to every path in the list. To avoid
+answering what a relative path means when called with a root prefix
+path_strv_canonicalize is now path_strv_canonicalize_absolute and only
+considers absolute paths. Fortunately all users of already call
+path_strv_canonicalize with a list of absolute paths.
+
+(cherry picked from commit 112cfb181453e38d3ef4a74fba23abbb53392002)
+---
+ src/shared/conf-files.c  | 10 +++-------
+ src/shared/path-lookup.c |  6 +++---
+ src/shared/path-util.c   | 29 +++++++++++++++++++----------
+ src/shared/path-util.h   |  4 ++--
+ src/shared/util.c        |  2 +-
+ src/udev/udev-rules.c    |  2 +-
+ 6 files changed, 29 insertions(+), 24 deletions(-)
+
+diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
+index ed4070c..3d5b1df 100644
+--- a/src/shared/conf-files.c
++++ b/src/shared/conf-files.c
+@@ -37,12 +37,8 @@
+ #include "hashmap.h"
+ #include "conf-files.h"
+-static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) {
++static int files_add(Hashmap *h, const char *dirpath, const char *suffix) {
+         _cleanup_closedir_ DIR *dir = NULL;
+-        _cleanup_free_ char *dirpath = NULL;
+-
+-        if (asprintf(&dirpath, "%s%s", root ? root : "", path) < 0)
+-                return -ENOMEM;
+         dir = opendir(dirpath);
+         if (!dir) {
+@@ -104,7 +100,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
+         assert(suffix);
+         /* This alters the dirs string array */
+-        if (!path_strv_canonicalize_uniq(dirs))
++        if (!path_strv_canonicalize_absolute_uniq(dirs, root))
+                 return -ENOMEM;
+         fh = hashmap_new(string_hash_func, string_compare_func);
+@@ -112,7 +108,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
+                 return -ENOMEM;
+         STRV_FOREACH(p, dirs) {
+-                r = files_add(fh, root, *p, suffix);
++                r = files_add(fh, *p, suffix);
+                 if (r == -ENOMEM) {
+                         hashmap_free_free(fh);
+                         return r;
+diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
+index 1a47ea9..03c1380 100644
+--- a/src/shared/path-lookup.c
++++ b/src/shared/path-lookup.c
+@@ -316,7 +316,7 @@ int lookup_paths_init(
+                 }
+         }
+-        if (!path_strv_canonicalize(p->unit_path))
++        if (!path_strv_canonicalize_absolute(p->unit_path, NULL))
+                 return -ENOMEM;
+         strv_uniq(p->unit_path);
+@@ -372,10 +372,10 @@ int lookup_paths_init(
+                                 return -ENOMEM;
+                 }
+-                if (!path_strv_canonicalize(p->sysvinit_path))
++                if (!path_strv_canonicalize_absolute(p->sysvinit_path, NULL))
+                         return -ENOMEM;
+-                if (!path_strv_canonicalize(p->sysvrcnd_path))
++                if (!path_strv_canonicalize_absolute(p->sysvrcnd_path, NULL))
+                         return -ENOMEM;
+                 strv_uniq(p->sysvinit_path);
+diff --git a/src/shared/path-util.c b/src/shared/path-util.c
+index d8c14e8..36542cd 100644
+--- a/src/shared/path-util.c
++++ b/src/shared/path-util.c
+@@ -165,7 +165,7 @@ char **path_strv_make_absolute_cwd(char **l) {
+         return l;
+ }
+-char **path_strv_canonicalize(char **l) {
++char **path_strv_canonicalize_absolute(char **l, const char *prefix) {
+         char **s;
+         unsigned k = 0;
+         bool enomem = false;
+@@ -180,13 +180,21 @@ char **path_strv_canonicalize(char **l) {
+         STRV_FOREACH(s, l) {
+                 char *t, *u;
+-                t = path_make_absolute_cwd(*s);
+-                free(*s);
+-                *s = NULL;
+-
+-                if (!t) {
+-                        enomem = true;
++                if (!path_is_absolute(*s))
+                         continue;
++
++                if (prefix) {
++                        t = strappend(prefix, *s);
++                        free(*s);
++                        *s = NULL;
++
++                        if (!t) {
++                                enomem = true;
++                                continue;
++                        }
++                } else {
++                        t = *s;
++                        *s = NULL;
+                 }
+                 errno = 0;
+@@ -196,7 +204,7 @@ char **path_strv_canonicalize(char **l) {
+                                 u = t;
+                         else {
+                                 free(t);
+-                                if (errno == ENOMEM || !errno)
++                                if (errno == ENOMEM || errno == 0)
+                                         enomem = true;
+                                 continue;
+@@ -215,11 +223,12 @@ char **path_strv_canonicalize(char **l) {
+         return l;
+ }
+-char **path_strv_canonicalize_uniq(char **l) {
++char **path_strv_canonicalize_absolute_uniq(char **l, const char *prefix) {
++
+         if (strv_isempty(l))
+                 return l;
+-        if (!path_strv_canonicalize(l))
++        if (!path_strv_canonicalize_absolute(l, prefix))
+                 return NULL;
+         return strv_uniq(l);
+diff --git a/src/shared/path-util.h b/src/shared/path-util.h
+index 1e58e1b..f867ab6 100644
+--- a/src/shared/path-util.h
++++ b/src/shared/path-util.h
+@@ -46,8 +46,8 @@ char* path_startswith(const char *path, const char *prefix) _pure_;
+ bool path_equal(const char *a, const char *b) _pure_;
+ char** path_strv_make_absolute_cwd(char **l);
+-char** path_strv_canonicalize(char **l);
+-char** path_strv_canonicalize_uniq(char **l);
++char** path_strv_canonicalize_absolute(char **l, const char *prefix);
++char** path_strv_canonicalize_absolute_uniq(char **l, const char *prefix);
+ int path_is_mount_point(const char *path, bool allow_symlink);
+ int path_is_read_only_fs(const char *path);
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 617c3ac..533db92 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -5704,7 +5704,7 @@ static int search_and_fopen_internal(const char *path, const char *mode, char **
+         assert(mode);
+         assert(_f);
+-        if (!path_strv_canonicalize_uniq(search))
++        if (!path_strv_canonicalize_absolute_uniq(search, NULL))
+                 return -ENOMEM;
+         STRV_FOREACH(i, search) {
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 366d870..7e6db81 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -1628,7 +1628,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
+                 log_error("failed to build config directory array");
+                 return udev_rules_unref(rules);
+         }
+-        if (!path_strv_canonicalize(rules->dirs)) {
++        if (!path_strv_canonicalize_absolute(rules->dirs, NULL)) {
+                 log_error("failed to canonicalize config directories\n");
+                 return udev_rules_unref(rules);
+         }
diff --git a/debian/patches/shared-install-do-not-prefix-created-symlink-with-ro.patch b/debian/patches/shared-install-do-not-prefix-created-symlink-with-ro.patch
new file mode 100644 (file)
index 0000000..6f70ffe
--- /dev/null
@@ -0,0 +1,127 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 21 Apr 2014 19:17:40 -0400
+Subject: shared/install: do not prefix created symlink with root path
+
+Before: /var/tmp/inst1//etc/systemd/system/default.target -> /var/tmp/inst1//usr/lib/systemd/system/graphical.target
+After: /var/tmp/inst1/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
+(cherry picked from commit 62b002337727093c21d020c730bd65971f7783a7)
+(cherry picked from commit a49631d0c3f1ba15cc353f09e9fe1af99e14e579)
+---
+ src/shared/install.c | 89 +++++++++++++++++++++++++---------------------------
+ 1 file changed, 43 insertions(+), 46 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index e6a61fa..9f34ac5 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -1039,67 +1039,64 @@ static int unit_file_search(
+         assert(info);
+         assert(paths);
+-        if (info->path)
+-                return unit_file_load(c, info, info->path, allow_symlink);
++        if (info->path) {
++                char *full_path = NULL;
++
++                if (!isempty(root_dir))
++                        full_path = strappenda(root_dir, info->path);
++
++                return unit_file_load(c, info, full_path ?: info->path, allow_symlink);
++        }
+         assert(info->name);
+         STRV_FOREACH(p, paths->unit_path) {
+-                char *path = NULL;
+-
+-                if (isempty(root_dir))
+-                        asprintf(&path, "%s/%s", *p, info->name);
+-                else
+-                        asprintf(&path, "%s/%s/%s", root_dir, *p, info->name);
++                _cleanup_free_ char *path = NULL, *full_path = NULL;
++                path = strjoin(*p, "/", info->name, NULL);
+                 if (!path)
+                         return -ENOMEM;
+-                r = unit_file_load(c, info, path, allow_symlink);
++                if (!isempty(root_dir)) {
++                        full_path = strappend(root_dir, path);
++                        if (!full_path)
++                                return -ENOMEM;
++                }
+-                if (r >= 0)
++                r = unit_file_load(c, info, full_path ?: path, allow_symlink);
++                if (r >= 0) {
+                         info->path = path;
+-                else {
+-                        if (r == -ENOENT && unit_name_is_instance(info->name)) {
+-                                /* Unit file doesn't exist, however instance enablement was requested.
+-                                 * We will check if it is possible to load template unit file. */
+-                                char *template = NULL,
+-                                     *template_path = NULL,
+-                                     *template_dir = NULL;
+-
+-                                template = unit_name_template(info->name);
+-                                if (!template) {
+-                                        free(path);
+-                                        return -ENOMEM;
+-                                }
++                        path = NULL;
++                } else if (r == -ENOENT && unit_name_is_instance(info->name)) {
++                        /* Unit file doesn't exist, however instance enablement was requested.
++                         * We will check if it is possible to load template unit file. */
++                        _cleanup_free_ char *template = NULL, *template_dir = NULL;
++
++                        template = unit_name_template(info->name);
++                        if (!template)
++                                return -ENOMEM;
+-                                /* We will reuse path variable since we don't need it anymore. */
+-                                template_dir = path;
+-                                *(strrchr(path, '/') + 1) = '\0';
++                        /* We will reuse path variable since we don't need it anymore. */
++                        template_dir = path;
++                        *(strrchr(template_dir, '/') + 1) = '\0';
+-                                template_path = strjoin(template_dir, template, NULL);
+-                                if (!template_path) {
+-                                        free(path);
+-                                        free(template);
+-                                        return -ENOMEM;
+-                                }
++                        path = strappend(template_dir, template);
++                        if (!path)
++                                return -ENOMEM;
+-                                /* Let's try to load template unit. */
+-                                r = unit_file_load(c, info, template_path, allow_symlink);
+-                                if (r >= 0) {
+-                                        info->path = strdup(template_path);
+-                                        if (!info->path) {
+-                                                free(path);
+-                                                free(template);
+-                                                free(template_path);
+-                                                return -ENOMEM;
+-                                        }
+-                                }
++                        if (!isempty(root_dir)) {
++                                free(full_path);
++                                full_path = strappend(root_dir, path);
++                                if (!full_path)
++                                        return -ENOMEM;
++                        }
+-                                free(template);
+-                                free(template_path);
++                        /* Let's try to load template unit. */
++                        r = unit_file_load(c, info, full_path ?: path, allow_symlink);
++                        if (r >= 0) {
++                                info->path = path;
++                                path = NULL;
+                         }
+-                        free(path);
+                 }
+                 if (r != -ENOENT && r != -ELOOP)
diff --git a/debian/patches/shared-util-Fix-glob_extend-argument.patch b/debian/patches/shared-util-Fix-glob_extend-argument.patch
new file mode 100644 (file)
index 0000000..e74da1c
--- /dev/null
@@ -0,0 +1,24 @@
+From: Bastien Nocera <hadess@hadess.net>
+Date: Mon, 14 Oct 2013 08:15:51 +0200
+Subject: shared/util: Fix glob_extend() argument
+
+glob_extend() would completely fail to work, or return incorrect
+data if it wasn't being passed the current getopt "optarg" variable
+as it used the global variable, instead of the passed parameters.
+---
+ src/shared/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 748f1bb..6c88040 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -4391,7 +4391,7 @@ int glob_extend(char ***strv, const char *path) {
+         char **p;
+         errno = 0;
+-        k = glob(optarg, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
++        k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
+         if (k == GLOB_NOMATCH)
+                 return -ENOENT;
diff --git a/debian/patches/shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch b/debian/patches/shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
new file mode 100644 (file)
index 0000000..8ed7efe
--- /dev/null
@@ -0,0 +1,46 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Sun, 6 Oct 2013 18:26:23 -0400
+Subject: shared/util: fix off-by-one error in tag_to_udev_node
+
+Triggered false negatives when encoding a string which needed every
+character to be escaped, e.g. "LABEL=/".
+---
+ src/shared/util.c            | 2 +-
+ src/test/test-device-nodes.c | 4 +++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 9be6acf..748f1bb 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -3527,7 +3527,7 @@ static char *tag_to_udev_node(const char *tagvalue, const char *by) {
+         if (u == NULL)
+                 return NULL;
+-        enc_len = strlen(u) * 4;
++        enc_len = strlen(u) * 4 + 1;
+         t = new(char, enc_len);
+         if (t == NULL)
+                 return NULL;
+diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c
+index 2f3dedb..59ba4be 100644
+--- a/src/test/test-device-nodes.c
++++ b/src/test/test-device-nodes.c
+@@ -26,7 +26,7 @@
+ /* helpers for test_encode_devnode_name */
+ static char *do_encode_string(const char *in) {
+-        size_t out_len = strlen(in) * 4;
++        size_t out_len = strlen(in) * 4 + 1;
+         char *out = malloc(out_len);
+         assert_se(out);
+@@ -46,6 +46,8 @@ static void test_encode_devnode_name(void) {
+         assert_se(expect_encoded_as("pinkiepie", "pinkiepie"));
+         assert_se(expect_encoded_as("valíd\\ųtf8", "valíd\\x5cųtf8"));
+         assert_se(expect_encoded_as("s/ash/ng", "s\\x2fash\\x2fng"));
++        assert_se(expect_encoded_as("/", "\\x2f"));
++        assert_se(expect_encoded_as("!", "\\x21"));
+ }
+ int main(int argc, char *argv[]) {
diff --git a/debian/patches/shell-completion-dump-has-moved-to-systemd-analyze.patch b/debian/patches/shell-completion-dump-has-moved-to-systemd-analyze.patch
new file mode 100644 (file)
index 0000000..d74413f
--- /dev/null
@@ -0,0 +1,80 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 21 Oct 2013 18:53:57 -0400
+Subject: shell-completion: dump has moved to systemd-analyze
+
+Rename NO_OPTION to STANDALONE for consistency with other files.
+---
+ shell-completion/bash/systemctl       | 2 +-
+ shell-completion/bash/systemd-analyze | 4 ++--
+ shell-completion/zsh/_systemctl       | 3 +--
+ shell-completion/zsh/_systemd-analyze | 1 +
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
+index e335ee8..eea4b6d 100644
+--- a/shell-completion/bash/systemctl
++++ b/shell-completion/bash/systemctl
+@@ -137,7 +137,7 @@ _systemctl () {
+                      [JOBS]='cancel'
+                 [SNAPSHOTS]='delete'
+                      [ENVS]='set-environment unset-environment'
+-               [STANDALONE]='daemon-reexec daemon-reload default dump
++               [STANDALONE]='daemon-reexec daemon-reload default
+                              emergency exit halt hibernate hybrid-sleep kexec list-jobs
+                              list-sockets list-units list-unit-files poweroff reboot rescue
+                              show-environment suspend get-default'
+diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze
+index 5bd6768..b65466b 100644
+--- a/shell-completion/bash/systemd-analyze
++++ b/shell-completion/bash/systemd-analyze
+@@ -31,7 +31,7 @@ _systemd_analyze() {
+         local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require'
+         local -A VERBS=(
+-                [NO_OPTION]='time blame plot'
++                [STANDALONE]='time blame plot dump'
+                 [CRITICAL_CHAIN]='critical-chain'
+                 [DOT]='dot'
+                 [LOG_LEVEL]='set-log-level'
+@@ -55,7 +55,7 @@ _systemd_analyze() {
+         if [[ -z $verb ]]; then
+                 comps=${VERBS[*]}
+-        elif __contains_word "$verb" ${VERBS[NO_OPTION]}; then
++        elif __contains_word "$verb" ${VERBS[STANDALONE]}; then
+                 if [[ $cur = -* ]]; then
+                         comps='--help --version --system --user'
+                 fi
+diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl
+index 298e97e..3959cd5 100644
+--- a/shell-completion/zsh/_systemctl
++++ b/shell-completion/zsh/_systemctl
+@@ -38,7 +38,6 @@
+     "is-enabled:Check whether unit files are enabled"
+     "list-jobs:List jobs"
+     "cancel:Cancel all, one, or more jobs"
+-    "dump:Dump server status"
+     "snapshot:Create a snapshot"
+     "delete:Remove one or more snapshots"
+     "show-environment:Dump environment"
+@@ -264,7 +263,7 @@ done
+ (( $+functions[_systemctl_link] )) || _systemctl_link() { _files }
+ # no systemctl completion for:
+-#    [STANDALONE]='daemon-reexec daemon-reload default dump
++#    [STANDALONE]='daemon-reexec daemon-reload default
+ #                  emergency exit halt kexec list-jobs list-units
+ #                  list-unit-files poweroff reboot rescue show-environment'
+ #         [NAME]='snapshot load'
+diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze
+index 37c60f5..2eda5fe 100644
+--- a/shell-completion/zsh/_systemd-analyze
++++ b/shell-completion/zsh/_systemd-analyze
+@@ -15,6 +15,7 @@ _systemd_analyze_command(){
+         'critical-chain:Print a tree of the time critical chain of units'
+         'plot:Output SVG graphic showing service initialization'
+         'dot:Dump dependency graph (in dot(1) format)'
++        'dump:Dump server status'
+         'set-log-level:Set systemd log threshold'
+     )
diff --git a/debian/patches/shell-completion-fix-completion-of-localectl-set-loc.patch b/debian/patches/shell-completion-fix-completion-of-localectl-set-loc.patch
new file mode 100644 (file)
index 0000000..6e3f700
--- /dev/null
@@ -0,0 +1,81 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 6 Feb 2014 11:59:33 -0500
+Subject: shell-completion: fix completion of localectl set-locale
+
+https://bugs.freedesktop.org/show_bug.cgi?id=74157
+(cherry picked from commit 627a98d39844a1ac10fde1f72cf18b4f08be4990)
+---
+ shell-completion/bash/localectl | 20 ++++++++++++++++++--
+ shell-completion/zsh/_localectl | 13 +++++++++----
+ 2 files changed, 27 insertions(+), 6 deletions(-)
+
+diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl
+index 84e2a6b..c9e22af 100644
+--- a/shell-completion/bash/localectl
++++ b/shell-completion/bash/localectl
+@@ -24,8 +24,14 @@ __contains_word () {
+         done
+ }
++__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \
++                  LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \
++                  LC_NAME LC_ADDRESS LC_TELEPHONE \
++                  LC_MEASUREMENT LC_IDENTIFICATION )
++# LC_ALL is omitted on purpose
++
+ _localectl() {
+-        local i verb comps
++        local i verb comps locale_vals
+         local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+         local OPTS='-h --help --version --no-convert --no-pager --no-ask-password
+                     -H --host'
+@@ -62,7 +68,17 @@ _localectl() {
+         if [[ -z $verb ]]; then
+                 comps=${VERBS[*]}
+         elif __contains_word "$verb" ${VERBS[LOCALES]}; then
+-                comps=$(command localectl list-locales)
++                if [[ $cur = *=* ]]; then
++                        mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null)
++                        COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") )
++                elif [[ $prev = "=" ]]; then
++                        mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null)
++                        COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") )
++                else
++                        compopt -o nospace
++                        COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") )
++                fi
++                return 0
+         elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then
+                 comps=$(command localectl list-keymaps)
+         elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then
+diff --git a/shell-completion/zsh/_localectl b/shell-completion/zsh/_localectl
+index 3d76bb0..c04f4f3 100644
+--- a/shell-completion/zsh/_localectl
++++ b/shell-completion/zsh/_localectl
+@@ -1,17 +1,22 @@
+ #compdef localectl
+ _localectl_set-locale() {
+-    local -a _confs _locales
++    local -a _locales locale_fields
++    locale_fields=(LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \
++                   LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \
++                   LC_NAME LC_ADDRESS LC_TELEPHONE \
++                   LC_MEASUREMENT LC_IDENTIFICATION)
++    # LC_ALL is omitted on purpose
++
+     local expl suf
+     _locales=( ${(f)"$(_call_program locales "$service" list-locales)"} )
+-    _confs=( ${${(f)"$(_call_program confs "locale 2>/dev/null")"}%\=*} )
++    compset -P1 '*='
+     if [[ -prefix 1 *\= ]]; then
+         local conf=${PREFIX%%\=*}
+-        compset -P1 '*='
+         _wanted locales expl "locales configs" \
+             _combination localeconfs  confs=$conf locales "$@" -
+     else
+-        compadd -S '='  $_confs
++        compadd -S '=' $locale_fields
+     fi
+ }
diff --git a/debian/patches/shell-completion-remove-load-from-systemctl.patch b/debian/patches/shell-completion-remove-load-from-systemctl.patch
new file mode 100644 (file)
index 0000000..fa215db
--- /dev/null
@@ -0,0 +1,47 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 15 Jan 2014 15:31:07 +0100
+Subject: shell-completion: remove load from systemctl
+
+(cherry picked from commit f89a4474e05307e45992e1f30b6b1b26900d91bd)
+
+Conflicts:
+       shell-completion/bash/systemctl
+---
+ shell-completion/bash/systemctl | 2 +-
+ shell-completion/zsh/_systemctl | 3 +--
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
+index eea4b6d..84149e3 100644
+--- a/shell-completion/bash/systemctl
++++ b/shell-completion/bash/systemctl
+@@ -141,7 +141,7 @@ _systemctl () {
+                              emergency exit halt hibernate hybrid-sleep kexec list-jobs
+                              list-sockets list-units list-unit-files poweroff reboot rescue
+                              show-environment suspend get-default'
+-                     [NAME]='snapshot load'
++                     [NAME]='snapshot'
+                      [FILE]='link'
+                   [TARGETS]='set-default'
+         )
+diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl
+index 3959cd5..6d98cb6 100644
+--- a/shell-completion/zsh/_systemctl
++++ b/shell-completion/zsh/_systemctl
+@@ -24,7 +24,6 @@
+     "status:Show runtime status of one or more units"
+     "show:Show properties of one or more units/jobs or the manager"
+     "reset-failed:Reset failed state for all, one, or more units"
+-    "load:Load one or more units"
+     "list-unit-files:List installed unit files"
+     "enable:Enable one or more unit files"
+     "disable:Disable one or more unit files"
+@@ -266,7 +265,7 @@ done
+ #    [STANDALONE]='daemon-reexec daemon-reload default
+ #                  emergency exit halt kexec list-jobs list-units
+ #                  list-unit-files poweroff reboot rescue show-environment'
+-#         [NAME]='snapshot load'
++#         [NAME]='snapshot'
+ _systemctl_caching_policy()
+ {
diff --git a/debian/patches/shutdown-trim-the-cgroup-tree-on-loop-iteration.patch b/debian/patches/shutdown-trim-the-cgroup-tree-on-loop-iteration.patch
new file mode 100644 (file)
index 0000000..46c00ac
--- /dev/null
@@ -0,0 +1,64 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 5 Nov 2013 22:17:03 +0100
+Subject: shutdown: trim the cgroup tree on loop iteration
+
+This way we leave the cgroup empty before exiting in a container which
+makes sure the container manager will get cgroup notification event
+
+https://bugs.freedesktop.org/show_bug.cgi?id=68370
+https://bugzilla.redhat.com/show_bug.cgi?id=988883
+---
+ src/core/shutdown.c | 16 +++++++++++++---
+ 1 file changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/shutdown.c b/src/core/shutdown.c
+index 4709746..ea02b60 100644
+--- a/src/core/shutdown.c
++++ b/src/core/shutdown.c
+@@ -46,6 +46,7 @@
+ #include "virt.h"
+ #include "watchdog.h"
+ #include "killall.h"
++#include "cgroup-util.h"
+ #define FINALIZE_ATTEMPTS 50
+@@ -131,12 +132,12 @@ static int pivot_to_new_root(void) {
+ }
+ int main(int argc, char *argv[]) {
+-        _cleanup_free_ char *line = NULL;
+-        int cmd, r;
+-        unsigned retries;
+         bool need_umount = true, need_swapoff = true, need_loop_detach = true, need_dm_detach = true;
+         bool in_container, use_watchdog = false;
++        _cleanup_free_ char *line = NULL, *cgroup = NULL;
+         char *arguments[3];
++        unsigned retries;
++        int cmd, r;
+         /* suppress shutdown status output if 'quiet' is used  */
+         r = read_one_line_file("/proc/cmdline", &line);
+@@ -186,6 +187,8 @@ int main(int argc, char *argv[]) {
+                 goto error;
+         }
++        cg_get_root_path(&cgroup);
++
+         use_watchdog = !!getenv("WATCHDOG_USEC");
+         /* lock us into memory */
+@@ -210,6 +213,13 @@ int main(int argc, char *argv[]) {
+                 if (use_watchdog)
+                         watchdog_ping();
++                /* Let's trim the cgroup tree on each iteration so
++                   that we leave an empty cgroup tree around, so that
++                   container managers get a nice notify event when we
++                   are down */
++                if (cgroup)
++                        cg_trim(SYSTEMD_CGROUP_CONTROLLER, cgroup, false);
++
+                 if (need_umount) {
+                         log_info("Unmounting file systems.");
+                         r = umount_all(&changed);
diff --git a/debian/patches/sleep-config-Dereference-pointer-before-check-for-NU.patch b/debian/patches/sleep-config-Dereference-pointer-before-check-for-NU.patch
new file mode 100644 (file)
index 0000000..ba7c657
--- /dev/null
@@ -0,0 +1,48 @@
+From: Stefan Beller <stefanbeller@googlemail.com>
+Date: Mon, 30 Dec 2013 17:43:52 +0100
+Subject: sleep-config: Dereference pointer before check for NULL
+
+This fixes a bug pointed out by http://css.csail.mit.edu/stack/
+(Optimization-unstable code)
+It is a similar fix as f146f5e159 (2013-12-30, core:
+Forgot to dereference pointer when checking for NULL)
+
+To explain this bug consider the following similar, but simpler code:
+       if (!p)
+               free(*p)
+
+Assume the if condition evaluates to true, then we will access *p,
+which means the compiler can assume p is a valid pointer, so it could
+dereference p and use the value *p.
+Assuming p as a valid pointer, !p will be false.
+But initally we assumed the condition evaluates to true.
+
+By this reasoning the optimizing compiler can deduce, we have dead code.
+("The if will never be taken, as *p must be valid, because otherwise
+accessing *p inside the if would segfault")
+
+This led to an error message of the static code checker, so I checked the
+code in question.
+
+As we access *modes and *states before the check in the changed line of
+this patch, I assume the line to be wrong and we actually wanted to check
+for *modes and *states being both non null.
+
+(cherry picked from commit 34a3baa4dbd8a4032ae74cb5947b9494bf3ec106)
+---
+ src/shared/sleep-config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
+index d76e3ad..b2a0787 100644
+--- a/src/shared/sleep-config.c
++++ b/src/shared/sleep-config.c
+@@ -94,7 +94,7 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) {
+         } else
+                 assert_not_reached("what verb");
+-        if (!modes || !states) {
++        if (!*modes || !*states) {
+                 strv_free(*modes);
+                 strv_free(*states);
+                 return log_oom();
diff --git a/debian/patches/sleep-config-fix-double-free.patch b/debian/patches/sleep-config-fix-double-free.patch
new file mode 100644 (file)
index 0000000..7440171
--- /dev/null
@@ -0,0 +1,100 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 31 Dec 2013 11:23:58 -0500
+Subject: sleep-config: fix double free
+
+Before 34a3baa4d 'sleep-config: Dereference pointer before check for NULL'
+oom conditions would not be detected properly. After that commit, a double
+free was performed.
+
+Rework the whole function to be easier to understand, and also replace
+strv_split_nulstr with strv_new, since we know the strings anyway.
+
+(cherry picked from commit dabeaa460d9fa01db645116775f53e3071977503)
+---
+ src/shared/sleep-config.c | 38 ++++++++++++++++++++------------------
+ 1 file changed, 20 insertions(+), 18 deletions(-)
+
+diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
+index b2a0787..70a0896 100644
+--- a/src/shared/sleep-config.c
++++ b/src/shared/sleep-config.c
+@@ -28,11 +28,14 @@
+ #include "strv.h"
+ #include "util.h"
+-int parse_sleep_config(const char *verb, char ***modes, char ***states) {
++#define USE(x, y) do{ (x) = (y); (y) = NULL; } while(0)
++
++int parse_sleep_config(const char *verb, char ***_modes, char ***_states) {
+         _cleanup_strv_free_ char
+                 **suspend_mode = NULL, **suspend_state = NULL,
+                 **hibernate_mode = NULL, **hibernate_state = NULL,
+                 **hybrid_mode = NULL, **hybrid_state = NULL;
++        char **modes, **states;
+         const ConfigTableItem items[] = {
+                 { "Sleep",   "SuspendMode",      config_parse_strv,  0, &suspend_mode  },
+@@ -59,47 +62,46 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) {
+         if (streq(verb, "suspend")) {
+                 /* empty by default */
+-                *modes = suspend_mode;
++                USE(modes, suspend_mode);
+                 if (suspend_state)
+-                        *states = suspend_state;
++                        USE(states, suspend_state);
+                 else
+-                        *states = strv_split_nulstr("mem\0standby\0freeze\0");
++                        states = strv_new("mem", "standby", "freeze", NULL);
+-                suspend_mode = suspend_state = NULL;
+         } else if (streq(verb, "hibernate")) {
+                 if (hibernate_mode)
+-                        *modes = hibernate_mode;
++                        USE(modes, hibernate_mode);
+                 else
+-                        *modes = strv_split_nulstr("platform\0shutdown\0");
++                        modes = strv_new("platform", "shutdown", NULL);
+                 if (hibernate_state)
+-                        *states = hibernate_state;
++                        USE(states, hibernate_state);
+                 else
+-                        *states = strv_split_nulstr("disk\0");
++                        states = strv_new("disk", NULL);
+-                hibernate_mode = hibernate_state = NULL;
+         } else if (streq(verb, "hybrid-sleep")) {
+                 if (hybrid_mode)
+-                        *modes = hybrid_mode;
++                        USE(modes, hybrid_mode);
+                 else
+-                        *modes = strv_split_nulstr("suspend\0platform\0shutdown\0");
++                        modes = strv_new("suspend", "platform", "shutdown", NULL);
+                 if (hybrid_state)
+-                        *states = hybrid_state;
++                        USE(states, hybrid_state);
+                 else
+-                        *states = strv_split_nulstr("disk\0");
++                        states = strv_new("disk", NULL);
+-                hybrid_mode = hybrid_state = NULL;
+         } else
+                 assert_not_reached("what verb");
+-        if (!*modes || !*states) {
+-                strv_free(*modes);
+-                strv_free(*states);
++        if ((!modes && !streq(verb, "suspend")) || !states) {
++                strv_free(modes);
++                strv_free(states);
+                 return log_oom();
+         }
++        *_modes = modes;
++        *_states = states;
+         return 0;
+ }
diff --git a/debian/patches/sleep-config-fix-useless-check-for-swapfile-type.patch b/debian/patches/sleep-config-fix-useless-check-for-swapfile-type.patch
new file mode 100644 (file)
index 0000000..27439f4
--- /dev/null
@@ -0,0 +1,44 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Tue, 24 Dec 2013 16:42:06 -0500
+Subject: sleep-config: fix useless check for swapfile type
+
+Since 0c6f1f4ea49 the check was useless, because the kernel will
+ever only write "partition" or "file" there.
+
+OTOH, it is possible that "\\040(deleted)" (escaped " (deleted)")
+will be added for removed files. This should not happen, so add
+a warning to detect those cases.
+
+(cherry picked from commit db69869f264af2d1afcdd3e573e0e9fdd5bef065)
+---
+ src/shared/sleep-config.c | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
+index 2bb0493..d76e3ad 100644
+--- a/src/shared/sleep-config.c
++++ b/src/shared/sleep-config.c
+@@ -183,7 +183,7 @@ static int hibernation_partition_size(size_t *size, size_t *used) {
+         (void) fscanf(f, "%*s %*s %*s %*s %*s\n");
+         for (i = 1;; i++) {
+-                _cleanup_free_ char *dev = NULL, *d = NULL, *type = NULL;
++                _cleanup_free_ char *dev = NULL, *type = NULL;
+                 size_t size_field, used_field;
+                 int k;
+@@ -202,12 +202,8 @@ static int hibernation_partition_size(size_t *size, size_t *used) {
+                         continue;
+                 }
+-                d = cunescape(dev);
+-                if (!d)
+-                        return -ENOMEM;
+-
+-                if (!streq(type, "partition") && !streq(type, "file")) {
+-                        log_debug("Partition %s has type %s, ignoring.", d, type);
++                if (streq(type, "partition") && endswith(dev, "\\040(deleted)")) {
++                        log_warning("Ignoring deleted swapfile '%s'.", dev);
+                         continue;
+                 }
diff --git a/debian/patches/sleep.c-fix-typo.patch b/debian/patches/sleep.c-fix-typo.patch
new file mode 100644 (file)
index 0000000..71e7956
--- /dev/null
@@ -0,0 +1,22 @@
+From: Michele Curti <michele.curti@gmail.com>
+Date: Tue, 7 Jan 2014 17:51:41 +0100
+Subject: sleep.c: fix typo
+
+(cherry picked from commit 096924092b664e992cec49e2ef4ce33443877ac8)
+---
+ src/sleep/sleep.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index f96987f..c228cb6 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -90,7 +90,7 @@ static int execute(char **modes, char **states) {
+         const char* note = strappenda("SLEEP=", arg_verb);
+         /* This file is opened first, so that if we hit an error,
+-         * we can abort before modyfing any state. */
++         * we can abort before modifying any state. */
+         f = fopen("/sys/power/state", "we");
+         if (!f) {
+                 log_error("Failed to open /sys/power/state: %m");
diff --git a/debian/patches/socket-check-return-from-exec_spawn.patch b/debian/patches/socket-check-return-from-exec_spawn.patch
new file mode 100644 (file)
index 0000000..6cc8ed7
--- /dev/null
@@ -0,0 +1,23 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Wed, 18 Jun 2014 20:34:52 +0200
+Subject: socket: check return from exec_spawn
+
+(cherry picked from commit cee288adf88844acd880e4c0da5ed550c85cdd1a)
+(cherry picked from commit ca5fd86c375e44194154c3204ae0f42fd49a2b2f)
+---
+ src/core/socket.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/core/socket.c b/src/core/socket.c
+index b811a61..8e02c03 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -1208,6 +1208,8 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
+                        UNIT(s)->id,
+                        NULL,
+                        &pid);
++        if (r < 0)
++                goto fail;
+         strv_free(argv);
+         if (r < 0)
diff --git a/debian/patches/socket-properly-handle-if-our-service-vanished-durin.patch b/debian/patches/socket-properly-handle-if-our-service-vanished-durin.patch
new file mode 100644 (file)
index 0000000..39869aa
--- /dev/null
@@ -0,0 +1,27 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 22 May 2014 16:56:21 +0900
+Subject: socket: properly handle if our service vanished during runtime
+
+(cherry picked from commit 640ace4a8de907994a1b95f6d368c3e6a8fcf60f)
+(cherry picked from commit b56c47689c38ea4be7d0307e1e01be5acecf73be)
+---
+ src/core/socket.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/core/socket.c b/src/core/socket.c
+index 842850f..b811a61 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -1462,6 +1462,12 @@ static void socket_enter_running(Socket *s, int cfd) {
+                         }
+                 if (!pending) {
++                        if (!UNIT_ISSET(s->service)) {
++                                log_error_unit(UNIT(s)->id, "%s: service to activate vanished, refusing activation.", UNIT(s)->id);
++                                r = -ENOENT;
++                                goto fail;
++                        }
++
+                         r = manager_add_job(UNIT(s)->manager, JOB_START, UNIT_DEREF(s->service), JOB_REPLACE, true, &error, NULL);
+                         if (r < 0)
+                                 goto fail;
diff --git a/debian/patches/static-nodes-don-t-call-mkdir.patch b/debian/patches/static-nodes-don-t-call-mkdir.patch
new file mode 100644 (file)
index 0000000..1030993
--- /dev/null
@@ -0,0 +1,47 @@
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 17 Oct 2013 19:49:19 +0200
+Subject: static-nodes: don't call mkdir
+
+This is no longer necessary with kmod-15. Bump the requirement.
+---
+ README                             | 2 +-
+ configure.ac                       | 2 +-
+ units/kmod-static-nodes.service.in | 1 -
+ 3 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/README b/README
+index b39cd37..cf0a18d 100644
+--- a/README
++++ b/README
+@@ -95,7 +95,7 @@ REQUIREMENTS:
+         dbus >= 1.4.0
+         libcap
+         libblkid >= 2.20 (from util-linux) (optional)
+-        libkmod >= 14 (optional)
++        libkmod >= 15 (optional)
+         PAM >= 1.1.2 (optional)
+         libcryptsetup (optional)
+         libaudit (optional)
+diff --git a/configure.ac b/configure.ac
+index 4f26092..5bc31c5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -269,7 +269,7 @@ AC_ARG_ENABLE(kmod, AS_HELP_STRING([--disable-kmod], [disable loadable modules s
+ if test "x$enable_kmod" != "xno"; then
+         PKG_CHECK_EXISTS([ libkmod ], have_kmod=yes, have_kmod=no)
+         if test "x$have_kmod" = "xyes"; then
+-                PKG_CHECK_MODULES(KMOD, [ libkmod >= 14 ],
++                PKG_CHECK_MODULES(KMOD, [ libkmod >= 15 ],
+                         [AC_DEFINE(HAVE_KMOD, 1, [Define if kmod is available])],
+                         AC_MSG_ERROR([*** kmod version >= 14 not found]))
+         fi
+diff --git a/units/kmod-static-nodes.service.in b/units/kmod-static-nodes.service.in
+index ff4017b..368f980 100644
+--- a/units/kmod-static-nodes.service.in
++++ b/units/kmod-static-nodes.service.in
+@@ -15,5 +15,4 @@ ConditionPathExists=/lib/modules/%v/modules.devname
+ [Service]
+ Type=oneshot
+ RemainAfterExit=yes
+-ExecStartPre=@MKDIR_P@ /run/tmpfiles.d
+ ExecStart=@KMOD@ static-nodes --format=tmpfiles --output=/run/tmpfiles.d/kmod.conf
diff --git a/debian/patches/strv-don-t-access-potentially-NULL-string-arrays.patch b/debian/patches/strv-don-t-access-potentially-NULL-string-arrays.patch
new file mode 100644 (file)
index 0000000..88e0a72
--- /dev/null
@@ -0,0 +1,23 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 2 Oct 2013 19:38:28 +0200
+Subject: strv: don't access potentially NULL string arrays
+
+---
+ src/shared/env-util.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/env-util.c b/src/shared/env-util.c
+index 5e29629..7976881 100644
+--- a/src/shared/env-util.c
++++ b/src/shared/env-util.c
+@@ -405,7 +405,9 @@ char **strv_env_clean_log(char **e, const char *message) {
+                 e[k++] = *p;
+         }
+-        e[k] = NULL;
++        if (e)
++                e[k] = NULL;
++
+         return e;
+ }
diff --git a/debian/patches/swap-remove-if-else-with-the-same-data-path.patch b/debian/patches/swap-remove-if-else-with-the-same-data-path.patch
new file mode 100644 (file)
index 0000000..29a17d0
--- /dev/null
@@ -0,0 +1,30 @@
+From: Stefan Beller <stefanbeller@googlemail.com>
+Date: Fri, 3 Jan 2014 20:33:20 +0100
+Subject: swap: remove if/else with the same data path
+
+This was introduced in e1770af812 (2012-02-03, swap: replace failure
+boolean by result enum).
+
+This just removes unneeded lines of code, no functional change.
+
+(cherry picked from commit 7bb01eff62aa7b612e33fe0e512a4d97862050c4)
+---
+ src/core/swap.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/src/core/swap.c b/src/core/swap.c
+index f295b65..727bb95 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -959,10 +959,7 @@ static void swap_sigchld_event(Unit *u, pid_t pid, int code, int status) {
+         case SWAP_DEACTIVATING_SIGKILL:
+         case SWAP_DEACTIVATING_SIGTERM:
+-                if (f == SWAP_SUCCESS)
+-                        swap_enter_dead(s, f);
+-                else
+-                        swap_enter_dead(s, f);
++                swap_enter_dead(s, f);
+                 break;
+         default:
diff --git a/debian/patches/sysctl-replaces-some-slashes-with-dots.patch b/debian/patches/sysctl-replaces-some-slashes-with-dots.patch
new file mode 100644 (file)
index 0000000..f857dab
--- /dev/null
@@ -0,0 +1,95 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 16 Apr 2014 21:33:46 -0400
+Subject: sysctl: replaces some slashes with dots
+
+It turns out that plain sysctl understands a.b/c syntax to write to
+/proc/sys/a/b.c. Support this for compatibility.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=77466
+(cherry picked from commit 2e573fcf8754fdfe0db0a783b1631ec1679b063a)
+(cherry picked from commit 19333d3a75eae318e5d123a9d23d498e1b6138c7)
+---
+ man/sysctl.d.xml    | 29 +++++++++++++++++++++--------
+ src/sysctl/sysctl.c | 18 ++++++++++++++++--
+ 2 files changed, 37 insertions(+), 10 deletions(-)
+
+diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
+index 00a857b..db53b49 100644
+--- a/man/sysctl.d.xml
++++ b/man/sysctl.d.xml
+@@ -68,13 +68,26 @@
+                 <para>The configuration files contain a list of
+                 variable assignments, separated by newlines. Empty
+                 lines and lines whose first non-whitespace character
+-                is # or ; are ignored.</para>
+-
+-                <para>Note that both / and . are accepted as label
+-                separators within sysctl variable
+-                names. <literal>kernel.domainname=foo</literal> and
+-                <literal>kernel/domainname=foo</literal> hence are
+-                entirely equivalent.</para>
++                is <literal>#</literal> or <literal>;</literal> are
++                ignored.</para>
++
++                <para>Note that either <literal>/</literal> or
++                <literal>.</literal> may be used as separators within
++                sysctl variable names. If the first separator is a
++                slash, remaining slashes and dots are left intact. If
++                the first separator is a dot, dots and slashes are
++                interchanged. <literal>kernel.domainname=foo</literal>
++                and <literal>kernel/domainname=foo</literal> are
++                equivalent and will cause <literal>foo</literal> to
++                be written to
++                <filename>/proc/sys/kernel/domainname</filename>.
++                Either
++                <literal>net.ipv4.conf.enp3s0/200.forwarding</literal>
++                or
++                <literal>net/ipv4/conf/enp3s0.200/forwarding</literal>
++                may be used to refer to
++                <filename>/proc/sys/net/ipv4/conf/enp3s0.200/forwarding</filename>.
++                </para>
+                 <para>Each configuration file shall be named in the
+                 style of <filename><replaceable>program</replaceable>.conf</filename>.
+@@ -109,7 +122,7 @@
+                 early on boot. The network interface-specific options
+                 will also be applied individually for each network
+                 interface as it shows up in the system. (More
+-                specifically, that is
++                specifically,
+                 <filename>net.ipv4.conf.*</filename>,
+                 <filename>net.ipv6.conf.*</filename>,
+                 <filename>net.ipv4.neigh.*</filename> and <filename>net.ipv6.neigh.*</filename>)</para>
+diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
+index 8fb0eb6..70c4d89 100644
+--- a/src/sysctl/sysctl.c
++++ b/src/sysctl/sysctl.c
+@@ -48,12 +48,26 @@ static const char conf_file_dirs[] =
+ #endif
+         ;
+-static char *normalize_sysctl(char *s) {
++static char* normalize_sysctl(char *s) {
+         char *n;
+-        for (n = s; *n; n++)
++        n = strpbrk(s, "/.");
++        /* If the first separator is a slash, the path is
++         * assumed to be normalized and slashes remain slashes
++         * and dots remains dots. */
++        if (!n || *n == '/')
++                return s;
++
++        /* Otherwise, dots become slashes and slashes become
++         * dots. Fun. */
++        while (n) {
+                 if (*n == '.')
+                         *n = '/';
++                else
++                        *n = '.';
++
++                n = strpbrk(n + 1, "/.");
++        }
+         return s;
+ }
diff --git a/debian/patches/sysfs-show.c-return-negative-error.patch b/debian/patches/sysfs-show.c-return-negative-error.patch
new file mode 100644 (file)
index 0000000..081dd81
--- /dev/null
@@ -0,0 +1,22 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sat, 30 Nov 2013 21:59:40 +0100
+Subject: sysfs-show.c: return negative error
+
+introduced in 1ca208fb4f93e5869704af1812cbff7130a2fc03
+---
+ src/login/sysfs-show.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
+index 7c1adfa..f7d11dd 100644
+--- a/src/login/sysfs-show.c
++++ b/src/login/sysfs-show.c
+@@ -164,7 +164,7 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
+         e = udev_enumerate_new(udev);
+         if (!e)
+-                return ENOMEM;
++                return -ENOMEM;
+         if (!streq(seat, "seat0"))
+                 r = udev_enumerate_add_match_tag(e, seat);
diff --git a/debian/patches/systemctl-add-more-verbose-explanation-of-kill-who-a.patch b/debian/patches/systemctl-add-more-verbose-explanation-of-kill-who-a.patch
new file mode 100644 (file)
index 0000000..43eab40
--- /dev/null
@@ -0,0 +1,57 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 25 Mar 2014 00:51:22 +0100
+Subject: systemctl: add more verbose explanation of --kill-who and what
+ control/main processes are
+
+(cherry picked from commit af7424af70d063412c09b0125f4d4a39865210dc)
+(cherry picked from commit e28c1308c99a4172d99304d927d675e29d0b7fa5)
+---
+ man/systemctl.xml | 35 ++++++++++++++++++++++++++++++-----
+ 1 file changed, 30 insertions(+), 5 deletions(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 816586c..6492b0e 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -389,11 +389,36 @@ systemctl start foo
+         <listitem>
+           <para>When used with <command>kill</command>, choose which
+-          processes to kill. Must be one of <option>main</option>,
+-          <option>control</option> or <option>all</option> to select
+-          whether to kill only the main process of the unit, the
+-          control process or all processes of the unit. If omitted,
+-          defaults to <option>all</option>.</para>
++          processes to send a signal to. Must be one of
++          <option>main</option>, <option>control</option> or
++          <option>all</option> to select whether to kill only the main
++          process, the control process or all processes of the
++          unit. The main process of the unit is the one that defines
++          the life-time of it. A control process of a unit is one that
++          is invoked by the manager to induce state changes of it. For
++          example, all processes started due to the
++          <varname>ExecStartPre=</varname>,
++          <varname>ExecStop=</varname> or
++          <varname>ExecReload=</varname> settings of service units are
++          control processes. Note that there is only one control
++          process per unit at a time, as only one state change is
++          executed at a time. For services of type
++          <varname>Type=forking</varname> the initial process started
++          by the manager for <varname>ExecStart=</varname> is a
++          control process, while the process ultimately forked off by
++          that one is then considered the main process of the unit (if
++          it can be determined). This is different for service units
++          of other types, where the process forked off by the manager
++          for <varname>ExecStart=</varname> is always the main process
++          itself. A service unit consists of no or one main process,
++          no or one control process plus any number of additional
++          processes. Not all unit types manage processes of these
++          types however. For example for mount units control processes
++          are defined (which are the invocations of
++          <filename>/usr/bin/mount</filename> and
++          <filename>/usr/bin/umount</filename>), but no main process
++          is defined. If omitted, defaults to
++          <option>all</option>.</para>
+         </listitem>
+       </varlistentry>
diff --git a/debian/patches/systemctl-add-the-plain-option-to-the-help-message.patch b/debian/patches/systemctl-add-the-plain-option-to-the-help-message.patch
new file mode 100644 (file)
index 0000000..e495837
--- /dev/null
@@ -0,0 +1,23 @@
+From: Djalal Harouni <tixxdz@opendz.org>
+Date: Sun, 15 Dec 2013 00:05:38 +0100
+Subject: systemctl: add the --plain option to the help message
+
+(cherry picked from commit 815ebc540daf5cede58570bbeb0a4106e201c52e)
+---
+ src/systemctl/systemctl.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index db584b2..bc9808a 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4748,7 +4748,8 @@ static int systemctl_help(void) {
+                "     --root=PATH      Enable unit files in the specified root directory\n"
+                "  -n --lines=INTEGER  Number of journal entries to show\n"
+                "  -o --output=STRING  Change journal output mode (short, short-monotonic,\n"
+-               "                      verbose, export, json, json-pretty, json-sse, cat)\n\n"
++               "                      verbose, export, json, json-pretty, json-sse, cat)\n"
++               "     --plain          Print unit dependencies as a list instead of a tree\n\n"
+                "Unit Commands:\n"
+                "  list-units                      List loaded units\n"
+                "  list-sockets                    List loaded sockets ordered by address\n"
diff --git a/debian/patches/systemctl-fix-name-mangling-for-sysv-units.patch b/debian/patches/systemctl-fix-name-mangling-for-sysv-units.patch
new file mode 100644 (file)
index 0000000..b55600f
--- /dev/null
@@ -0,0 +1,130 @@
+From: =?utf-8?q?V=C3=A1clav_Pavl=C3=ADn?= <vpavlin@redhat.com>
+Date: Wed, 2 Oct 2013 16:42:42 +0200
+Subject: systemctl: fix name mangling for sysv units
+
+---
+ src/systemctl/systemctl.c | 45 ++++++++++++++++++---------------------------
+ 1 file changed, 18 insertions(+), 27 deletions(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index bb7ada9..d75281f 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4218,11 +4218,10 @@ static int set_environment(DBusConnection *bus, char **args) {
+         return 0;
+ }
+-static int enable_sysv_units(char **args) {
++static int enable_sysv_units(const char *verb, char **args) {
+         int r = 0;
+ #if defined(HAVE_SYSV_COMPAT) && defined(HAVE_CHKCONFIG)
+-        const char *verb = args[0];
+         unsigned f = 1, t = 1;
+         LookupPaths paths = {};
+@@ -4242,7 +4241,7 @@ static int enable_sysv_units(char **args) {
+                 return r;
+         r = 0;
+-        for (f = 1; args[f]; f++) {
++        for (f = 0; args[f]; f++) {
+                 const char *name;
+                 _cleanup_free_ char *p = NULL, *q = NULL;
+                 bool found_native = false, found_sysv;
+@@ -4365,7 +4364,7 @@ finish:
+         lookup_paths_free(&paths);
+         /* Drop all SysV units */
+-        for (f = 1, t = 1; args[f]; f++) {
++        for (f = 0, t = 0; args[f]; f++) {
+                 if (isempty(args[f]))
+                         continue;
+@@ -4423,16 +4422,16 @@ static int enable_unit(DBusConnection *bus, char **args) {
+         dbus_error_init(&error);
+-        r = enable_sysv_units(args);
+-        if (r < 0)
+-                return r;
+-
+         if (!args[1])
+                 return 0;
+         r = mangle_names(args+1, &mangled_names);
+         if (r < 0)
+-                goto finish;
++                return r;
++
++        r = enable_sysv_units(verb, mangled_names);
++        if (r < 0)
++                return r;
+         if (!bus || avoid_bus()) {
+                 if (streq(verb, "enable")) {
+@@ -4624,11 +4623,15 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
+         _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
+         bool enabled;
+         char **name;
+-        char *n;
++        _cleanup_strv_free_ char **mangled_names = NULL;
+         dbus_error_init(&error);
+-        r = enable_sysv_units(args);
++        r = mangle_names(args+1, &mangled_names);
++        if (r < 0)
++                return r;
++
++        r = enable_sysv_units(args[0], mangled_names);
+         if (r < 0)
+                 return r;
+@@ -4636,16 +4639,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
+         if (!bus || avoid_bus()) {
+-                STRV_FOREACH(name, args+1) {
++                STRV_FOREACH(name, mangled_names) {
+                         UnitFileState state;
+-                        n = unit_name_mangle(*name);
+-                        if (!n)
+-                                return log_oom();
+-
+-                        state = unit_file_get_state(arg_scope, arg_root, n);
+-
+-                        free(n);
++                        state = unit_file_get_state(arg_scope, arg_root, *name);
+                         if (state < 0)
+                                 return state;
+@@ -4660,13 +4657,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
+                 }
+         } else {
+-                STRV_FOREACH(name, args+1) {
++                STRV_FOREACH(name, mangled_names) {
+                         const char *s;
+-                        n = unit_name_mangle(*name);
+-                        if (!n)
+-                                return log_oom();
+-
+                         r = bus_method_call_with_reply (
+                                         bus,
+                                         "org.freedesktop.systemd1",
+@@ -4675,11 +4668,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
+                                         "GetUnitFileState",
+                                         &reply,
+                                         NULL,
+-                                        DBUS_TYPE_STRING, &n,
++                                        DBUS_TYPE_STRING, name,
+                                         DBUS_TYPE_INVALID);
+-                        free(n);
+-
+                         if (r)
+                                 return r;
diff --git a/debian/patches/systemctl-fix-typo-in-help-text.patch b/debian/patches/systemctl-fix-typo-in-help-text.patch
new file mode 100644 (file)
index 0000000..3bf1510
--- /dev/null
@@ -0,0 +1,21 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Fri, 1 Nov 2013 20:46:49 +0100
+Subject: systemctl: fix typo in help text
+
+---
+ src/systemctl/systemctl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 036828b..36040db 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4743,7 +4743,7 @@ static int systemctl_help(void) {
+                "  -f --force          When enabling unit files, override existing symlinks\n"
+                "                      When shutting down, execute action immediately\n"
+                "     --root=PATH      Enable unit files in the specified root directory\n"
+-               "  -n --lines=INTEGER  Numer of journal entries to show\n"
++               "  -n --lines=INTEGER  Number of journal entries to show\n"
+                "  -o --output=STRING  Change journal output mode (short, short-monotonic,\n"
+                "                      verbose, export, json, json-pretty, json-sse, cat)\n\n"
+                "Unit Commands:\n"
diff --git a/debian/patches/systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch b/debian/patches/systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch
new file mode 100644 (file)
index 0000000..a36c615
--- /dev/null
@@ -0,0 +1,51 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 25 Mar 2014 00:31:48 +0100
+Subject: systemctl: --kill-mode is long long gone,
+ don't mention it in the man page
+
+(cherry picked from commit 0088d63151e088d62104d88f866e9eb049091c22)
+(cherry picked from commit 12a170a49538c7e28daa18a23800067e6a5e1f93)
+---
+ man/systemctl.xml               | 5 ++---
+ shell-completion/bash/systemctl | 5 +----
+ 2 files changed, 3 insertions(+), 7 deletions(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 171a9bf..816586c 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -671,9 +671,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+           <listitem>
+             <para>Send a signal to one or more processes of the
+             unit. Use <option>--kill-who=</option> to select which
+-            process to kill. Use <option>--kill-mode=</option> to select
+-            the kill mode and <option>--signal=</option> to select the
+-            signal to send.</para>
++            process to kill. Use <option>--signal=</option> to select
++            the signal to send.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
+index a5f10b4..857552d 100644
+--- a/shell-completion/bash/systemctl
++++ b/shell-completion/bash/systemctl
+@@ -74,7 +74,7 @@ _systemctl () {
+                [STANDALONE]='--all -a --reverse --after --before --defaults --fail --ignore-dependencies --failed --force -f --full -l --global
+                              --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall
+                              --quiet -q --privileged -P --system --user --version --runtime'
+-                      [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --state --root'
++                      [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
+         )
+         if __contains_word "--user" ${COMP_WORDS[*]}; then
+@@ -99,9 +99,6 @@ _systemctl () {
+                         --kill-who)
+                                 comps='all control main'
+                         ;;
+-                        --kill-mode)
+-                                comps='control-group process'
+-                        ;;
+                         --root)
+                                 comps=$(compgen -A directory -- "$cur" )
+                                 compopt -o filenames
diff --git a/debian/patches/systemctl-make-LOAD-column-width-dynamic.patch b/debian/patches/systemctl-make-LOAD-column-width-dynamic.patch
new file mode 100644 (file)
index 0000000..d355e94
--- /dev/null
@@ -0,0 +1,64 @@
+From: =?utf-8?q?Mantas_Mikul=C4=97nas?= <grawity@gmail.com>
+Date: Mon, 4 Nov 2013 23:01:17 +0200
+Subject: systemctl: make LOAD column width dynamic
+
+Otherwise 'not-found' overflows into the ACTIVE column.
+---
+ src/systemctl/systemctl.c | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 36040db..906982a 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -287,14 +287,16 @@ static bool output_show_unit(const struct unit_info *u) {
+ }
+ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
+-        unsigned id_len, max_id_len, active_len, sub_len, job_len, desc_len, n_shown = 0;
++        unsigned id_len, max_id_len, load_len, active_len, sub_len, job_len, desc_len;
++        unsigned n_shown = 0;
+         const struct unit_info *u;
+         int job_count = 0;
+-        max_id_len = sizeof("UNIT")-1;
+-        active_len = sizeof("ACTIVE")-1;
+-        sub_len = sizeof("SUB")-1;
+-        job_len = sizeof("JOB")-1;
++        max_id_len = strlen("UNIT");
++        load_len = strlen("LOAD");
++        active_len = strlen("ACTIVE");
++        sub_len = strlen("SUB");
++        job_len = strlen("JOB");
+         desc_len = 0;
+         for (u = unit_infos; u < unit_infos + c; u++) {
+@@ -302,6 +304,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
+                         continue;
+                 max_id_len = MAX(max_id_len, strlen(u->id));
++                load_len = MAX(load_len, strlen(u->load_state));
+                 active_len = MAX(active_len, strlen(u->active_state));
+                 sub_len = MAX(sub_len, strlen(u->sub_state));
+                 if (u->job_id != 0) {
+@@ -344,7 +347,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
+                         continue;
+                 if (!n_shown && !arg_no_legend) {
+-                        printf("%-*s %-6s %-*s %-*s ", id_len, "UNIT", "LOAD",
++                        printf("%-*s %-*s %-*s %-*s ", id_len, "UNIT", load_len, "LOAD",
+                                active_len, "ACTIVE", sub_len, "SUB");
+                         if (job_count)
+                                 printf("%-*s ", job_len, "JOB");
+@@ -371,9 +374,9 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
+                 e = arg_full ? NULL : ellipsize(u->id, id_len, 33);
+-                printf("%s%-*s%s %s%-6s%s %s%-*s %-*s%s %-*s",
++                printf("%s%-*s%s %s%-*s%s %s%-*s %-*s%s %-*s",
+                        on, id_len, e ? e : u->id, off,
+-                       on_loaded, u->load_state, off_loaded,
++                       on_loaded, load_len, u->load_state, off_loaded,
+                        on_active, active_len, u->active_state,
+                        sub_len, u->sub_state, off_active,
+                        job_count ? job_len + 1 : 0, u->job_id ? u->job_type : "");
diff --git a/debian/patches/systemctl-return-r-instead-of-always-returning-0.patch b/debian/patches/systemctl-return-r-instead-of-always-returning-0.patch
new file mode 100644 (file)
index 0000000..945355c
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 6 Nov 2013 11:18:02 +0100
+Subject: systemctl: return r instead of always returning 0
+
+---
+ src/systemctl/systemctl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 906982a..db584b2 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -1365,7 +1365,7 @@ static int list_jobs(DBusConnection *bus, char **args) {
+         }
+         free(jobs);
+-        return 0;
++        return r;
+ }
+ static int cancel_job(DBusConnection *bus, char **args) {
diff --git a/debian/patches/systemctl-skip-native-unit-file-handling-if-sysv-fil.patch b/debian/patches/systemctl-skip-native-unit-file-handling-if-sysv-fil.patch
new file mode 100644 (file)
index 0000000..d53f149
--- /dev/null
@@ -0,0 +1,28 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 20 Jan 2014 13:43:20 +0100
+Subject: systemctl: skip native unit file handling if sysv file handling
+ already handled everything
+
+Issue pointed out by Colin Guthrie.
+
+(cherry picked from commit 67d6621059085963a2a908a3ea99ced3b0ca789e)
+---
+ src/systemctl/systemctl.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index bc9808a..da49da7 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4436,6 +4436,11 @@ static int enable_unit(DBusConnection *bus, char **args) {
+         if (r < 0)
+                 return r;
++        /* If the operation was fully executed by the SysV compat,
++         * let's finish early */
++        if (strv_isempty(mangled_names))
++                return 0;
++
+         if (!bus || avoid_bus()) {
+                 if (streq(verb, "enable")) {
+                         r = unit_file_enable(arg_scope, arg_runtime, arg_root, mangled_names, arg_force, &changes, &n_changes);
diff --git a/debian/patches/systemd-add-a-start-job-for-all-units-specified-with.patch b/debian/patches/systemd-add-a-start-job-for-all-units-specified-with.patch
new file mode 100644 (file)
index 0000000..789c6c5
--- /dev/null
@@ -0,0 +1,44 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 5 Dec 2013 00:41:12 -0500
+Subject: systemd: add a start job for all units specified with SYSTEMD_WANTS=
+
+---
+ src/core/device.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/device.c b/src/core/device.c
+index 5397bd6..610fe88 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -281,7 +281,8 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+                         size_t l;
+                         FOREACH_WORD_QUOTED(w, l, wants, state) {
+-                                char *e, *n;
++                                _cleanup_free_ char *e, *n = NULL;
++                                Unit *other;
+                                 e = strndup(w, l);
+                                 if (!e) {
+@@ -293,12 +294,19 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+                                         r = -ENOMEM;
+                                         goto fail;
+                                 }
+-                                free(e);
+                                 r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true);
+-                                free(n);
+                                 if (r < 0)
+                                         goto fail;
++
++                                other = manager_get_unit(u->manager, n);
++                                if (!other || !unit_can_start(other))
++                                        continue;
++
++                                r = manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL);
++                                if (r < 0)
++                                        log_warning("Failed to add job %s/%s, ignoring: %s.",
++                                                    other->id, job_type_to_string(JOB_START), strerror(-r));
+                         }
+                 }
+         }
diff --git a/debian/patches/systemd-detect-virt-only-discover-Xen-domU.patch b/debian/patches/systemd-detect-virt-only-discover-Xen-domU.patch
new file mode 100644 (file)
index 0000000..2b2a3d9
--- /dev/null
@@ -0,0 +1,80 @@
+From: Thomas Blume <Thomas.Blume@suse.com>
+Date: Fri, 6 Jun 2014 16:36:45 +0200
+Subject: systemd-detect-virt: only discover Xen domU
+
+The current vm detection lacks the distinction between Xen dom0 and Xen domU.
+Both, dom0 and domU are running inside the hypervisor.
+Therefore systemd-detect-virt and the ConditionVirtualization directive detect
+dom0 as a virtual machine.
+
+dom0 is not using virtual devices but is accessing the real hardware.
+Therefore dom0 should be considered the virtualisation host and not a virtual
+machine.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=77271
+(cherry picked from commit 37287585b6ba9a55065c8f94458f6db3c0abe0af)
+(cherry picked from commit f22d2ebe687ad842f4bed11df918ed07a0bb3e78)
+
+Conflicts:
+       src/shared/virt.c
+---
+ src/shared/virt.c | 34 +++++++++++++++++++++++++++-------
+ 1 file changed, 27 insertions(+), 7 deletions(-)
+
+diff --git a/src/shared/virt.c b/src/shared/virt.c
+index 4e18638..e59f2b1 100644
+--- a/src/shared/virt.c
++++ b/src/shared/virt.c
+@@ -149,7 +149,7 @@ static int detect_vm_dmi(const char **_id) {
+ /* Returns a short identifier for the various VM implementations */
+ int detect_vm(const char **id) {
+-        _cleanup_free_ char *hvtype = NULL, *cpuinfo_contents = NULL;
++        _cleanup_free_ char *domcap = NULL, *cpuinfo_contents = NULL;
+         static __thread int cached_found = -1;
+         static __thread const char *cached_id = NULL;
+         const char *_id = NULL;
+@@ -163,17 +163,37 @@ int detect_vm(const char **id) {
+                 return cached_found;
+         }
+-        /* Try high-level hypervisor sysfs file first:
++        /* Try xen capabilities file first, if not found try high-level hypervisor sysfs file:
+          *
+-         * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */
+-        r = read_one_line_file("/sys/hypervisor/type", &hvtype);
++         * https://bugs.freedesktop.org/show_bug.cgi?id=77271 */
++        r = read_one_line_file("/proc/xen/capabilities", &domcap);
+         if (r >= 0) {
+-                if (streq(hvtype, "xen")) {
++                char *cap, *i = domcap;
++
++                while ((cap = strsep(&i, ",")))
++                        if (streq(cap, "control_d"))
++                                break;
++
++                if (!i)  {
+                         _id = "xen";
+                         r = 1;
+-                        goto finish;
+                 }
+-        } else if (r != -ENOENT)
++
++                goto finish;
++
++        } else if (r == -ENOENT) {
++                _cleanup_free_ char *hvtype = NULL;
++
++                r = read_one_line_file("/sys/hypervisor/type", &hvtype);
++                if (r >= 0) {
++                        if (streq(hvtype, "xen")) {
++                                _id = "xen";
++                                r = 1;
++                                goto finish;
++                        }
++                } else if (r != -ENOENT)
++                        return r;
++        } else
+                 return r;
+         /* this will set _id to "other" and return 0 for unknown hypervisors */
diff --git a/debian/patches/systemd-fix-memory-leak-in-cgroup-code.patch b/debian/patches/systemd-fix-memory-leak-in-cgroup-code.patch
new file mode 100644 (file)
index 0000000..774d269
--- /dev/null
@@ -0,0 +1,64 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 8 Nov 2013 08:41:13 -0500
+Subject: systemd: fix memory leak in cgroup code
+
+If the unit already was in the hashmap, path would be leaked.
+---
+ src/core/cgroup.c | 24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+diff --git a/src/core/cgroup.c b/src/core/cgroup.c
+index 42c0b3f..32e2599 100644
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -376,23 +376,23 @@ static CGroupControllerMask unit_get_siblings_mask(Unit *u) {
+ }
+ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
+-        char *path = NULL;
++        _cleanup_free_ char *path;
+         int r;
+-        bool is_in_hash = false;
++        bool was_in_hash = false;
+         assert(u);
+         path = unit_default_cgroup_path(u);
+         if (!path)
+-                return -ENOMEM;
++                return log_oom();
+         r = hashmap_put(u->manager->cgroup_unit, path, u);
+         if (r == 0)
+-                is_in_hash = true;
+-
+-        if (r < 0) {
+-                log_error("cgroup %s exists already: %s", path, strerror(-r));
+-                free(path);
++                was_in_hash = true;
++        else if (r < 0) {
++                log_error(r == -EEXIST ?
++                          "cgroup %s exists already: %s" : "hashmap_put failed for %s: %s",
++                          path, strerror(-r));
+                 return r;
+         }
+@@ -405,13 +405,15 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
+         if (u->cgroup_path) {
+                 r = cg_migrate_everywhere(u->manager->cgroup_supported, u->cgroup_path, path);
+                 if (r < 0)
+-                        log_error("Failed to migrate cgroup %s: %s", path, strerror(-r));
++                        log_error("Failed to migrate cgroup from %s to %s: %s",
++                                  u->cgroup_path, path, strerror(-r));
+         }
+-        if (!is_in_hash) {
+-                /* And remember the new data */
++        if (!was_in_hash) {
++                /* Remember the new data */
+                 free(u->cgroup_path);
+                 u->cgroup_path = path;
++                path = NULL;
+         }
+         u->cgroup_realized = true;
index 7bab3a603454efc85f7bf0dcef82276c6ca736fe..d72dc66059d73551ea1dea983a375cac43c5664c 100644 (file)
@@ -1,5 +1,5 @@
 From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 4 Oct 2013 02:15:08 +0000
+Date: Thu, 3 Oct 2013 22:15:08 -0400
 Subject: systemd: order remote mounts from mountinfo before remote-fs.target
 
 Usually the network is stopped before filesystems are umounted.
diff --git a/debian/patches/systemd-python-convert-keyword-value-to-string.patch b/debian/patches/systemd-python-convert-keyword-value-to-string.patch
new file mode 100644 (file)
index 0000000..4e133ac
--- /dev/null
@@ -0,0 +1,26 @@
+From: Richard Marko <rmarko@fedoraproject.org>
+Date: Tue, 5 Nov 2013 15:41:20 +0100
+Subject: systemd-python: convert keyword value to string
+
+Allows using journal.send('msg', PRIORITY=journal.LOG_CRIT)
+
+Before this commit this results in
+TypeError: cannot concatenate 'str' and 'int' objects
+and requires passing PRIORITY value as string to work.
+---
+ src/python-systemd/journal.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py
+index d0bcd24..9c7e004 100644
+--- a/src/python-systemd/journal.py
++++ b/src/python-systemd/journal.py
+@@ -352,6 +352,8 @@ def get_catalog(mid):
+ def _make_line(field, value):
+         if isinstance(value, bytes):
+                 return field.encode('utf-8') + b'=' + value
++        elif isinstance(value, int):
++                return field + '=' + str(value)
+         else:
+                 return field + '=' + value
diff --git a/debian/patches/systemd-python-fix-booted-and-add-two-functions-to-d.patch b/debian/patches/systemd-python-fix-booted-and-add-two-functions-to-d.patch
new file mode 100644 (file)
index 0000000..104a95b
--- /dev/null
@@ -0,0 +1,22 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 11 Nov 2013 19:53:59 -0500
+Subject: systemd-python: fix booted() and add two functions to docs
+
+For some reason sphinx doesn't want to show inherited C functions.
+---
+ src/python-systemd/_daemon.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
+index 6b84fb8..f0ab16f 100644
+--- a/src/python-systemd/_daemon.c
++++ b/src/python-systemd/_daemon.c
+@@ -51,7 +51,7 @@ static PyObject* booted(PyObject *self, PyObject *args) {
+         assert(args == NULL);
+         r = sd_booted();
+-        if (set_error(r, NULL, NULL))
++        if (set_error(r, NULL, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
diff --git a/debian/patches/systemd-python-fix-listen_fds-under-Python-2.patch b/debian/patches/systemd-python-fix-listen_fds-under-Python-2.patch
new file mode 100644 (file)
index 0000000..67606bf
--- /dev/null
@@ -0,0 +1,22 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 30 Dec 2013 00:01:00 -0500
+Subject: systemd-python: fix listen_fds under Python 2
+
+(cherry picked from commit 819c7e4fa4422af1298a0bf074b1f5644e46fa13)
+---
+ src/python-systemd/_daemon.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
+index c6db69f..3982e85 100644
+--- a/src/python-systemd/_daemon.c
++++ b/src/python-systemd/_daemon.c
+@@ -114,7 +114,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) {
+ #else
+         PyObject *obj = NULL;
+         if (!PyArg_ParseTupleAndKeywords(args, keywds, "|O:_listen_fds",
+-                                         (char**) kwlist, &unset, &obj))
++                                         (char**) kwlist, &obj))
+                 return NULL;
+         if (obj != NULL)
+                 unset = PyObject_IsTrue(obj);
diff --git a/debian/patches/systemd-python-fix-setting-of-exception-codes.patch b/debian/patches/systemd-python-fix-setting-of-exception-codes.patch
new file mode 100644 (file)
index 0000000..ac08fd7
--- /dev/null
@@ -0,0 +1,326 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 29 Dec 2013 23:39:28 -0500
+Subject: systemd-python: fix setting of exception codes
+
+The return value of 0 would be treated as failure by mistake,
+resulting in " SystemError: error return without exception set".
+The way that set_error() is used is changed to be the same
+everywhere.
+
+(cherry picked from commit b560cc1c45006a98c7652435df13c96b39827f22)
+---
+ src/python-systemd/_daemon.c | 14 +++++-----
+ src/python-systemd/_reader.c | 63 ++++++++++++++++++++------------------------
+ 2 files changed, 35 insertions(+), 42 deletions(-)
+
+diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
+index f0ab16f..c6db69f 100644
+--- a/src/python-systemd/_daemon.c
++++ b/src/python-systemd/_daemon.c
+@@ -88,7 +88,7 @@ static PyObject* notify(PyObject *self, PyObject *args, PyObject *keywds) {
+ #endif
+         r = sd_notify(unset, msg);
+-        if (set_error(r, NULL, NULL))
++        if (set_error(r, NULL, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
+@@ -123,7 +123,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) {
+ #endif
+         r = sd_listen_fds(unset);
+-        if (set_error(r, NULL, NULL))
++        if (set_error(r, NULL, NULL) < 0)
+                 return NULL;
+         return long_FromLong(r);
+@@ -151,7 +151,7 @@ static PyObject* is_fifo(PyObject *self, PyObject *args) {
+ #endif
+         r = sd_is_fifo(fd, path);
+-        if (set_error(r, path, NULL))
++        if (set_error(r, path, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
+@@ -179,7 +179,7 @@ static PyObject* is_mq(PyObject *self, PyObject *args) {
+ #endif
+         r = sd_is_mq(fd, path);
+-        if (set_error(r, path, NULL))
++        if (set_error(r, path, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
+@@ -203,7 +203,7 @@ static PyObject* is_socket(PyObject *self, PyObject *args) {
+                 return NULL;
+         r = sd_is_socket(fd, family, type, listening);
+-        if (set_error(r, NULL, NULL))
++        if (set_error(r, NULL, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
+@@ -230,7 +230,7 @@ static PyObject* is_socket_inet(PyObject *self, PyObject *args) {
+         }
+         r = sd_is_socket_inet(fd, family, type, listening, (uint16_t) port);
+-        if (set_error(r, NULL, NULL))
++        if (set_error(r, NULL, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
+@@ -265,7 +265,7 @@ static PyObject* is_socket_unix(PyObject *self, PyObject *args) {
+ #endif
+         r = sd_is_socket_unix(fd, type, listening, path, length);
+-        if (set_error(r, path, NULL))
++        if (set_error(r, path, NULL) < 0)
+                 return NULL;
+         return PyBool_FromLong(r);
+diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c
+index bc5db19..0c88926 100644
+--- a/src/python-systemd/_reader.c
++++ b/src/python-systemd/_reader.c
+@@ -206,8 +206,7 @@ PyDoc_STRVAR(Reader_reliable_fd__doc__,
+ static PyObject* Reader_reliable_fd(Reader *self, PyObject *args)
+ {
+     int r = sd_journal_reliable_fd(self->j);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return PyBool_FromLong(r);
+ }
+@@ -221,8 +220,7 @@ PyDoc_STRVAR(Reader_get_events__doc__,
+ static PyObject* Reader_get_events(Reader *self, PyObject *args)
+ {
+     int r = sd_journal_get_events(self->j);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return long_FromLong(r);
+ }
+@@ -242,8 +240,7 @@ static PyObject* Reader_get_timeout(Reader *self, PyObject *args)
+     uint64_t t;
+     r = sd_journal_get_timeout(self->j, &t);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     if (t == (uint64_t) -1)
+@@ -265,8 +262,7 @@ static PyObject* Reader_get_timeout_ms(Reader *self, PyObject *args)
+     uint64_t t;
+     r = sd_journal_get_timeout(self->j, &t);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return absolute_timeout(t);
+@@ -304,7 +300,7 @@ static PyObject* Reader_get_usage(Reader *self, PyObject *args)
+     uint64_t bytes;
+     r = sd_journal_get_usage(self->j, &bytes);
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     assert_cc(sizeof(unsigned long long) == sizeof(bytes));
+@@ -366,8 +362,7 @@ static PyObject* Reader_next(Reader *self, PyObject *args)
+         assert_not_reached("should not be here");
+     Py_END_ALLOW_THREADS
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return PyBool_FromLong(r);
+ }
+@@ -445,7 +440,8 @@ static PyObject* Reader_get(Reader *self, PyObject *args)
+     if (r == -ENOENT) {
+         PyErr_SetString(PyExc_KeyError, field);
+         return NULL;
+-    } else if (set_error(r, NULL, "field name is not valid"))
++    }
++    if (set_error(r, NULL, "field name is not valid") < 0)
+         return NULL;
+     r = extract(msg, msg_len, NULL, &value);
+@@ -530,7 +526,7 @@ static PyObject* Reader_get_realtime(Reader *self, PyObject *args)
+     assert(!args);
+     r = sd_journal_get_realtime_usec(self->j, &timestamp);
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     assert_cc(sizeof(unsigned long long) == sizeof(timestamp));
+@@ -555,7 +551,7 @@ static PyObject* Reader_get_monotonic(Reader *self, PyObject *args)
+     assert(!args);
+     r = sd_journal_get_monotonic_usec(self->j, &timestamp, &id);
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     assert_cc(sizeof(unsigned long long) == sizeof(timestamp));
+@@ -598,8 +594,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds
+         return NULL;
+     r = sd_journal_add_match(self->j, match, match_len);
+-    set_error(r, NULL, "Invalid match");
+-    if (r < 0)
++    if (set_error(r, NULL, "Invalid match") < 0)
+             return NULL;
+     Py_RETURN_NONE;
+@@ -616,8 +611,7 @@ static PyObject* Reader_add_disjunction(Reader *self, PyObject *args)
+ {
+     int r;
+     r = sd_journal_add_disjunction(self->j);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     Py_RETURN_NONE;
+ }
+@@ -633,8 +627,7 @@ static PyObject* Reader_add_conjunction(Reader *self, PyObject *args)
+ {
+     int r;
+     r = sd_journal_add_conjunction(self->j);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     Py_RETURN_NONE;
+ }
+@@ -661,7 +654,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args)
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_seek_head(self->j);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     Py_RETURN_NONE;
+ }
+@@ -678,7 +671,7 @@ static PyObject* Reader_seek_tail(Reader *self, PyObject *args)
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_seek_tail(self->j);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     Py_RETURN_NONE;
+ }
+@@ -699,7 +692,7 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args)
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_seek_realtime_usec(self->j, timestamp);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     Py_RETURN_NONE;
+ }
+@@ -723,20 +716,20 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args)
+     if (bootid) {
+         r = sd_id128_from_string(bootid, &id);
+-        if (set_error(r, NULL, "Invalid bootid"))
++        if (set_error(r, NULL, "Invalid bootid") < 0)
+             return NULL;
+     } else {
+         Py_BEGIN_ALLOW_THREADS
+         r = sd_id128_get_boot(&id);
+         Py_END_ALLOW_THREADS
+-        if (set_error(r, NULL, NULL))
++        if (set_error(r, NULL, NULL) < 0)
+             return NULL;
+     }
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_seek_monotonic_usec(self->j, id, timestamp);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     Py_RETURN_NONE;
+@@ -809,7 +802,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args)
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_seek_cursor(self->j, cursor);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, "Invalid cursor"))
++    if (set_error(r, NULL, "Invalid cursor") < 0)
+         return NULL;
+     Py_RETURN_NONE;
+ }
+@@ -828,7 +821,7 @@ static PyObject* Reader_get_cursor(Reader *self, PyObject *args)
+     assert(!args);
+     r = sd_journal_get_cursor(self->j, &cursor);
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return unicode_FromString(cursor);
+@@ -851,8 +844,7 @@ static PyObject* Reader_test_cursor(Reader *self, PyObject *args)
+         return NULL;
+     r = sd_journal_test_cursor(self->j, cursor);
+-    set_error(r, NULL, NULL);
+-    if (r < 0)
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return PyBool_FromLong(r);
+@@ -876,7 +868,7 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args)
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_query_unique(self->j, query);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, "Invalid field name"))
++    if (set_error(r, NULL, "Invalid field name") < 0)
+         return NULL;
+     value_set = PySet_New(0);
+@@ -930,7 +922,8 @@ static PyObject* Reader_get_catalog(Reader *self, PyObject *args)
+         else
+             set_error(r, NULL, NULL);
+         return NULL;
+-    } else if (set_error(r, NULL, NULL))
++    }
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return unicode_FromString(msg);
+@@ -955,13 +948,13 @@ static PyObject* get_catalog(PyObject *self, PyObject *args)
+         return NULL;
+     r = sd_id128_from_string(id_, &id);
+-    if (set_error(r, NULL, "Invalid id128"))
++    if (set_error(r, NULL, "Invalid id128") < 0)
+         return NULL;
+     Py_BEGIN_ALLOW_THREADS
+     r = sd_journal_get_catalog_for_message_id(id, &msg);
+     Py_END_ALLOW_THREADS
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return unicode_FromString(msg);
+@@ -979,7 +972,7 @@ static PyObject* Reader_get_data_threshold(Reader *self, void *closure)
+     int r;
+     r = sd_journal_get_data_threshold(self->j, &cvalue);
+-    if (set_error(r, NULL, NULL))
++    if (set_error(r, NULL, NULL) < 0)
+         return NULL;
+     return long_FromSize_t(cvalue);
diff --git a/debian/patches/systemd-python-use-.hex-instead-of-.get_hex.patch b/debian/patches/systemd-python-use-.hex-instead-of-.get_hex.patch
new file mode 100644 (file)
index 0000000..5ded4aa
--- /dev/null
@@ -0,0 +1,44 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 5 Apr 2014 13:23:25 -0400
+Subject: systemd-python: use .hex instead of .get_hex()
+
+It turns out the latter got removed in Python 3.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=77086
+(cherry picked from commit b532cf3722e04adb0bd075666eb9989a9390d0a2)
+(cherry picked from commit 3c230a853e32c1a5925e8fcff8c70666c1c5849f)
+---
+ src/python-systemd/journal.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py
+index 9c7e004..dd1f229 100644
+--- a/src/python-systemd/journal.py
++++ b/src/python-systemd/journal.py
+@@ -293,7 +293,7 @@ class Reader(_Reader):
+             monotonic = monotonic.totalseconds()
+         monotonic = int(monotonic * 1000000)
+         if isinstance(bootid, _uuid.UUID):
+-            bootid = bootid.get_hex()
++            bootid = bootid.hex
+         return super(Reader, self).seek_monotonic(monotonic, bootid)
+     def log_level(self, level):
+@@ -314,7 +314,7 @@ class Reader(_Reader):
+         Equivalent to add_match(MESSAGE_ID=`messageid`).
+         """
+         if isinstance(messageid, _uuid.UUID):
+-            messageid = messageid.get_hex()
++            messageid = messageid.hex
+         self.add_match(MESSAGE_ID=messageid)
+     def this_boot(self, bootid=None):
+@@ -346,7 +346,7 @@ class Reader(_Reader):
+ def get_catalog(mid):
+     if isinstance(mid, _uuid.UUID):
+-        mid = mid.get_hex()
++        mid = mid.hex
+     return _get_catalog(mid)
+ def _make_line(field, value):
diff --git a/debian/patches/systemd-serialize-deserialize-forbid_restart-value.patch b/debian/patches/systemd-serialize-deserialize-forbid_restart-value.patch
new file mode 100644 (file)
index 0000000..0da2633
--- /dev/null
@@ -0,0 +1,47 @@
+From: Sylvia Else <sylviabz1@cryogenic.net>
+Date: Sun, 6 Oct 2013 23:06:35 -0400
+Subject: systemd: serialize/deserialize forbid_restart value
+
+The Service type's forbid_restart field was not preserved by
+serialization/deserialization, so the fact that the service should not
+be restarted after stopping was lost.
+
+If a systemctl stop foo command has been given, but the foo service
+has not yet stopped, and then the systemctl --system daemon-reload was
+given, then when the foo service eventually stopped, systemd would
+restart it.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=69800
+---
+ src/core/service.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index 6792024..98b1599 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -2651,6 +2651,9 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
+         if (s->exec_context.var_tmp_dir)
+                 unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir);
++        if (s->forbid_restart)
++                unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart));
++
+         return 0;
+ }
+@@ -2787,6 +2790,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
+                         return log_oom();
+                 s->exec_context.var_tmp_dir = t;
++        } else if (streq(key, "forbid_restart")) {
++                int b;
++
++                b = parse_boolean(value);
++                if (b < 0)
++                        log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value);
++                else
++                        s->forbid_restart = b;
+         } else
+                 log_debug_unit(u->id, "Unknown serialization key '%s'", key);
diff --git a/debian/patches/systemd-treat-reload-failure-as-failure.patch b/debian/patches/systemd-treat-reload-failure-as-failure.patch
new file mode 100644 (file)
index 0000000..336a495
--- /dev/null
@@ -0,0 +1,89 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 2 Dec 2013 21:52:51 -0500
+Subject: systemd: treat reload failure as failure
+
+systemctl reload "suceeded" on stopped units, but it is documented
+to fail in this case.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1036845
+---
+ src/core/job.c  | 11 +++++++----
+ src/core/job.h  |  3 ++-
+ src/core/unit.c |  5 ++++-
+ 3 files changed, 13 insertions(+), 6 deletions(-)
+
+diff --git a/src/core/job.c b/src/core/job.c
+index dc3bc12..7d2b994 100644
+--- a/src/core/job.c
++++ b/src/core/job.c
+@@ -528,7 +528,7 @@ int job_run_and_invalidate(Job *j) {
+                         else if (t == UNIT_ACTIVATING)
+                                 r = -EAGAIN;
+                         else
+-                                r = -ENOEXEC;
++                                r = -EBADR;
+                         break;
+                 }
+@@ -557,8 +557,10 @@ int job_run_and_invalidate(Job *j) {
+         if (j) {
+                 if (r == -EALREADY)
+                         r = job_finish_and_invalidate(j, JOB_DONE, true);
+-                else if (r == -ENOEXEC)
++                else if (r == -EBADR)
+                         r = job_finish_and_invalidate(j, JOB_SKIPPED, true);
++                else if (r == -ENOEXEC)
++                        r = job_finish_and_invalidate(j, JOB_INVALID, true);
+                 else if (r == -EAGAIN) {
+                         j->state = JOB_WAITING;
+                         m->n_running_jobs--;
+@@ -784,7 +786,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) {
+                 goto finish;
+         }
+-        if (result == JOB_FAILED)
++        if (result == JOB_FAILED || result == JOB_INVALID)
+                 j->manager->n_failed_jobs ++;
+         job_uninstall(j);
+@@ -1143,7 +1145,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = {
+         [JOB_TIMEOUT] = "timeout",
+         [JOB_FAILED] = "failed",
+         [JOB_DEPENDENCY] = "dependency",
+-        [JOB_SKIPPED] = "skipped"
++        [JOB_SKIPPED] = "skipped",
++        [JOB_INVALID] = "invalid",
+ };
+ DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult);
+diff --git a/src/core/job.h b/src/core/job.h
+index d90bc96..4237529 100644
+--- a/src/core/job.h
++++ b/src/core/job.h
+@@ -97,7 +97,8 @@ enum JobResult {
+         JOB_TIMEOUT,             /* JobTimeout elapsed */
+         JOB_FAILED,              /* Job failed */
+         JOB_DEPENDENCY,          /* A required dependency job did not result in JOB_DONE */
+-        JOB_SKIPPED,             /* JOB_RELOAD of inactive unit; negative result of JOB_VERIFY_ACTIVE */
++        JOB_SKIPPED,             /* Negative result of JOB_VERIFY_ACTIVE */
++        JOB_INVALID,             /* JOB_RELOAD of inactive unit */
+         _JOB_RESULT_MAX,
+         _JOB_RESULT_INVALID = -1
+ };
+diff --git a/src/core/unit.c b/src/core/unit.c
+index b65e798..6c2c4a0 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1239,8 +1239,11 @@ int unit_reload(Unit *u) {
+         if (state == UNIT_RELOADING)
+                 return -EALREADY;
+-        if (state != UNIT_ACTIVE)
++        if (state != UNIT_ACTIVE) {
++                log_warning_unit(u->id, "Unit %s cannot be reloaded because it is inactive.",
++                                 u->id);
+                 return -ENOEXEC;
++        }
+         if ((following = unit_following(u))) {
+                 log_debug_unit(u->id, "Redirecting reload request from %s to %s.",
diff --git a/debian/patches/systemd-use-unit-name-in-PrivateTmp-directories.patch b/debian/patches/systemd-use-unit-name-in-PrivateTmp-directories.patch
new file mode 100644 (file)
index 0000000..6655be4
--- /dev/null
@@ -0,0 +1,173 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 22 Oct 2013 20:39:18 -0400
+Subject: systemd: use unit name in PrivateTmp directories
+
+Unit name is used whole in the directory name, so that the unit name
+can be easily extracted from it, e.g. "/tmp/systemd-abcd.service-DEDBIF1".
+
+https://bugzilla.redhat.com/show_bug.cgi?id=957439
+---
+ Makefile.am               |  7 ++++++
+ src/core/execute.c        |  2 +-
+ src/core/namespace.c      | 15 ++++++++-----
+ src/core/namespace.h      |  5 ++++-
+ src/test/test-namespace.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 77 insertions(+), 8 deletions(-)
+ create mode 100644 src/test/test-namespace.c
+
+diff --git a/Makefile.am b/Makefile.am
+index 8d9c587..5e3e5d2 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1130,6 +1130,7 @@ tests += \
+       test-unit-file \
+       test-utf8 \
+       test-util \
++      test-namespace \
+       test-date \
+       test-sleep \
+       test-replace-var \
+@@ -1256,6 +1257,12 @@ test_util_CFLAGS = \
+ test_util_LDADD = \
+       libsystemd-core.la
++test_namespace_SOURCES = \
++      src/test/test-namespace.c
++
++test_namespace_LDADD = \
++      libsystemd-core.la
++
+ test_hashmap_SOURCES = \
+       src/test/test-hashmap.c
+diff --git a/src/core/execute.c b/src/core/execute.c
+index 3f7ca52..58be72a 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -1089,7 +1089,7 @@ int exec_spawn(ExecCommand *command,
+         free(line);
+         if (context->private_tmp && !context->tmp_dir && !context->var_tmp_dir) {
+-                r = setup_tmpdirs(&context->tmp_dir, &context->var_tmp_dir);
++                r = setup_tmpdirs(unit_id, &context->tmp_dir, &context->var_tmp_dir);
+                 if (r < 0)
+                         return r;
+         }
+diff --git a/src/core/namespace.c b/src/core/namespace.c
+index 936f368..b453f8d 100644
+--- a/src/core/namespace.c
++++ b/src/core/namespace.c
+@@ -184,26 +184,29 @@ static int make_read_only(BindMount *m) {
+         return 0;
+ }
+-int setup_tmpdirs(char **tmp_dir,
++int setup_tmpdirs(const char *unit_id,
++                  char **tmp_dir,
+                   char **var_tmp_dir) {
+         int r = 0;
+-        char tmp_dir_template[] = "/tmp/systemd-private-XXXXXX",
+-             var_tmp_dir_template[] = "/var/tmp/systemd-private-XXXXXX";
++        _cleanup_free_ char *tmp = NULL, *var = NULL;
+         assert(tmp_dir);
+         assert(var_tmp_dir);
+-        r = create_tmp_dir(tmp_dir_template, tmp_dir);
++        tmp = strjoin("/tmp/systemd-", unit_id, "-XXXXXXX", NULL);
++        var = strjoin("/var/tmp/systemd-", unit_id, "-XXXXXXX", NULL);
++
++        r = create_tmp_dir(tmp, tmp_dir);
+         if (r < 0)
+                 return r;
+-        r = create_tmp_dir(var_tmp_dir_template, var_tmp_dir);
++        r = create_tmp_dir(var, var_tmp_dir);
+         if (r == 0)
+                 return 0;
+         /* failure */
+         rmdir(*tmp_dir);
+-        rmdir(tmp_dir_template);
++        rmdir(tmp);
+         free(*tmp_dir);
+         *tmp_dir = NULL;
+diff --git a/src/core/namespace.h b/src/core/namespace.h
+index ddb5794..ee7416b 100644
+--- a/src/core/namespace.h
++++ b/src/core/namespace.h
+@@ -23,7 +23,10 @@
+ #include <stdbool.h>
+-int setup_tmpdirs(char **tmp_dir, char **var_tmp_dir);
++int setup_tmpdirs(const char *unit_id,
++                  char **tmp_dir,
++                  char **var_tmp_dir);
++
+ int setup_namespace(char **read_write_dirs,
+                     char **read_only_dirs,
+                     char **inaccessible_dirs,
+diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c
+new file mode 100644
+index 0000000..1c04676
+--- /dev/null
++++ b/src/test/test-namespace.c
+@@ -0,0 +1,56 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2013 Zbigniew Jędrzejewski-Szmek
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <libgen.h>
++
++#include "namespace.h"
++#include "util.h"
++
++static void test_tmpdir(const char *id, const char *A, const char *B) {
++        _cleanup_free_ char *a, *b;
++
++        assert_se(setup_tmpdirs(id, &a, &b) == 0);
++        assert(startswith(a, A));
++        assert(startswith(b, B));
++        assert(access(a, F_OK) == 0);
++        assert(access(b, F_OK) == 0);
++
++        assert_se(rmdir(a) == 0);
++        assert_se(rmdir(b) == 0);
++
++        assert(endswith(a, "/tmp"));
++        assert(endswith(b, "/tmp"));
++
++        assert_se(rmdir(dirname(a)) == 0);
++        assert_se(rmdir(dirname(b)) == 0);
++}
++
++int main(int argc, char *argv[]) {
++        test_tmpdir("abcd.service",
++                    "/tmp/systemd-abcd.service-",
++                    "/var/tmp/systemd-abcd.service-");
++
++        test_tmpdir("sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device",
++                    "/tmp/systemd-sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device-",
++                    "/var/tmp/systemd-sys-devices-pci0000:00-0000:00:1a.0-usb3-3\\x2d1-3\\x2d1:1.0-bluetooth-hci0.device-");
++
++        return 0;
++}
diff --git a/debian/patches/test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch b/debian/patches/test-fileio-replace-mktemp-with-mkstemp-to-avoid-war.patch
new file mode 100644 (file)
index 0000000..6ef2245
--- /dev/null
@@ -0,0 +1,38 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Thu, 12 Dec 2013 00:06:30 +0100
+Subject: test-fileio: replace mktemp with mkstemp to avoid warnings
+
+This is a fairly useless thing to do but it makes the compilers
+and analyzers shut up about the use of mktemp.
+
+(cherry picked from commit d514feaa872820d5cb4e9321ad32673c09fbb3f4)
+---
+ src/test/test-fileio.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c
+index 06f3e28..b005f3b 100644
+--- a/src/test/test-fileio.c
++++ b/src/test/test-fileio.c
+@@ -41,7 +41,9 @@ static void test_parse_env_file(void) {
+         char **i;
+         unsigned k;
+-        assert_se(mktemp(p));
++        fd = mkstemp(p);
++        assert_se(fd >= 0);
++        close(fd);
+         fd = mkostemp(t, O_CLOEXEC);
+         assert_se(fd >= 0);
+@@ -152,7 +154,9 @@ static void test_parse_multiline_env_file(void) {
+         _cleanup_strv_free_ char **a = NULL, **b = NULL;
+         char **i;
+-        assert_se(mktemp(p));
++        fd = mkstemp(p);
++        assert_se(fd >= 0);
++        close(fd);
+         fd = mkostemp(t, O_CLOEXEC);
+         assert_se(fd >= 0);
diff --git a/debian/patches/timer-consider-usec_t-1-an-invalid-timestamp.patch b/debian/patches/timer-consider-usec_t-1-an-invalid-timestamp.patch
new file mode 100644 (file)
index 0000000..e6ce5a0
--- /dev/null
@@ -0,0 +1,47 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 11 Nov 2013 03:03:17 +0100
+Subject: timer: consider (usec_t) -1 an invalid timestamp
+
+---
+ src/shared/time-util.c | 4 ++--
+ src/shared/time-util.h | 5 ++++-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/shared/time-util.c b/src/shared/time-util.c
+index b8a6bd7..81d4ede 100644
+--- a/src/shared/time-util.c
++++ b/src/shared/time-util.c
+@@ -157,7 +157,7 @@ char *format_timestamp(char *buf, size_t l, usec_t t) {
+         assert(buf);
+         assert(l > 0);
+-        if (t <= 0)
++        if (t <= 0 || t == (usec_t) -1)
+                 return NULL;
+         sec = (time_t) (t / USEC_PER_SEC);
+@@ -175,7 +175,7 @@ char *format_timestamp_us(char *buf, size_t l, usec_t t) {
+         assert(buf);
+         assert(l > 0);
+-        if (t <= 0)
++        if (t <= 0 || t == (usec_t) -1)
+                 return NULL;
+         sec = (time_t) (t / USEC_PER_SEC);
+diff --git a/src/shared/time-util.h b/src/shared/time-util.h
+index 7660fe1..bc10d22 100644
+--- a/src/shared/time-util.h
++++ b/src/shared/time-util.h
+@@ -64,7 +64,10 @@ dual_timestamp* dual_timestamp_get(dual_timestamp *ts);
+ dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u);
+ dual_timestamp* dual_timestamp_from_monotonic(dual_timestamp *ts, usec_t u);
+-#define dual_timestamp_is_set(ts) ((ts)->realtime > 0)
++static inline bool dual_timestamp_is_set(dual_timestamp *ts) {
++        return ((ts->realtime > 0 && ts->realtime != (usec_t) -1) ||
++                (ts->monotonic > 0 && ts->monotonic != (usec_t) -1));
++}
+ usec_t timespec_load(const struct timespec *ts) _pure_;
+ struct timespec *timespec_store(struct timespec *ts, usec_t u);
diff --git a/debian/patches/timer-properly-format-relative-timestamps-in-the-fut.patch b/debian/patches/timer-properly-format-relative-timestamps-in-the-fut.patch
new file mode 100644 (file)
index 0000000..eb12161
--- /dev/null
@@ -0,0 +1,119 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 11 Nov 2013 03:02:52 +0100
+Subject: timer: properly format relative timestamps in the future
+
+---
+ src/shared/time-util.c | 69 ++++++++++++++++++++++++++++++++------------------
+ 1 file changed, 44 insertions(+), 25 deletions(-)
+
+diff --git a/src/shared/time-util.c b/src/shared/time-util.c
+index 860be61..b8a6bd7 100644
+--- a/src/shared/time-util.c
++++ b/src/shared/time-util.c
+@@ -191,55 +191,62 @@ char *format_timestamp_us(char *buf, size_t l, usec_t t) {
+ }
+ char *format_timestamp_relative(char *buf, size_t l, usec_t t) {
++        const char *s;
+         usec_t n, d;
+         n = now(CLOCK_REALTIME);
+-        if (t <= 0 || t > n || t + USEC_PER_DAY*7 <= t)
++        if (t <= 0 || (t == (usec_t) -1))
+                 return NULL;
+-        d = n - t;
++        if (n > t) {
++                d = n - t;
++                s = "ago";
++        } else {
++                d = t - n;
++                s = "left";
++        }
+         if (d >= USEC_PER_YEAR)
+-                snprintf(buf, l, "%llu years %llu months ago",
++                snprintf(buf, l, "%llu years %llu months %s",
+                          (unsigned long long) (d / USEC_PER_YEAR),
+-                         (unsigned long long) ((d % USEC_PER_YEAR) / USEC_PER_MONTH));
++                         (unsigned long long) ((d % USEC_PER_YEAR) / USEC_PER_MONTH), s);
+         else if (d >= USEC_PER_MONTH)
+-                snprintf(buf, l, "%llu months %llu days ago",
++                snprintf(buf, l, "%llu months %llu days %s",
+                          (unsigned long long) (d / USEC_PER_MONTH),
+-                         (unsigned long long) ((d % USEC_PER_MONTH) / USEC_PER_DAY));
++                         (unsigned long long) ((d % USEC_PER_MONTH) / USEC_PER_DAY), s);
+         else if (d >= USEC_PER_WEEK)
+-                snprintf(buf, l, "%llu weeks %llu days ago",
++                snprintf(buf, l, "%llu weeks %llu days %s",
+                          (unsigned long long) (d / USEC_PER_WEEK),
+-                         (unsigned long long) ((d % USEC_PER_WEEK) / USEC_PER_DAY));
++                         (unsigned long long) ((d % USEC_PER_WEEK) / USEC_PER_DAY), s);
+         else if (d >= 2*USEC_PER_DAY)
+-                snprintf(buf, l, "%llu days ago", (unsigned long long) (d / USEC_PER_DAY));
++                snprintf(buf, l, "%llu days %s", (unsigned long long) (d / USEC_PER_DAY), s);
+         else if (d >= 25*USEC_PER_HOUR)
+-                snprintf(buf, l, "1 day %lluh ago",
+-                         (unsigned long long) ((d - USEC_PER_DAY) / USEC_PER_HOUR));
++                snprintf(buf, l, "1 day %lluh %s",
++                         (unsigned long long) ((d - USEC_PER_DAY) / USEC_PER_HOUR), s);
+         else if (d >= 6*USEC_PER_HOUR)
+-                snprintf(buf, l, "%lluh ago",
+-                         (unsigned long long) (d / USEC_PER_HOUR));
++                snprintf(buf, l, "%lluh %s",
++                         (unsigned long long) (d / USEC_PER_HOUR), s);
+         else if (d >= USEC_PER_HOUR)
+-                snprintf(buf, l, "%lluh %llumin ago",
++                snprintf(buf, l, "%lluh %llumin %s",
+                          (unsigned long long) (d / USEC_PER_HOUR),
+-                         (unsigned long long) ((d % USEC_PER_HOUR) / USEC_PER_MINUTE));
++                         (unsigned long long) ((d % USEC_PER_HOUR) / USEC_PER_MINUTE), s);
+         else if (d >= 5*USEC_PER_MINUTE)
+-                snprintf(buf, l, "%llumin ago",
+-                         (unsigned long long) (d / USEC_PER_MINUTE));
++                snprintf(buf, l, "%llumin %s",
++                         (unsigned long long) (d / USEC_PER_MINUTE), s);
+         else if (d >= USEC_PER_MINUTE)
+-                snprintf(buf, l, "%llumin %llus ago",
++                snprintf(buf, l, "%llumin %llus %s",
+                          (unsigned long long) (d / USEC_PER_MINUTE),
+-                         (unsigned long long) ((d % USEC_PER_MINUTE) / USEC_PER_SEC));
++                         (unsigned long long) ((d % USEC_PER_MINUTE) / USEC_PER_SEC), s);
+         else if (d >= USEC_PER_SEC)
+-                snprintf(buf, l, "%llus ago",
+-                         (unsigned long long) (d / USEC_PER_SEC));
++                snprintf(buf, l, "%llus %s",
++                         (unsigned long long) (d / USEC_PER_SEC), s);
+         else if (d >= USEC_PER_MSEC)
+-                snprintf(buf, l, "%llums ago",
+-                         (unsigned long long) (d / USEC_PER_MSEC));
++                snprintf(buf, l, "%llums %s",
++                         (unsigned long long) (d / USEC_PER_MSEC), s);
+         else if (d > 0)
+-                snprintf(buf, l, "%lluus ago",
+-                         (unsigned long long) d);
++                snprintf(buf, l, "%lluus %s",
++                         (unsigned long long) d, s);
+         else
+                 snprintf(buf, l, "now");
+@@ -479,6 +486,18 @@ int parse_timestamp(const char *t, usec_t *usec) {
+                         return r;
+                 goto finish;
++        } else if (endswith(t, " left")) {
++                _cleanup_free_ char *z;
++
++                z = strndup(t, strlen(t) - 4);
++                if (!z)
++                        return -ENOMEM;
++
++                r = parse_sec(z, &plus);
++                if (r < 0)
++                        return r;
++
++                goto finish;
+         }
+         for (i = 0; i < ELEMENTSOF(day_nr); i++) {
diff --git a/debian/patches/tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch b/debian/patches/tmpfiles-adjust-excludes-for-the-new-per-service-pri.patch
new file mode 100644 (file)
index 0000000..33682cb
--- /dev/null
@@ -0,0 +1,38 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 16 Nov 2013 17:29:28 -0500
+Subject: tmpfiles: adjust excludes for the new per-service private dirs
+
+In d8c9d3a (systemd: use unit name in PrivateTmp directories)
+I forgot to update the tmpfiles config.
+---
+ tmpfiles.d/tmp.conf | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/tmpfiles.d/tmp.conf b/tmpfiles.d/tmp.conf
+index 3b534a1..f0312ef 100644
+--- a/tmpfiles.d/tmp.conf
++++ b/tmpfiles.d/tmp.conf
+@@ -12,6 +12,23 @@ d /tmp 1777 root root 10d
+ d /var/tmp 1777 root root 30d
+ # Exclude namespace mountpoints created with PrivateTmp=yes
++x /tmp/systemd-*.service-*
++x /var/tmp/systemd-*.service-*
++X /tmp/systemd-*.service-*/tmp
++X /var/tmp/systemd-*.service-*/tmp
++x /tmp/systemd-*.socket-*
++x /var/tmp/systemd-*.socket-*
++X /tmp/systemd-*.socket-*/tmp
++X /var/tmp/systemd-*.socket-*/tmp
++x /tmp/systemd-*.mount-*
++x /var/tmp/systemd-*.mount-*
++X /tmp/systemd-*.mount-*/tmp
++X /var/tmp/systemd-*.mount-*/tmp
++x /tmp/systemd-*.swap-*
++x /var/tmp/systemd-*.swap-*
++X /tmp/systemd-*.swap-*/tmp
++X /var/tmp/systemd-*.swap-*/tmp
++# keep those for compatibility during upgrades
+ x /tmp/systemd-private-*
+ x /var/tmp/systemd-private-*
+ X /tmp/systemd-private-*/tmp
diff --git a/debian/patches/tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch b/debian/patches/tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch
new file mode 100644 (file)
index 0000000..db9c617
--- /dev/null
@@ -0,0 +1,33 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 9 Jan 2014 18:00:50 +0100
+Subject: tmpfiles: don't allow label_fix to print ENOENT when we want to
+ ignore it
+
+(cherry picked from commit f58ceb21e9cdc4b79586283743351750ae35c175)
+---
+ src/tmpfiles/tmpfiles.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 4dd1638..5e49cc8 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -435,8 +435,6 @@ finish:
+ }
+ static int item_set_perms_full(Item *i, const char *path, bool ignore_enoent) {
+-        int r;
+-
+         /* not using i->path directly because it may be a glob */
+         if (i->mode_set)
+                 if (chmod(path, i->mode) < 0) {
+@@ -457,8 +455,7 @@ static int item_set_perms_full(Item *i, const char *path, bool ignore_enoent) {
+                         }
+                 }
+-        r = label_fix(path, false, false);
+-        return r == -ENOENT && ignore_enoent ? 0 : r;
++        return label_fix(path, ignore_enoent, false);
+ }
+ static int item_set_perms(Item *i, const char *path) {
diff --git a/debian/patches/tmpfiles-fix-memory-leak-of-exclude_prefixes.patch b/debian/patches/tmpfiles-fix-memory-leak-of-exclude_prefixes.patch
new file mode 100644 (file)
index 0000000..3bf9e98
--- /dev/null
@@ -0,0 +1,40 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 30 Jan 2014 21:40:27 -0500
+Subject: tmpfiles: fix memory leak of exclude_prefixes
+
+Missed in 5c795114.
+
+(cherry picked from commit 498f8a39e66a62d015ac78e67e2504658bbba5f2)
+---
+ src/tmpfiles/tmpfiles.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 5e49cc8..fb88acd 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -1332,12 +1332,12 @@ static int parse_argv(int argc, char *argv[]) {
+                         break;
+                 case ARG_PREFIX:
+-                        if (strv_extend(&include_prefixes, optarg) < 0)
++                        if (strv_push(&include_prefixes, optarg) < 0)
+                                 return log_oom();
+                         break;
+                 case ARG_EXCLUDE_PREFIX:
+-                        if (strv_extend(&exclude_prefixes, optarg) < 0)
++                        if (strv_push(&exclude_prefixes, optarg) < 0)
+                                 return log_oom();
+                         break;
+@@ -1498,7 +1498,8 @@ finish:
+         hashmap_free(items);
+         hashmap_free(globs);
+-        strv_free(include_prefixes);
++        free(include_prefixes);
++        free(exclude_prefixes);
+         set_free_free(unix_sockets);
diff --git a/debian/patches/tmpfiles-fix-permissions-on-new-journal-files.patch b/debian/patches/tmpfiles-fix-permissions-on-new-journal-files.patch
new file mode 100644 (file)
index 0000000..039131e
--- /dev/null
@@ -0,0 +1,26 @@
+From: Greg KH <gregkh@linuxfoundation.org>
+Date: Tue, 15 Apr 2014 14:12:01 -0700
+Subject: tmpfiles: fix permissions on new journal files
+
+When starting up journald on a new system, set the proper permissions on
+the system.journal files, not only on the journal directory.
+
+(cherry picked from commit a606871da508995f5ede113a8fc6538afd98966c)
+(cherry picked from commit ea082a72550975b831076e135f89c035259fdca8)
+---
+ tmpfiles.d/systemd.conf | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
+index 7c6d6b9..c470045 100644
+--- a/tmpfiles.d/systemd.conf
++++ b/tmpfiles.d/systemd.conf
+@@ -23,6 +23,6 @@ d /run/systemd/machines 0755 root root -
+ d /run/systemd/shutdown 0755 root root -
+ m /var/log/journal 2755 root systemd-journal - -
+-m /var/log/journal/%m 2755 root systemd-journal - -
++Z /var/log/journal/%m 2755 root systemd-journal - -
+ m /run/log/journal 2755 root systemd-journal - -
+-m /run/log/journal/%m 2755 root systemd-journal - -
++Z /run/log/journal/%m 2755 root systemd-journal - -
diff --git a/debian/patches/tmpfiles-introduce-the-concept-of-unsafe-operations.patch b/debian/patches/tmpfiles-introduce-the-concept-of-unsafe-operations.patch
new file mode 100644 (file)
index 0000000..850a0af
--- /dev/null
@@ -0,0 +1,281 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 20 Dec 2013 20:25:39 -0500
+Subject: tmpfiles: introduce the concept of unsafe operations
+
+Various operations done by systemd-tmpfiles may only be safely done at
+boot (e.g. removal of X lockfiles in /tmp, creation of /run/nologin).
+Other operations may be done at any point in time (e.g. setting the
+ownership on /{run,var}/log/journal). This distinction is largely
+orthogonal to the type of operation.
+
+A new switch --unsafe is added, and operations which should only be
+executed during bootup are marked with an exclamation mark in the
+configuration files. systemd-tmpfiles.service is modified to use this
+switch, and guards are added so it is hard to re-start it by mistake.
+
+If we install a new version of systemd, we actually want to enforce
+some changes to tmpfiles configuration immediately. This should now be
+possible to do safely, so distribution packages can be modified to
+execute the "safe" subset at package installation time.
+
+/run/nologin creation is split out into a separate service, to make it
+easy to override.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1043212
+https://bugzilla.redhat.com/show_bug.cgi?id=1045849
+(cherry picked from commit c4708f132381e4bbc864d5241381b5cde4f54878)
+---
+ Makefile.am                             |  1 +
+ man/systemd-tmpfiles.xml                |  6 ++++++
+ man/tmpfiles.d.xml                      | 25 +++++++++++++++++++++++++
+ src/tmpfiles/tmpfiles.c                 | 22 +++++++++++++++++++---
+ tmpfiles.d/legacy.conf                  |  6 +++---
+ tmpfiles.d/systemd-nologin.conf         | 11 +++++++++++
+ tmpfiles.d/systemd.conf                 |  4 +---
+ tmpfiles.d/x11.conf                     |  2 +-
+ units/systemd-tmpfiles-setup.service.in |  6 ++++--
+ 9 files changed, 71 insertions(+), 12 deletions(-)
+ create mode 100644 tmpfiles.d/systemd-nologin.conf
+
+diff --git a/Makefile.am b/Makefile.am
+index 16a5c3c..6233a7f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1599,6 +1599,7 @@ nodist_systemunit_DATA += \
+ dist_tmpfiles_DATA = \
+       tmpfiles.d/systemd.conf \
++      tmpfiles.d/systemd-nologin.conf \
+       tmpfiles.d/tmp.conf \
+       tmpfiles.d/x11.conf
+diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
+index 91c0372..495247e 100644
+--- a/man/systemd-tmpfiles.xml
++++ b/man/systemd-tmpfiles.xml
+@@ -133,6 +133,12 @@
+                                 removed.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
++                                <term><option>--unsafe</option></term>
++                                <listitem><para>Also execute lines
++                                with an exclamation mark.
++                                </para></listitem>
++                        </varlistentry>
++                        <varlistentry>
+                                 <term><option>--prefix=PATH</option></term>
+                                 <listitem><para>Only apply rules that
+                                 apply to paths with the specified
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index a00637b..39aa68d 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -113,6 +113,9 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                 <refsect2>
+                         <title>Type</title>
++                        <para>The type consists of a single letter and
++                        optionally an exclamation mark.</para>
++
+                         <para>The following line types are understood:</para>
+                         <variablelist>
+@@ -262,6 +265,28 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                                         names.</para></listitem>
+                                 </varlistentry>
+                         </variablelist>
++
++                        <para>If the exclamation mark is used, this
++                        line is only safe of execute during boot, and
++                        can break a running system. Lines without the
++                        exclamation mark are presumed to be safe to
++                        execute at any time, e.g. on package upgrades.
++                        <command>systemd-tmpfiles</command> will
++                        execute line with an exclamation mark only if
++                        option <option>--unsafe</option> is given.
++                        </para>
++
++                        <para>For example:
++                        <programlisting>
++# Make sure these are created by default so that nobody else can
++d /tmp/.X11-unix 1777 root root 10d
++
++# Unlink the X11 lock files
++r! /tmp/.X[0-9]*-lock
++                        </programlisting>
++                        The second line in contrast to the first one
++                        would break a running system, and will only be
++                        executed with <option>--unsafe</option>.</para>
+                 </refsect2>
+                 <refsect2>
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 00f74c2..30a8a55 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -106,6 +106,7 @@ static Set *unix_sockets = NULL;
+ static bool arg_create = false;
+ static bool arg_clean = false;
+ static bool arg_remove = false;
++static bool arg_unsafe = false;
+ static char **include_prefixes = NULL;
+ static char **exclude_prefixes = NULL;
+@@ -1073,7 +1074,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
+         _cleanup_item_free_ Item *i = NULL;
+         Item *existing;
+         _cleanup_free_ char
+-                *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL;
++                *action = NULL, *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL;
+         char type;
+         Hashmap *h;
+         int r, n = -1;
+@@ -1083,8 +1084,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
+         assert(buffer);
+         r = sscanf(buffer,
+-                   "%c %ms %ms %ms %ms %ms %n",
+-                   &type,
++                   "%ms %ms %ms %ms %ms %ms %n",
++                   &action,
+                    &path,
+                    &mode,
+                    &user,
+@@ -1096,6 +1097,14 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
+                 return -EIO;
+         }
++        if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) {
++                log_error("[%s:%u] Unknown modifier '%s'", fname, line, action);
++                return -EINVAL;
++        } else if (strlen(action) > 1 && !arg_unsafe)
++                return 0;
++
++        type = action[0];
++
+         i = new0(Item, 1);
+         if (!i)
+                 return log_oom();
+@@ -1266,6 +1275,7 @@ static int help(void) {
+                "     --create               Create marked files/directories\n"
+                "     --clean                Clean up marked directories\n"
+                "     --remove               Remove marked files/directories\n"
++               "     --unsafe               Execute actions only safe at boot\n"
+                "     --prefix=PATH          Only apply rules that apply to paths with the specified prefix\n"
+                "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n",
+                program_invocation_short_name);
+@@ -1279,6 +1289,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 ARG_CREATE,
+                 ARG_CLEAN,
+                 ARG_REMOVE,
++                ARG_UNSAFE,
+                 ARG_PREFIX,
+                 ARG_EXCLUDE_PREFIX,
+         };
+@@ -1288,6 +1299,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "create",         no_argument,         NULL, ARG_CREATE         },
+                 { "clean",          no_argument,         NULL, ARG_CLEAN          },
+                 { "remove",         no_argument,         NULL, ARG_REMOVE         },
++                { "unsafe",         no_argument,         NULL, ARG_UNSAFE         },
+                 { "prefix",         required_argument,   NULL, ARG_PREFIX         },
+                 { "exclude-prefix", required_argument,   NULL, ARG_EXCLUDE_PREFIX },
+                 { NULL,             0,                   NULL, 0                  }
+@@ -1318,6 +1330,10 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_remove = true;
+                         break;
++                case ARG_UNSAFE:
++                        arg_unsafe = true;
++                        break;
++
+                 case ARG_PREFIX:
+                         if (strv_extend(&include_prefixes, optarg) < 0)
+                                 return log_oom();
+diff --git a/tmpfiles.d/legacy.conf b/tmpfiles.d/legacy.conf
+index 3fff347..a165687 100644
+--- a/tmpfiles.d/legacy.conf
++++ b/tmpfiles.d/legacy.conf
+@@ -29,6 +29,6 @@ d /run/lock/lockdev 0775 root lock -
+ # kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and
+ # 'quotacheck.mode=force'
+-r /forcefsck
+-r /fastboot
+-r /forcequotacheck
++r! /forcefsck
++r! /fastboot
++r! /forcequotacheck
+diff --git a/tmpfiles.d/systemd-nologin.conf b/tmpfiles.d/systemd-nologin.conf
+new file mode 100644
+index 0000000..d61232b
+--- /dev/null
++++ b/tmpfiles.d/systemd-nologin.conf
+@@ -0,0 +1,11 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++# See tmpfiles.d(5) and systemd-forbid-user-logins.service(5).
++# This file has special suffix so it is not run by mistake.
++
++F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
+diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
+index a05c657..7c6d6b9 100644
+--- a/tmpfiles.d/systemd.conf
++++ b/tmpfiles.d/systemd.conf
+@@ -8,7 +8,7 @@
+ # See tmpfiles.d(5) for details
+ d /run/user 0755 root root ~10d
+-F /run/utmp 0664 root utmp -
++F! /run/utmp 0664 root utmp -
+ f /var/log/wtmp 0664 root utmp -
+ f /var/log/btmp 0600 root utmp -
+@@ -22,8 +22,6 @@ d /run/systemd/users 0755 root root -
+ d /run/systemd/machines 0755 root root -
+ d /run/systemd/shutdown 0755 root root -
+-F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
+-
+ m /var/log/journal 2755 root systemd-journal - -
+ m /var/log/journal/%m 2755 root systemd-journal - -
+ m /run/log/journal 2755 root systemd-journal - -
+diff --git a/tmpfiles.d/x11.conf b/tmpfiles.d/x11.conf
+index ece6a5c..4c96a54 100644
+--- a/tmpfiles.d/x11.conf
++++ b/tmpfiles.d/x11.conf
+@@ -15,4 +15,4 @@ d /tmp/.font-unix 1777 root root 10d
+ d /tmp/.Test-unix 1777 root root 10d
+ # Unlink the X11 lock files
+-r /tmp/.X[0-9]*-lock
++r! /tmp/.X[0-9]*-lock
+diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
+index 3405e28..c2dcae0 100644
+--- a/units/systemd-tmpfiles-setup.service.in
++++ b/units/systemd-tmpfiles-setup.service.in
+@@ -6,7 +6,7 @@
+ #  (at your option) any later version.
+ [Unit]
+-Description=Recreate Volatile Files and Directories
++Description=Create Volatile Files and Directories
+ Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
+ DefaultDependencies=no
+ Wants=local-fs.target
+@@ -18,8 +18,10 @@ ConditionDirectoryNotEmpty=|/lib/tmpfiles.d
+ ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
+ ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
+ ConditionDirectoryNotEmpty=|/run/tmpfiles.d
++RefuseManualStart=yes
++RefuseManualStop=yes
+ [Service]
+ Type=oneshot
+ RemainAfterExit=yes
+-ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --exclude-prefix=/dev
++ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev
diff --git a/debian/patches/tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch b/debian/patches/tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
new file mode 100644 (file)
index 0000000..271c1b1
--- /dev/null
@@ -0,0 +1,32 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Thu, 17 Oct 2013 03:20:46 +0200
+Subject: tmpfiles: log unaccessible FUSE mount points only as debug message
+
+---
+ src/tmpfiles/tmpfiles.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 8122d6a..239e56b 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -275,12 +275,15 @@ static int dir_cleanup(
+                         continue;
+                 if (fstatat(dirfd(d), dent->d_name, &s, AT_SYMLINK_NOFOLLOW) < 0) {
++                        if (errno == ENOENT)
++                                continue;
+-                        if (errno != ENOENT) {
++                        /* FUSE, NFS mounts, SELinux might return EACCES */
++                        if (errno == EACCES)
++                                log_debug("stat(%s/%s) failed: %m", p, dent->d_name);
++                        else
+                                 log_error("stat(%s/%s) failed: %m", p, dent->d_name);
+-                                r = -errno;
+-                        }
+-
++                        r = -errno;
+                         continue;
+                 }
diff --git a/debian/patches/tmpfiles-rename-unsafe-to-boot.patch b/debian/patches/tmpfiles-rename-unsafe-to-boot.patch
new file mode 100644 (file)
index 0000000..dc43dce
--- /dev/null
@@ -0,0 +1,120 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 30 Dec 2013 13:00:38 -0500
+Subject: tmpfiles: rename --unsafe to --boot
+
+As suggested by Kay, it is better to describe what is done,
+not what might happen.
+
+(cherry picked from commit 818156512411835a4a7f070e6fec3d7b80e1f629)
+---
+ man/systemd-tmpfiles.xml                |  2 +-
+ man/tmpfiles.d.xml                      |  4 ++--
+ src/tmpfiles/tmpfiles.c                 | 14 +++++++-------
+ units/systemd-tmpfiles-setup.service.in |  2 +-
+ 4 files changed, 11 insertions(+), 11 deletions(-)
+
+diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
+index c678031..64f9cf9 100644
+--- a/man/systemd-tmpfiles.xml
++++ b/man/systemd-tmpfiles.xml
+@@ -133,7 +133,7 @@
+                                 removed.</para></listitem>
+                         </varlistentry>
+                         <varlistentry>
+-                                <term><option>--unsafe</option></term>
++                                <term><option>--boot</option></term>
+                                 <listitem><para>Also execute lines
+                                 with an exclamation mark.
+                                 </para></listitem>
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index ed88751..8267ffc 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -273,7 +273,7 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
+                         execute at any time, e.g. on package upgrades.
+                         <command>systemd-tmpfiles</command> will
+                         execute line with an exclamation mark only if
+-                        option <option>--unsafe</option> is given.
++                        option <option>--boot</option> is given.
+                         </para>
+                         <para>For example:
+@@ -286,7 +286,7 @@ r! /tmp/.X[0-9]*-lock
+                         </programlisting>
+                         The second line in contrast to the first one
+                         would break a running system, and will only be
+-                        executed with <option>--unsafe</option>.</para>
++                        executed with <option>--boot</option>.</para>
+                 </refsect2>
+                 <refsect2>
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 30a8a55..4dd1638 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -106,7 +106,7 @@ static Set *unix_sockets = NULL;
+ static bool arg_create = false;
+ static bool arg_clean = false;
+ static bool arg_remove = false;
+-static bool arg_unsafe = false;
++static bool arg_boot = false;
+ static char **include_prefixes = NULL;
+ static char **exclude_prefixes = NULL;
+@@ -1100,7 +1100,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
+         if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) {
+                 log_error("[%s:%u] Unknown modifier '%s'", fname, line, action);
+                 return -EINVAL;
+-        } else if (strlen(action) > 1 && !arg_unsafe)
++        } else if (strlen(action) > 1 && !arg_boot)
+                 return 0;
+         type = action[0];
+@@ -1275,7 +1275,7 @@ static int help(void) {
+                "     --create               Create marked files/directories\n"
+                "     --clean                Clean up marked directories\n"
+                "     --remove               Remove marked files/directories\n"
+-               "     --unsafe               Execute actions only safe at boot\n"
++               "     --boot                 Execute actions only safe at boot\n"
+                "     --prefix=PATH          Only apply rules that apply to paths with the specified prefix\n"
+                "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n",
+                program_invocation_short_name);
+@@ -1289,7 +1289,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 ARG_CREATE,
+                 ARG_CLEAN,
+                 ARG_REMOVE,
+-                ARG_UNSAFE,
++                ARG_BOOT,
+                 ARG_PREFIX,
+                 ARG_EXCLUDE_PREFIX,
+         };
+@@ -1299,7 +1299,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "create",         no_argument,         NULL, ARG_CREATE         },
+                 { "clean",          no_argument,         NULL, ARG_CLEAN          },
+                 { "remove",         no_argument,         NULL, ARG_REMOVE         },
+-                { "unsafe",         no_argument,         NULL, ARG_UNSAFE         },
++                { "boot",           no_argument,         NULL, ARG_BOOT           },
+                 { "prefix",         required_argument,   NULL, ARG_PREFIX         },
+                 { "exclude-prefix", required_argument,   NULL, ARG_EXCLUDE_PREFIX },
+                 { NULL,             0,                   NULL, 0                  }
+@@ -1330,8 +1330,8 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_remove = true;
+                         break;
+-                case ARG_UNSAFE:
+-                        arg_unsafe = true;
++                case ARG_BOOT:
++                        arg_boot = true;
+                         break;
+                 case ARG_PREFIX:
+diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
+index c2dcae0..01043b7 100644
+--- a/units/systemd-tmpfiles-setup.service.in
++++ b/units/systemd-tmpfiles-setup.service.in
+@@ -24,4 +24,4 @@ RefuseManualStop=yes
+ [Service]
+ Type=oneshot
+ RemainAfterExit=yes
+-ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev
++ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev
diff --git a/debian/patches/tmpfiles-set-up-selinux-label-proeprly-when-creating.patch b/debian/patches/tmpfiles-set-up-selinux-label-proeprly-when-creating.patch
new file mode 100644 (file)
index 0000000..c27a212
--- /dev/null
@@ -0,0 +1,30 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 16 Jun 2014 13:20:38 +0200
+Subject: tmpfiles: set up selinux label proeprly when creating fifos
+
+(cherry picked from commit 45c196a76b2d883552c90807386d9bed40da822b)
+
+Conflicts:
+       src/shared/util.c
+
+(cherry picked from commit 1762262e61d16e77a9446b7588f7828f70cd9cbb)
+---
+ src/tmpfiles/tmpfiles.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index be2115c..6b0dfaf 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -699,9 +699,11 @@ static int create_item(Item *i) {
+         case CREATE_FIFO:
++                label_context_set(i->path, S_IFIFO);
+                 RUN_WITH_UMASK(0000) {
+                         r = mkfifo(i->path, i->mode);
+                 }
++                label_context_clear();
+                 if (r < 0 && errno != EEXIST) {
+                         log_error("Failed to create fifo %s: %m", i->path);
diff --git a/debian/patches/tmpfiles.d-include-setgid-perms-for-run-log-journal.patch b/debian/patches/tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
new file mode 100644 (file)
index 0000000..ec27ee7
--- /dev/null
@@ -0,0 +1,22 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Wed, 2 Oct 2013 15:35:16 -0400
+Subject: tmpfiles.d: include setgid perms for /run/log/journal
+
+4608af4333d0f7f5 set permissions for journal storage on persistent disk
+but not the volatile storage.
+
+ref: https://bugs.archlinux.org/task/37170
+---
+ tmpfiles.d/systemd.conf | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
+index b630440..a05c657 100644
+--- a/tmpfiles.d/systemd.conf
++++ b/tmpfiles.d/systemd.conf
+@@ -26,3 +26,5 @@ F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
+ m /var/log/journal 2755 root systemd-journal - -
+ m /var/log/journal/%m 2755 root systemd-journal - -
++m /run/log/journal 2755 root systemd-journal - -
++m /run/log/journal/%m 2755 root systemd-journal - -
diff --git a/debian/patches/tty-ask-password-agent-Do-tell-what-directory-we-fai.patch b/debian/patches/tty-ask-password-agent-Do-tell-what-directory-we-fai.patch
new file mode 100644 (file)
index 0000000..016b82e
--- /dev/null
@@ -0,0 +1,23 @@
+From: =?utf-8?q?Cristian_Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Thu, 29 May 2014 14:17:37 -0400
+Subject: tty-ask-password-agent: Do tell what directory we failed to open
+
+(cherry picked from commit 267b3e41df5a2181f2911433539f81de2fa1511a)
+(cherry picked from commit 54fcd1a651e89f4dd901dbecabf212f732006423)
+---
+ src/tty-ask-password-agent/tty-ask-password-agent.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
+index cb74c72..1e9ad9e 100644
+--- a/src/tty-ask-password-agent/tty-ask-password-agent.c
++++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
+@@ -503,7 +503,7 @@ static int show_passwords(void) {
+                 if (errno == ENOENT)
+                         return 0;
+-                log_error("opendir(): %m");
++                log_error("opendir(/run/systemd/ask-password): %m");
+                 return -errno;
+         }
diff --git a/debian/patches/tty-ask-password-agent-return-negative-errno.patch b/debian/patches/tty-ask-password-agent-return-negative-errno.patch
new file mode 100644 (file)
index 0000000..3994f73
--- /dev/null
@@ -0,0 +1,27 @@
+From: Florian Albrechtskirchinger <falbrechtskirchinger@gmail.com>
+Date: Thu, 3 Apr 2014 21:17:20 +0200
+Subject: tty-ask-password-agent: return negative errno
+
+Return negative errno in wall_tty_block(). get_ctty_devnr() already
+returns a negative errno in case of failure, no need to negate it again.
+
+Reported-by: Simon <hwold@odai.homelinux.net>
+(cherry picked from commit ee0e4cca5ac37a094dfe1074907dae70c7b7701c)
+(cherry picked from commit f418ad2852755baf95dadbf472f10d1c64da0993)
+---
+ src/tty-ask-password-agent/tty-ask-password-agent.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
+index f463662..256c21d 100644
+--- a/src/tty-ask-password-agent/tty-ask-password-agent.c
++++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
+@@ -438,7 +438,7 @@ static int wall_tty_block(void) {
+         r = get_ctty_devnr(0, &devnr);
+         if (r < 0)
+-                return -r;
++                return r;
+         if (asprintf(&p, "/run/systemd/ask-password-block/%u:%u", major(devnr), minor(devnr)) < 0)
+                 return -ENOMEM;
diff --git a/debian/patches/udev-add-zram-to-the-list-of-devices-inappropriate-f.patch b/debian/patches/udev-add-zram-to-the-list-of-devices-inappropriate-f.patch
new file mode 100644 (file)
index 0000000..5368efd
--- /dev/null
@@ -0,0 +1,26 @@
+From: =?utf-8?q?=22J=C3=B3hann_B=2E_Gu=C3=B0mundsson=22?= <johannbg@gmail.com>
+Date: Sun, 2 Feb 2014 13:29:19 +0000
+Subject: udev: add zram to the list of devices inappropriate for symlinks
+
+udev seems to have a race condition with swapon to see which can open
+/dev/zram0 first, causing swapon to fail. Seems to be most noticeable
+on arm devices one out of every 7 times or something.
+
+(cherry picked from commit 99bd4af0c7034f425b4d334986b03e632ab71718)
+---
+ rules/60-persistent-storage.rules | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
+index a4d009a..154ffd9 100644
+--- a/rules/60-persistent-storage.rules
++++ b/rules/60-persistent-storage.rules
+@@ -14,7 +14,7 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="block", ATTR{parameters/events_dfl_
+ SUBSYSTEM!="block", GOTO="persistent_storage_end"
+ # skip rules for inappropriate block devices
+-KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*", GOTO="persistent_storage_end"
++KERNEL=="fd*|mtd*|nbd*|gnbd*|btibm*|dm-*|md*|zram*", GOTO="persistent_storage_end"
+ # ignore partitions that span the entire disk
+ TEST=="whole_disk", GOTO="persistent_storage_end"
diff --git a/debian/patches/udev-ata_id-log-faling-ioctls-as-debug.patch b/debian/patches/udev-ata_id-log-faling-ioctls-as-debug.patch
new file mode 100644 (file)
index 0000000..9681a9e
--- /dev/null
@@ -0,0 +1,21 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 30 Oct 2013 14:34:58 +0100
+Subject: udev: ata_id: log faling ioctls as "debug"
+
+---
+ src/udev/ata_id/ata_id.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c
+index 68a06b9..d375d43 100644
+--- a/src/udev/ata_id/ata_id.c
++++ b/src/udev/ata_id/ata_id.c
+@@ -501,7 +501,7 @@ int main(int argc, char *argv[])
+         } else {
+                 /* If this fails, then try HDIO_GET_IDENTITY */
+                 if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) {
+-                        log_info("HDIO_GET_IDENTITY failed for '%s': %m\n", node);
++                        log_debug("HDIO_GET_IDENTITY failed for '%s': %m\n", node);
+                         rc = 2;
+                         goto close;
+                 }
diff --git a/debian/patches/udev-avoid-use-of-uninitialized-err.patch b/debian/patches/udev-avoid-use-of-uninitialized-err.patch
new file mode 100644 (file)
index 0000000..828fae2
--- /dev/null
@@ -0,0 +1,31 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Fri, 16 May 2014 23:46:48 +0200
+Subject: udev: avoid use of uninitialized err
+
+After 1ea972174baba40dbc80c51cbfc4edc49764b59b err is no longer
+set unless we hit a special case. Initialize it to 0 and remove
+a check that will never fail.
+
+(cherry picked from commit bf9bead187802a52a1f376a03caee762d663e945)
+
+Conflicts:
+       src/udev/udevd.c
+
+(cherry picked from commit 6c160b0f7a5581e2c5ae76f57e9e8a6dd0db0ceb)
+---
+ src/udev/udevd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index 5235cbd..bbca5d5 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -272,7 +272,7 @@ static void worker_new(struct event *event)
+                 for (;;) {
+                         struct udev_event *udev_event;
+                         struct worker_message msg;
+-                        int err;
++                        int err = 0;
+                         log_debug("seq %llu running\n", udev_device_get_seqnum(dev));
+                         udev_event = udev_event_new(dev);
diff --git a/debian/patches/udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch b/debian/patches/udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch
new file mode 100644 (file)
index 0000000..17cee19
--- /dev/null
@@ -0,0 +1,29 @@
+From: Martin Pitt <martinpitt@gnome.org>
+Date: Mon, 4 Nov 2013 07:25:45 +0100
+Subject: udev-builtin-keyboard: Fix large scan codes on 32 bit architectures
+
+Use strtoul(), as scan codes are always positive. On 32 bit architectures
+strtol gives wrong results:
+
+  strtol("fffffff0", &endptr, 16)
+
+returns 2147483647 instead of 4294967280.
+
+https://launchpad.net/bugs/1247676
+---
+ src/udev/udev-builtin-keyboard.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
+index ddd8535..8f457ab 100644
+--- a/src/udev/udev-builtin-keyboard.c
++++ b/src/udev/udev-builtin-keyboard.c
+@@ -88,7 +88,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
+                         continue;
+                 /* KEYBOARD_KEY_<hex scan code>=<key identifier string> */
+-                scancode = strtol(key + 13, &endptr, 16);
++                scancode = strtoul(key + 13, &endptr, 16);
+                 if (endptr[0] != '\0') {
+                         log_error("Error, unable to parse scan code from '%s'\n", key);
+                         continue;
diff --git a/debian/patches/udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch b/debian/patches/udev-builtin-keyboard-do-tell-on-which-device-EVIOCS.patch
new file mode 100644 (file)
index 0000000..8ceca38
--- /dev/null
@@ -0,0 +1,32 @@
+From: =?utf-8?q?Cristian_Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Fri, 30 May 2014 13:16:56 -0400
+Subject: udev-builtin-keyboard: do tell on which device EVIOCSKEYCODE failed.
+
+I am getting
+
+"Error calling EVIOCSKEYCODE (scan code 0xc022d, key code 418): Invalid
+argument", the error message does not tell on which specific device the
+problem is, add that info.
+
+(cherry picked from commit a52ec8ed881537627869afa8f0486db7e20ce2db)
+(cherry picked from commit 55cf7f15b43583bbb17bbe7220aedefeeb39e141)
+
+Conflicts:
+       src/udev/udev-builtin-keyboard.c
+---
+ src/udev/udev-builtin-keyboard.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
+index 8f457ab..6357931 100644
+--- a/src/udev/udev-builtin-keyboard.c
++++ b/src/udev/udev-builtin-keyboard.c
+@@ -143,7 +143,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
+                         log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)\n",
+                                   map[i].scan, map[i].scan, map[i].key, map[i].key);
+                         if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0)
+-                                log_error("Error calling EVIOCSKEYCODE: %m\n");
++                                log_error("Error calling EVIOCSKEYCODE on device node '%s' (scan code 0x%x, key code %d): %m", node, map[i].scan, map[i].key);
+                 }
+                 /* install list of force-release codes */
diff --git a/debian/patches/udev-builtin-path_id-add-support-for-bcma-bus.patch b/debian/patches/udev-builtin-path_id-add-support-for-bcma-bus.patch
new file mode 100644 (file)
index 0000000..27a5eb8
--- /dev/null
@@ -0,0 +1,46 @@
+From: Tom Gundersen <teg@jklm.no>
+Date: Sat, 26 Oct 2013 12:22:04 +0200
+Subject: udev-builtin: path_id - add support for bcma bus
+
+This matches the bcma support in the network device naming.
+
+Eventually wa want to make sure ID_PATH is equivalent to ID_NET_NAME_PATH,
+so we never need to match on the latter.
+---
+ src/udev/udev-builtin-path_id.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index 0659967..763f3c3 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -452,6 +452,19 @@ static struct udev_device *handle_usb(struct udev_device *parent, char **path)
+         return parent;
+ }
++static struct udev_device *handle_bcma(struct udev_device *parent, char **path)
++{
++        const char *sysname;
++        unsigned int core;
++
++        sysname = udev_device_get_sysname(parent);
++        if (sscanf(sysname, "bcma%*u:%u", &core) != 1)
++                return NULL;
++
++        path_prepend(path, "bcma-%u", core);
++        return parent;
++}
++
+ static struct udev_device *handle_ccw(struct udev_device *parent, struct udev_device *dev, char **path)
+ {
+         struct udev_device *scsi_dev;
+@@ -509,6 +522,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
+                 } else if (streq(subsys, "usb")) {
+                         parent = handle_usb(parent, &path);
+                         some_transport = true;
++                } else if (streq(subsys, "bcma")) {
++                        parent = handle_bcma(parent, &path);
++                        some_transport = true;
+                 } else if (streq(subsys, "serio")) {
+                         path_prepend(&path, "serio-%s", udev_device_get_sysnum(parent));
+                         parent = skip_subsystem(parent, "serio");
diff --git a/debian/patches/udev-do-not-export-static-node-tags-for-non-existing.patch b/debian/patches/udev-do-not-export-static-node-tags-for-non-existing.patch
new file mode 100644 (file)
index 0000000..bcd3bc3
--- /dev/null
@@ -0,0 +1,42 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 2 Apr 2014 15:47:09 +0200
+Subject: udev: do not export "static node" tags for non-existing devices
+
+(cherry picked from commit ca2bb1606a170ce2e45de1345b0119bd220f4f0d)
+(cherry picked from commit 47d8687d524f67a392d6a8cb189d2ad90c464347)
+---
+ src/udev/udev-rules.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index c981773..392ae86 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -2572,10 +2572,15 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
+                         struct stat stats;
+                         /* we assure, that the permissions tokens are sorted before the static token */
++
+                         if (mode == 0 && uid == 0 && gid == 0 && tags == NULL)
+                                 goto next;
+                         strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL);
++                        if (stat(device_node, &stats) != 0)
++                                break;
++                        if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
++                                break;
+                         /* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */
+                         if (tags) {
+@@ -2605,11 +2610,6 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
+                         if (mode == 0 && uid == 0 && gid == 0)
+                                 break;
+-                        if (stat(device_node, &stats) != 0)
+-                                break;
+-                        if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
+-                                break;
+-
+                         if (mode == 0) {
+                                 if (gid > 0)
+                                         mode = 0660;
diff --git a/debian/patches/udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch b/debian/patches/udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch
new file mode 100644 (file)
index 0000000..6bab9cd
--- /dev/null
@@ -0,0 +1,84 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 14 May 2014 00:34:49 +0200
+Subject: udev: do not skip the execution of RUN when renaming a network
+ device fails
+
+(cherry picked from commit 1ea972174baba40dbc80c51cbfc4edc49764b59b)
+(cherry picked from commit 59c91436bbadecec9f49dba82735ea1347316c70)
+---
+ src/test/test-udev.c    |  3 +--
+ src/udev/udevadm-test.c | 13 +++++--------
+ src/udev/udevd.c        |  7 +++----
+ 3 files changed, 9 insertions(+), 14 deletions(-)
+
+diff --git a/src/test/test-udev.c b/src/test/test-udev.c
+index 676669b..c59aab1 100644
+--- a/src/test/test-udev.c
++++ b/src/test/test-udev.c
+@@ -157,8 +157,7 @@ int main(int argc, char *argv[])
+         }
+         err = udev_event_execute_rules(event, rules, &sigmask_orig);
+-        if (err == 0)
+-                udev_event_execute_run(event, NULL);
++        udev_event_execute_run(event, NULL);
+ out:
+         if (event != NULL && event->fd_signal >= 0)
+                 close(event->fd_signal);
+diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c
+index 3aa3274..4610823 100644
+--- a/src/udev/udevadm-test.c
++++ b/src/udev/udevadm-test.c
+@@ -42,7 +42,6 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
+         struct udev_rules *rules = NULL;
+         struct udev_list_entry *entry;
+         sigset_t mask, sigmask_orig;
+-        int err;
+         int rc = 0;
+         static const struct option options[] = {
+@@ -141,18 +140,16 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
+                 goto out;
+         }
+-        err = udev_event_execute_rules(event, rules, &sigmask_orig);
++        udev_event_execute_rules(event, rules, &sigmask_orig);
+         udev_list_entry_foreach(entry, udev_device_get_properties_list_entry(dev))
+                 printf("%s=%s\n", udev_list_entry_get_name(entry), udev_list_entry_get_value(entry));
+-        if (err == 0) {
+-                udev_list_entry_foreach(entry, udev_list_get_entry(&event->run_list)) {
+-                        char program[UTIL_PATH_SIZE];
++        udev_list_entry_foreach(entry, udev_list_get_entry(&event->run_list)) {
++                char program[UTIL_PATH_SIZE];
+-                        udev_event_apply_format(event, udev_list_entry_get_name(entry), program, sizeof(program));
+-                        printf("run: '%s'\n", program);
+-                }
++                udev_event_apply_format(event, udev_list_entry_get_name(entry), program, sizeof(program));
++                printf("run: '%s'\n", program);
+         }
+ out:
+         if (event != NULL && event->fd_signal >= 0)
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index 7c6c5d6..5235cbd 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -288,13 +288,12 @@ static void worker_new(struct event *event)
+                                 udev_event->exec_delay = exec_delay;
+                         /* apply rules, create node, symlinks */
+-                        err = udev_event_execute_rules(udev_event, rules, &sigmask_orig);
++                        udev_event_execute_rules(udev_event, rules, &sigmask_orig);
+-                        if (err == 0)
+-                                udev_event_execute_run(udev_event, &sigmask_orig);
++                        udev_event_execute_run(udev_event, &sigmask_orig);
+                         /* apply/restore inotify watch */
+-                        if (err == 0 && udev_event->inotify_watch) {
++                        if (udev_event->inotify_watch) {
+                                 udev_watch_begin(udev, dev);
+                                 udev_device_update_db(dev);
+                         }
diff --git a/debian/patches/udev-increase-the-size-of-RESULT-buffer.patch b/debian/patches/udev-increase-the-size-of-RESULT-buffer.patch
new file mode 100644 (file)
index 0000000..ebfbdd7
--- /dev/null
@@ -0,0 +1,27 @@
+From: Robert Milasan <rmilasan@suse.com>
+Date: Thu, 24 Apr 2014 11:23:33 +0200
+Subject: udev: increase the size of RESULT buffer
+
+Under some conditions, in udev_rules_apply_to_event the fact that
+result is 1024 bytes, creates problems if the output of the running
+command/app is bigger then 1024 bytes.
+
+(cherry picked from commit 209b031e4fb7b50fc1812fc7c6ea59ca2f5d0c78)
+(cherry picked from commit aa8c95a158ada263eb0ddc53643bf94517290871)
+---
+ src/udev/udev-rules.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 392ae86..366d870 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -2058,7 +2058,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
+                 case TK_M_PROGRAM: {
+                         char program[UTIL_PATH_SIZE];
+                         char **envp;
+-                        char result[UTIL_PATH_SIZE];
++                        char result[UTIL_LINE_SIZE];
+                         free(event->program_result);
+                         event->program_result = NULL;
diff --git a/debian/patches/udev-keyboard-also-hook-into-change-events.patch b/debian/patches/udev-keyboard-also-hook-into-change-events.patch
new file mode 100644 (file)
index 0000000..b2afada
--- /dev/null
@@ -0,0 +1,26 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Mon, 26 May 2014 09:30:21 +0800
+Subject: udev: keyboard - also hook into "change" events
+
+Re-apply the keymaps when "udevadm trigger" is called. Hooking into
+"add" only would just remove all keymap content from the udev database
+instead of applying the new config.
+
+(cherry picked from commit 49804365ea1242456c9763058a59cf68479e07ea)
+(cherry picked from commit 8d9518eb8f0dbf20e0abfb3b97845ff1f22d8dc3)
+---
+ rules/60-keyboard.rules | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rules/60-keyboard.rules b/rules/60-keyboard.rules
+index 4e0f366..22f71e7 100644
+--- a/rules/60-keyboard.rules
++++ b/rules/60-keyboard.rules
+@@ -1,6 +1,6 @@
+ # do not edit this file, it will be overwritten on update
+-ACTION!="add", GOTO="keyboard_end"
++ACTION=="remove", GOTO="keyboard_end"
+ KERNEL!="event*", GOTO="keyboard_end"
+ ENV{ID_INPUT_KEY}=="", GOTO="keyboard_end"
diff --git a/debian/patches/udev-make-sure-we-always-return-a-valid-error-code-i.patch b/debian/patches/udev-make-sure-we-always-return-a-valid-error-code-i.patch
new file mode 100644 (file)
index 0000000..c752c39
--- /dev/null
@@ -0,0 +1,48 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 19 Feb 2014 17:51:08 +0100
+Subject: udev: make sure we always return a valid error code in trie_store()
+
+(cherry picked from commit d4f1ef4437e59b2cb69a201bb086ab23070ea72d)
+
+Conflicts:
+       src/udev/udevadm-hwdb.c
+---
+ src/udev/udevadm-hwdb.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c
+index fe56758..141db57 100644
+--- a/src/udev/udevadm-hwdb.c
++++ b/src/udev/udevadm-hwdb.c
+@@ -341,7 +341,7 @@ static int trie_store(struct trie *trie, const char *filename) {
+         struct trie_f t = {
+                 .trie = trie,
+         };
+-        char *filename_tmp;
++        _cleanup_free_ char *filename_tmp = NULL;
+         int64_t pos;
+         int64_t root_off;
+         int64_t size;
+@@ -385,8 +385,8 @@ static int trie_store(struct trie *trie, const char *filename) {
+                 err = -errno;
+         fclose(t.f);
+         if (err < 0 || rename(filename_tmp, filename) < 0) {
+-                unlink(filename_tmp);
+-                goto out;
++                unlink_noerrno(filename_tmp);
++                return err < 0 ? err : -errno;
+         }
+         log_debug("=== trie on-disk ===");
+@@ -400,9 +400,8 @@ static int trie_store(struct trie *trie, const char *filename) {
+                   (unsigned long long)t.values_count * sizeof(struct trie_value_entry_f), (unsigned long long)t.values_count);
+         log_debug("string store:     %8llu bytes", (unsigned long long)trie->strings->len);
+         log_debug("strings start:    %8llu", (unsigned long long) t.strings_off);
+-out:
+-        free(filename_tmp);
+-        return err;
++
++        return 0;
+ }
+ static int insert_data(struct trie *trie, struct udev_list *match_list,
diff --git a/debian/patches/udev-net_id-Introduce-predictable-network-names-for-.patch b/debian/patches/udev-net_id-Introduce-predictable-network-names-for-.patch
new file mode 100644 (file)
index 0000000..7eb0277
--- /dev/null
@@ -0,0 +1,143 @@
+From: Hendrik Brueckner <brueckner@redhat.com>
+Date: Thu, 9 Jan 2014 11:28:12 +0100
+Subject: udev/net_id: Introduce predictable network names for Linux on System
+ z
+
+Use the bus-ID to create predicatable devices names for network interfaces
+on Linux on System z instances.  The bus-ID identifies a device in the s390
+channel subsystem.
+
+Network interfaces of device type Ethernet are named as:
+    enccw0.0.1234    (13 characters)
+up to
+    enccwff.7.ffff   (14 characters)
+
+CTC network devices of device type SLIP, use a different prefix as follows:
+    slccw0.0.1234    (13 characters)
+
+See also Red Hat Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=870859
+[tomegun: typical problem of netdevs switching names between reboots.]
+
+(cherry picked from commit e0d4a0ac06afb856c9370c5c256f0f7bb7efdc8e)
+
+Conflicts:
+       src/udev/udev-builtin-net_id.c
+---
+ src/udev/udev-builtin-net_id.c | 64 ++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 62 insertions(+), 2 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 9bc1946..b3cb04b 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -28,6 +28,7 @@
+  *
+  * Two character prefixes based on the type of interface:
+  *   en -- ethernet
++ *   sl -- serial line IP (slip)
+  *   wl -- wlan
+  *   ww -- wwan
+  *
+@@ -101,6 +102,7 @@ enum netname_type{
+         NET_PCI,
+         NET_USB,
+         NET_BCMA,
++        NET_CCWGROUP,
+ };
+ struct netnames {
+@@ -118,6 +120,8 @@ struct netnames {
+         char usb_ports[IFNAMSIZ];
+         char bcma_core[IFNAMSIZ];
++
++        char ccw_core[IFNAMSIZ];
+ };
+ /* retrieve on-board index number and label from firmware */
+@@ -344,6 +348,44 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) {
+         return 0;
+ }
++static int names_ccw(struct  udev_device *dev, struct netnames *names) {
++        struct udev_device *cdev;
++        const char *bus_id;
++        size_t bus_id_len;
++        int rc;
++
++        /* Retrieve the associated CCW device */
++        cdev = udev_device_get_parent(dev);
++        if (!cdev)
++                return -ENOENT;
++
++        /* Network devices are always grouped CCW devices */
++        if (!streq_ptr("ccwgroup", udev_device_get_subsystem(cdev)))
++                return -ENOENT;
++
++        /* Retrieve bus-ID of the grouped CCW device.  The bus-ID uniquely
++         * identifies the network device on the Linux on System z channel
++         * subsystem.  Note that the bus-ID contains lowercase characters.
++         */
++        bus_id = udev_device_get_sysname(cdev);
++        if (!bus_id)
++                return -ENOENT;
++
++        /* Check the length of the bus-ID.  Rely on that the kernel provides
++         * a correct bus-ID; alternatively, improve this check and parse and
++         * verify each bus-ID part...
++         */
++        bus_id_len = strlen(bus_id);
++        if (!bus_id_len || bus_id_len < 8 || bus_id_len > 9)
++                return -EINVAL;
++
++        /* Store the CCW bus-ID for use as network device name */
++        rc = snprintf(names->ccw_core, sizeof(names->ccw_core), "ccw%s", bus_id);
++        if (rc >= 0 && rc < (int)sizeof(names->ccw_core))
++                names->type = NET_CCWGROUP;
++        return 0;
++}
++
+ static int names_mac(struct udev_device *dev, struct netnames *names) {
+         const char *s;
+         unsigned int i;
+@@ -402,13 +444,21 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
+         struct netnames names = {};
+         int err;
+-        /* handle only ARPHRD_ETHER devices */
++        /* handle only ARPHRD_ETHER and ARPHRD_SLIP devices */
+         s = udev_device_get_sysattr_value(dev, "type");
+         if (!s)
+                 return EXIT_FAILURE;
+         i = strtoul(s, NULL, 0);
+-        if (i != 1)
++        switch (i) {
++        case 1: /* ARPHRD_ETHER */
++                prefix = "en";
++                break;
++        case 256: /* ARPHRD_SLIP */
++                prefix = "sl";
++                break;
++        default:
+                 return 0;
++        }
+         /* skip stacked devices, like VLANs, ... */
+         s = udev_device_get_sysattr_value(dev, "ifindex");
+@@ -440,6 +490,16 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
+                 ieee_oui(dev, &names, test);
+         }
++        /* get path names for Linux on System z network devices */
++        err = names_ccw(dev, &names);
++        if (err >= 0 && names.type == NET_CCWGROUP) {
++                char str[IFNAMSIZ];
++
++                if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_core) < (int)sizeof(str))
++                        udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str);
++                goto out;
++        }
++
+         /* get PCI based path names, we compose only PCI based paths */
+         err = names_pci(dev, &names);
+         if (err < 0)
diff --git a/debian/patches/udev-properly-detect-reference-to-unexisting-part-of.patch b/debian/patches/udev-properly-detect-reference-to-unexisting-part-of.patch
new file mode 100644 (file)
index 0000000..ebe84e8
--- /dev/null
@@ -0,0 +1,24 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Mon, 24 Feb 2014 17:06:21 +0100
+Subject: udev: properly detect reference to unexisting part of PROGRAM's
+ result
+
+(cherry picked from commit 66390abefae6530981446970ffd7ff4d1085e254)
+(cherry picked from commit e97bfdb85116454e10255a55a7763415577078e2)
+---
+ src/udev/udev-event.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
+index 3db2cb7..37b545b 100644
+--- a/src/udev/udev-event.c
++++ b/src/udev/udev-event.c
+@@ -254,6 +254,8 @@ subst:
+                                                 cpos++;
+                                         while (isspace(cpos[0]))
+                                                 cpos++;
++                                        if (cpos[0] == '\0')
++                                                break;
+                                 }
+                                 if (i > 0) {
+                                         log_error("requested part of result string not found\n");
diff --git a/debian/patches/udev-rules-setup-tty-permissions-and-group-for-sclp_.patch b/debian/patches/udev-rules-setup-tty-permissions-and-group-for-sclp_.patch
new file mode 100644 (file)
index 0000000..0442f37
--- /dev/null
@@ -0,0 +1,24 @@
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 27 Feb 2014 11:19:09 +0100
+Subject: udev/rules: setup tty permissions and group for sclp_line,
+ ttysclp and 3270/tty
+
+(cherry picked from commit c594cccee264cfd98f183ae6ec289b11e70f2d6c)
+---
+ rules/50-udev-default.rules | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules
+index 679dfdf..0bccf67 100644
+--- a/rules/50-udev-default.rules
++++ b/rules/50-udev-default.rules
+@@ -15,6 +15,9 @@ ACTION!="add", GOTO="default_permissions_end"
+ SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666"
+ SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666"
+ SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620"
++SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
++SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
++SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
+ SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
+ KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
diff --git a/debian/patches/udev-static_node-do-not-exit-rule-after-first-static.patch b/debian/patches/udev-static_node-do-not-exit-rule-after-first-static.patch
new file mode 100644 (file)
index 0000000..8eda1c2
--- /dev/null
@@ -0,0 +1,75 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Wed, 22 Jan 2014 10:47:48 +0100
+Subject: udev: static_node - do not exit rule after first static_node item
+
+The nodes usually do not exist, so handle the next item instead of
+skipping the entire rule.
+
+(cherry picked from commit d6f116a7b18f8bd3c6507c803217991235c7f1bb)
+---
+ src/udev/udev-rules.c | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
+index 6f8b127..c981773 100644
+--- a/src/udev/udev-rules.c
++++ b/src/udev/udev-rules.c
+@@ -900,6 +900,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type,
+         case TK_A_GOTO:
+         case TK_M_TAG:
+         case TK_A_TAG:
++        case TK_A_STATIC_NODE:
+                 token->key.value_off = rules_add_string(rule_tmp->rules, value);
+                 break;
+         case TK_M_IMPORT_BUILTIN:
+@@ -942,9 +943,6 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type,
+         case TK_A_MODE_ID:
+                 token->key.mode = *(mode_t *)data;
+                 break;
+-        case TK_A_STATIC_NODE:
+-                token->key.value_off = rules_add_string(rule_tmp->rules, value);
+-                break;
+         case TK_M_EVENT_TIMEOUT:
+                 token->key.event_timeout = *(int *)data;
+                 break;
+@@ -992,7 +990,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type,
+         }
+         if (attr != NULL) {
+-                /* check if property/attribut name has substitution chars */
++                /* check if property/attribute name has substitution chars */
+                 if (attr[0] == '[')
+                         token->key.attrsubst = SB_SUBSYS;
+                 else if (strchr(attr, '%') != NULL || strchr(attr, '$') != NULL)
+@@ -2576,15 +2574,11 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
+                         /* we assure, that the permissions tokens are sorted before the static token */
+                         if (mode == 0 && uid == 0 && gid == 0 && tags == NULL)
+                                 goto next;
++
+                         strscpyl(device_node, sizeof(device_node), "/dev/", rules_str(rules, cur->key.value_off), NULL);
+-                        if (stat(device_node, &stats) != 0)
+-                                goto next;
+-                        if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
+-                                goto next;
++                        /* export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */
+                         if (tags) {
+-                                /* Export the tags to a directory as symlinks, allowing otherwise dead nodes to be tagged */
+-
+                                 STRV_FOREACH(t, tags) {
+                                         _cleanup_free_ char *unescaped_filename = NULL;
+@@ -2609,7 +2603,12 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
+                         /* don't touch the permissions if only the tags were set */
+                         if (mode == 0 && uid == 0 && gid == 0)
+-                                goto next;
++                                break;
++
++                        if (stat(device_node, &stats) != 0)
++                                break;
++                        if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode))
++                                break;
+                         if (mode == 0) {
+                                 if (gid > 0)
diff --git a/debian/patches/udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch b/debian/patches/udev-usb_id-remove-obsoleted-bInterfaceSubClass-5-ma.patch
new file mode 100644 (file)
index 0000000..27a4b9d
--- /dev/null
@@ -0,0 +1,37 @@
+From: Kay Sievers <kay@vrfy.org>
+Date: Fri, 11 Oct 2013 11:23:34 +0200
+Subject: udev: usb_id - remove obsoleted bInterfaceSubClass == 5 match
+
+bInterfaceSubClass == 5 is not a "floppy"; just identify the obsolete
+QIC-157 interface as "generic".
+---
+ src/udev/udev-builtin-usb_id.c | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c
+index e3bbd05..3e2f43e 100644
+--- a/src/udev/udev-builtin-usb_id.c
++++ b/src/udev/udev-builtin-usb_id.c
+@@ -91,6 +91,9 @@ static int set_usb_mass_storage_ifsubtype(char *to, const char *from, size_t len
+         type_num = strtoul(from, &eptr, 0);
+         if (eptr != from) {
+                 switch (type_num) {
++                case 1: /* RBC devices */
++                        type = "rbc";
++                        break;
+                 case 2:
+                         type = "atapi";
+                         break;
+@@ -98,12 +101,8 @@ static int set_usb_mass_storage_ifsubtype(char *to, const char *from, size_t len
+                         type = "tape";
+                         break;
+                 case 4: /* UFI */
+-                case 5: /* SFF-8070i */
+                         type = "floppy";
+                         break;
+-                case 1: /* RBC devices */
+-                        type = "rbc";
+-                        break;
+                 case 6: /* Transparent SPC-2 devices */
+                         type = "scsi";
+                         break;
diff --git a/debian/patches/udevadm.xml-document-resolve-names-option-for-test.patch b/debian/patches/udevadm.xml-document-resolve-names-option-for-test.patch
new file mode 100644 (file)
index 0000000..71db8c9
--- /dev/null
@@ -0,0 +1,30 @@
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Sun, 13 Oct 2013 17:42:51 -0400
+Subject: udevadm.xml: document --resolve-names option for test
+
+And remove documentation of the --subsystem flag which doesn't actually
+exist.
+---
+ man/udevadm.xml | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index d0b257d..b959216 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -462,9 +462,13 @@
+           </listitem>
+         </varlistentry>
+         <varlistentry>
+-          <term><option>--subsystem=<replaceable>string</replaceable></option></term>
++          <term><option>--resolve-names=<replaceable>early|late|never</replaceable></option></term>
+           <listitem>
+-            <para>The subsystem string.</para>
++            <para>Specify when udevadm should resolve names of users and groups.
++              When set to early (the default) names will be resolved when the
++              rules are parsed. When set to late names will be resolved for
++              every event. When set to never names will never be resolved and
++              all devices will be owned by root.</para>
+           </listitem>
+         </varlistentry>
+         <varlistentry>
diff --git a/debian/patches/unit-name-fix-detection-of-unit-templates-instances.patch b/debian/patches/unit-name-fix-detection-of-unit-templates-instances.patch
new file mode 100644 (file)
index 0000000..24dbea0
--- /dev/null
@@ -0,0 +1,57 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 16 Jun 2014 17:01:26 +0200
+Subject: unit-name: fix detection of unit templates/instances
+
+We need to check for the last dot, not the first one in a unit name, for
+the suffix. Correct that.
+
+(cherry picked from commit 6ef9eeed61a291cc42b7d911f5cf5a4deca742a3)
+(cherry picked from commit 2992a46a54b65b349b8d5b6330fe8fd19234e321)
+---
+ src/shared/unit-name.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
+index bc8094d..577f7e7 100644
+--- a/src/shared/unit-name.c
++++ b/src/shared/unit-name.c
+@@ -334,7 +334,7 @@ char *unit_name_path_unescape(const char *f) {
+ }
+ bool unit_name_is_template(const char *n) {
+-        const char *p;
++        const char *p, *e;
+         assert(n);
+@@ -342,11 +342,15 @@ bool unit_name_is_template(const char *n) {
+         if (!p)
+                 return false;
+-        return p[1] == '.';
++        e = strrchr(p+1, '.');
++        if (!e)
++                return false;
++
++        return e == p + 1;
+ }
+ bool unit_name_is_instance(const char *n) {
+-        const char *p;
++        const char *p, *e;
+         assert(n);
+@@ -354,7 +358,11 @@ bool unit_name_is_instance(const char *n) {
+         if (!p)
+                 return false;
+-        return p[1] != '.';
++        e = strrchr(p+1, '.');
++        if (!e)
++                return false;
++
++        return e > p + 1;
+ }
+ char *unit_name_replace_instance(const char *f, const char *i) {
diff --git a/debian/patches/unit.c-Move-code-around-to-easy-cherrypicking.patch b/debian/patches/unit.c-Move-code-around-to-easy-cherrypicking.patch
new file mode 100644 (file)
index 0000000..704d4a0
--- /dev/null
@@ -0,0 +1,51 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 17 Jun 2014 15:04:08 -0400
+Subject: unit.c: Move code around to easy cherrypicking
+
+---
+ src/core/unit.c | 25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index c05926a..29782aa 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2300,19 +2300,6 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
+         if (r < 0)
+                 return r;
+-
+-        if (serialize_jobs) {
+-                if (u->job) {
+-                        fprintf(f, "job\n");
+-                        job_serialize(u->job, f, fds);
+-                }
+-
+-                if (u->nop_job) {
+-                        fprintf(f, "job\n");
+-                        job_serialize(u->nop_job, f, fds);
+-                }
+-        }
+-
+         dual_timestamp_serialize(f, "inactive-exit-timestamp", &u->inactive_exit_timestamp);
+         dual_timestamp_serialize(f, "active-enter-timestamp", &u->active_enter_timestamp);
+         dual_timestamp_serialize(f, "active-exit-timestamp", &u->active_exit_timestamp);
+@@ -2327,6 +2314,18 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
+         if (u->cgroup_path)
+                 unit_serialize_item(u, f, "cgroup", u->cgroup_path);
++        if (serialize_jobs) {
++                if (u->job) {
++                        fprintf(f, "job\n");
++                        job_serialize(u->job, f, fds);
++                }
++
++                if (u->nop_job) {
++                        fprintf(f, "job\n");
++                        job_serialize(u->nop_job, f, fds);
++                }
++        }
++
+         /* End marker */
+         fputc('\n', f);
+         return 0;
diff --git a/debian/patches/units-Do-not-unescape-instance-name-in-systemd-backl.patch b/debian/patches/units-Do-not-unescape-instance-name-in-systemd-backl.patch
new file mode 100644 (file)
index 0000000..e50ed88
--- /dev/null
@@ -0,0 +1,36 @@
+From: =?utf-8?q?Thomas_B=C3=A4chler?= <thomas@archlinux.org>
+Date: Fri, 7 Mar 2014 01:50:34 +0100
+Subject: units: Do not unescape instance name in systemd-backlight@.service
+
+The instance name is never escaped in the udev rule, but unescaped in the unit.
+This results in the following error message on Asus boards:
+
+  Failed to get backlight or LED device 'backlight:eeepc/wmi': No such file or directory
+
+(cherry picked from commit 6c49212741253dae05b89d22374186f092ef1e5a)
+(cherry picked from commit 50ab7a793277bd976ea68c1d74b999ce483af50b)
+---
+ units/systemd-backlight@.service.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
+index 5caa5d5..e945d87 100644
+--- a/units/systemd-backlight@.service.in
++++ b/units/systemd-backlight@.service.in
+@@ -6,7 +6,7 @@
+ #  (at your option) any later version.
+ [Unit]
+-Description=Load/Save Screen Backlight Brightness of %I
++Description=Load/Save Screen Backlight Brightness of %i
+ Documentation=man:systemd-backlight@.service(8)
+ DefaultDependencies=no
+ RequiresMountsFor=/var/lib/systemd/backlight
+@@ -17,5 +17,5 @@ Before=sysinit.target shutdown.target
+ [Service]
+ Type=oneshot
+ RemainAfterExit=yes
+-ExecStart=@rootlibexecdir@/systemd-backlight load %I
+-ExecStop=@rootlibexecdir@/systemd-backlight save %I
++ExecStart=@rootlibexecdir@/systemd-backlight load %i
++ExecStop=@rootlibexecdir@/systemd-backlight save %i
diff --git a/debian/patches/units-don-t-run-readahead-done-timers-in-containers.patch b/debian/patches/units-don-t-run-readahead-done-timers-in-containers.patch
new file mode 100644 (file)
index 0000000..cf34a98
--- /dev/null
@@ -0,0 +1,37 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 11 Dec 2013 23:31:34 +0100
+Subject: units: don't run readahead done timers in containers
+
+We don't run the collector in the container either, hence we don't need
+to stop it either.
+
+(cherry picked from commit b3de50cb07bb49c4e24287002eca1e95c490f90d)
+---
+ units/systemd-readahead-done.service.in | 1 +
+ units/systemd-readahead-done.timer      | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/units/systemd-readahead-done.service.in b/units/systemd-readahead-done.service.in
+index c3b2ac5..e0d9579 100644
+--- a/units/systemd-readahead-done.service.in
++++ b/units/systemd-readahead-done.service.in
+@@ -12,6 +12,7 @@ DefaultDependencies=no
+ Conflicts=shutdown.target
+ After=default.target
+ Before=shutdown.target
++ConditionVirtualization=no
+ [Service]
+ Type=oneshot
+diff --git a/units/systemd-readahead-done.timer b/units/systemd-readahead-done.timer
+index 41bfb2b..a9f6278 100644
+--- a/units/systemd-readahead-done.timer
++++ b/units/systemd-readahead-done.timer
+@@ -12,6 +12,7 @@ DefaultDependencies=no
+ Conflicts=shutdown.target
+ After=default.target
+ Before=shutdown.target
++ConditionVirtualization=no
+ [Timer]
+ OnActiveSec=30s
diff --git a/debian/patches/units-drop-Install-section-from-multi-user.target-an.patch b/debian/patches/units-drop-Install-section-from-multi-user.target-an.patch
new file mode 100644 (file)
index 0000000..136d830
--- /dev/null
@@ -0,0 +1,39 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 17 Jan 2014 20:27:35 +0100
+Subject: units: drop [Install] section from multi-user.target and
+ graphical.target
+
+They were supposed to make it easy to make the default.target a symlink
+to these targets, but this was never advertised and we have a better
+command for this now in "systemctl set-default". Since the install
+section makes the output of "systemctl list-unit-files" confusing (since
+it makes the units appear as "disabled"), let's drop the sections.
+
+(cherry picked from commit 02ebe178a2bd6b2448d4fbfa4a1f7fa98e9e82b1)
+---
+ units/graphical.target  | 3 ---
+ units/multi-user.target | 3 ---
+ 2 files changed, 6 deletions(-)
+
+diff --git a/units/graphical.target b/units/graphical.target
+index 65f2521..a2c4532 100644
+--- a/units/graphical.target
++++ b/units/graphical.target
+@@ -13,6 +13,3 @@ After=multi-user.target
+ Conflicts=rescue.target
+ Wants=display-manager.service
+ AllowIsolate=yes
+-
+-[Install]
+-Alias=default.target
+diff --git a/units/multi-user.target b/units/multi-user.target
+index 998e046..0f0e5e9 100644
+--- a/units/multi-user.target
++++ b/units/multi-user.target
+@@ -12,6 +12,3 @@ Requires=basic.target
+ Conflicts=rescue.service rescue.target
+ After=basic.target rescue.service rescue.target
+ AllowIsolate=yes
+-
+-[Install]
+-Alias=default.target
diff --git a/debian/patches/units-order-network-online.target-after-network.targ.patch b/debian/patches/units-order-network-online.target-after-network.targ.patch
new file mode 100644 (file)
index 0000000..e7daa17
--- /dev/null
@@ -0,0 +1,28 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 11 Jun 2014 14:58:32 +0200
+Subject: units: order network-online.target after network.target
+
+There might be implementations around where the network-online logic
+might not talk to any network configuration service (and thus not have
+to wait for it), hence let's explicitly order network-online.target
+after network.target to avoid any ambiguities.
+
+(cherry picked from commit 58e027023b47b32e42cf93dd4a629b869ee1ef25)
+
+Conflicts:
+       units/systemd-networkd-wait-online.service.in
+
+(cherry picked from commit 406be70b2f9adaa7dc4168dd51ac8e3cfe41bcb3)
+---
+ units/network-online.target | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/units/network-online.target b/units/network-online.target
+index a40c44c..67bc4fa 100644
+--- a/units/network-online.target
++++ b/units/network-online.target
+@@ -9,3 +9,4 @@
+ Description=Network is Online
+ Documentation=man:systemd.special(7)
+ Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
++After=network.target
diff --git a/debian/patches/units-serial-getty-.service-add-Install-section.patch b/debian/patches/units-serial-getty-.service-add-Install-section.patch
new file mode 100644 (file)
index 0000000..4d4cf4b
--- /dev/null
@@ -0,0 +1,24 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 24 Feb 2014 08:02:28 -0500
+Subject: units/serial-getty@.service: add [Install] section
+
+This makes it easier to manually enable and disable
+specific gettys, and also mirrors getty@.service.
+
+http://lists.freedesktop.org/archives/systemd-devel/2014-February/017329.html
+(cherry picked from commit 7143555ce8f94b002d06b9b058d7d90c3a4901a9)
+---
+ units/serial-getty@.service.m4 | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4
+index e32c6b7..aea078f 100644
+--- a/units/serial-getty@.service.m4
++++ b/units/serial-getty@.service.m4
+@@ -33,3 +33,6 @@ TTYVHangup=yes
+ KillMode=process
+ IgnoreSIGPIPE=no
+ SendSIGHUP=yes
++
++[Install]
++WantedBy=getty.target
diff --git a/debian/patches/units-systemd-logind-fails-hard-without-dbus.patch b/debian/patches/units-systemd-logind-fails-hard-without-dbus.patch
new file mode 100644 (file)
index 0000000..ba44468
--- /dev/null
@@ -0,0 +1,31 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 14 Feb 2014 17:01:43 -0500
+Subject: units: systemd-logind fails hard without dbus
+
+That is, without --enable-kdbus and kdbus running.
+
+With --enable-kdbus things are more complicated, because dbus might be
+necessary, if kdbus is missing at runtime. If it is not necessary,
+the socket will be started, which is not imporant, but not the service.
+
+(cherry picked from commit 8f9c6fe5ff1d59001aecbf3fbf9ca0ed7ff28ba7)
+---
+ units/systemd-logind.service.in | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/units/systemd-logind.service.in b/units/systemd-logind.service.in
+index 31b5cd0..e0b1b59 100644
+--- a/units/systemd-logind.service.in
++++ b/units/systemd-logind.service.in
+@@ -13,6 +13,11 @@ Documentation=http://www.freedesktop.org/wiki/Software/systemd/multiseat
+ Wants=user.slice
+ After=nss-user-lookup.target user.slice
++# Ask for the dbus socket. If running over kdbus, the socket will
++# not be actually used.
++Wants=dbus.socket
++After=dbus.socket
++
+ [Service]
+ ExecStart=@rootlibexecdir@/systemd-logind
+ Restart=always
diff --git a/debian/patches/utf8-fix-utf8_is_printable.patch b/debian/patches/utf8-fix-utf8_is_printable.patch
new file mode 100644 (file)
index 0000000..1d96a72
--- /dev/null
@@ -0,0 +1,43 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 5 Oct 2013 22:47:52 -0400
+Subject: utf8: fix utf8_is_printable
+
+---
+ src/shared/utf8.c    | 5 +++--
+ src/test/test-utf8.c | 1 +
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/utf8.c b/src/shared/utf8.c
+index a8e28ac..31120af 100644
+--- a/src/shared/utf8.c
++++ b/src/shared/utf8.c
+@@ -141,14 +141,15 @@ bool utf8_is_printable(const char* str, size_t length) {
+         assert(str);
+-        for (p = (const uint8_t*) str; length; p++) {
++        for (p = (const uint8_t*) str; length;) {
+                 int encoded_len = utf8_encoded_valid_unichar((const char *)p);
+-                int32_t val = utf8_encoded_to_unichar((const char*)p);
++                int val = utf8_encoded_to_unichar((const char*)p);
+                 if (encoded_len < 0 || val < 0 || is_unicode_control(val))
+                         return false;
+                 length -= encoded_len;
++                p += encoded_len;
+         }
+         return true;
+diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c
+index 7bd0db1..f0182ee 100644
+--- a/src/test/test-utf8.c
++++ b/src/test/test-utf8.c
+@@ -26,6 +26,7 @@ static void test_utf8_is_printable(void) {
+         assert_se(utf8_is_printable("ascii is valid\tunicode", 22));
+         assert_se(utf8_is_printable("\342\204\242", 3));
+         assert_se(!utf8_is_printable("\341\204", 2));
++        assert_se(utf8_is_printable("ąę", 4));
+ }
+ static void test_utf8_is_valid(void) {
diff --git a/debian/patches/util-add-files_same-helper-function.patch b/debian/patches/util-add-files_same-helper-function.patch
new file mode 100644 (file)
index 0000000..64300b8
--- /dev/null
@@ -0,0 +1,69 @@
+From: Harald Hoyer <harald@redhat.com>
+Date: Thu, 6 Mar 2014 09:12:57 +0100
+Subject: util: add files_same() helper function
+
+files_same() returns
+     1, if the files are the same
+     0, if the files have different inode/dev numbers
+ errno, for any stat error
+
+(cherry picked from commit 9d9951a460a90ef0e1e0384742cefdcf85193f8c)
+(cherry picked from commit ac0c2a0e3cd29f5f6d80bdb9ae4ffbd94e15707e)
+---
+ src/shared/util.c | 24 ++++++++++++++++--------
+ src/shared/util.h |  2 ++
+ 2 files changed, 18 insertions(+), 8 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 6e97a6d..1f83eb7 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -3333,19 +3333,27 @@ bool on_tty(void) {
+         return cached_on_tty;
+ }
+-int running_in_chroot(void) {
+-        struct stat a = {}, b = {};
++int files_same(const char *filea, const char *fileb) {
++        struct stat a, b;
+-        /* Only works as root */
+-        if (stat("/proc/1/root", &a) < 0)
++        if (stat(filea, &a) < 0)
+                 return -errno;
+-        if (stat("/", &b) < 0)
++        if (stat(fileb, &b) < 0)
+                 return -errno;
+-        return
+-                a.st_dev != b.st_dev ||
+-                a.st_ino != b.st_ino;
++        return a.st_dev == b.st_dev &&
++               a.st_ino == b.st_ino;
++}
++
++int running_in_chroot(void) {
++        int ret;
++
++        ret = files_same("/proc/1/root", "/");
++        if (ret < 0)
++                return ret;
++
++        return ret == 0;
+ }
+ char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigned percent) {
+diff --git a/src/shared/util.h b/src/shared/util.h
+index e83d2ab..20d81e5 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -405,6 +405,8 @@ static inline const char *ansi_highlight_off(void) {
+         return on_tty() ? ANSI_HIGHLIGHT_OFF : "";
+ }
++int files_same(const char *filea, const char *fileb);
++
+ int running_in_chroot(void);
+ char *ellipsize(const char *s, size_t length, unsigned percent);
diff --git a/debian/patches/util-add-timeout-to-generator-execution.patch b/debian/patches/util-add-timeout-to-generator-execution.patch
new file mode 100644 (file)
index 0000000..16e1676
--- /dev/null
@@ -0,0 +1,341 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 6 Mar 2014 02:19:06 +0100
+Subject: util: add timeout to generator execution
+
+(cherry picked from commit aa62a8936f5983770e90b791083d55107659f7a1)
+(cherry picked from commit d66226bce64620543d21675ae610ecfeb9395e2a
+                and commit 5e2f14e62b43f713bade20dd9f55db525ac43859)
+
+Conflicts:
+       src/core/manager.c
+---
+ src/core/manager.c   |   5 +-
+ src/core/shutdown.c  |   2 +-
+ src/shared/hashmap.h |   8 +++
+ src/shared/util.c    | 162 +++++++++++++++++++++++++++------------------------
+ src/shared/util.h    |   2 +-
+ src/sleep/sleep.c    |  14 +++--
+ 6 files changed, 108 insertions(+), 85 deletions(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 58c17ab..3a38fab 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -2661,9 +2661,8 @@ void manager_run_generators(Manager *m) {
+         argv[3] = m->generator_unit_path_late;
+         argv[4] = NULL;
+-        RUN_WITH_UMASK(0022) {
+-                execute_directory(generator_path, d, (char**) argv);
+-        }
++        RUN_WITH_UMASK(0022)
++                execute_directory(generator_path, d, DEFAULT_TIMEOUT_USEC, (char**) argv);
+         trim_generator_dir(m, &m->generator_unit_path);
+         trim_generator_dir(m, &m->generator_unit_path_early);
+diff --git a/src/core/shutdown.c b/src/core/shutdown.c
+index 5e0f3ce..68960b1 100644
+--- a/src/core/shutdown.c
++++ b/src/core/shutdown.c
+@@ -294,7 +294,7 @@ int main(int argc, char *argv[]) {
+         arguments[0] = NULL;
+         arguments[1] = argv[1];
+         arguments[2] = NULL;
+-        execute_directory(SYSTEM_SHUTDOWN_PATH, NULL, arguments);
++        execute_directory(SYSTEM_SHUTDOWN_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments);
+         if (!in_container && !in_initrd() &&
+             access("/run/initramfs/shutdown", X_OK) == 0) {
+diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h
+index 3d4f672..b912af8 100644
+--- a/src/shared/hashmap.h
++++ b/src/shared/hashmap.h
+@@ -24,6 +24,7 @@
+ #include <stdbool.h>
+ #include "macro.h"
++#include "util.h"
+ /* Pretty straightforward hash table implementation. As a minor
+  * optimization a NULL hashmap object will be treated as empty hashmap
+@@ -104,3 +105,10 @@ char **hashmap_get_strv(Hashmap *h);
+ #define HASHMAP_FOREACH_BACKWARDS(e, h, i) \
+         for ((i) = ITERATOR_LAST, (e) = hashmap_iterate_backwards((h), &(i), NULL); (e); (e) = hashmap_iterate_backwards((h), &(i), NULL))
++
++DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free);
++DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free);
++DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free_free);
++#define _cleanup_hashmap_free_ _cleanup_(hashmap_freep)
++#define _cleanup_hashmap_free_free_ _cleanup_(hashmap_free_freep)
++#define _cleanup_hashmap_free_free_free_ _cleanup_(hashmap_free_free_freep)
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 1329854..bec339b 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -3740,111 +3740,123 @@ bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) {
+         return endswith(de->d_name, suffix);
+ }
+-void execute_directory(const char *directory, DIR *d, char *argv[]) {
+-        DIR *_d = NULL;
+-        struct dirent *de;
+-        Hashmap *pids = NULL;
++void execute_directory(const char *directory, DIR *d, usec_t timeout, char *argv[]) {
++        pid_t executor_pid;
++        int r;
+         assert(directory);
+-        /* Executes all binaries in a directory in parallel and
+-         * waits for them to finish. */
++        /* Executes all binaries in a directory in parallel and waits
++         * for them to finish. Optionally a timeout is applied. */
+-        if (!d) {
+-                if (!(_d = opendir(directory))) {
++        executor_pid = fork();
++        if (executor_pid < 0) {
++                log_error("Failed to fork: %m");
++                return;
+-                        if (errno == ENOENT)
+-                                return;
++        } else if (executor_pid == 0) {
++                _cleanup_hashmap_free_free_ Hashmap *pids = NULL;
++                _cleanup_closedir_ DIR *_d = NULL;
++                struct dirent *de;
++                sigset_t ss;
+-                        log_error("Failed to enumerate directory %s: %m", directory);
+-                        return;
+-                }
++                /* We fork this all off from a child process so that
++                 * we can somewhat cleanly make use of SIGALRM to set
++                 * a time limit */
+-                d = _d;
+-        }
++                reset_all_signal_handlers();
+-        if (!(pids = hashmap_new(trivial_hash_func, trivial_compare_func))) {
+-                log_error("Failed to allocate set.");
+-                goto finish;
+-        }
++                assert_se(sigemptyset(&ss) == 0);
++                assert_se(sigprocmask(SIG_SETMASK, &ss, NULL) == 0);
+-        while ((de = readdir(d))) {
+-                char *path;
+-                pid_t pid;
+-                int k;
++                assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0);
+-                if (!dirent_is_file(de))
+-                        continue;
++                if (!d) {
++                        d = _d = opendir(directory);
++                        if (!d) {
++                                if (errno == ENOENT)
++                                        _exit(EXIT_SUCCESS);
+-                if (asprintf(&path, "%s/%s", directory, de->d_name) < 0) {
+-                        log_oom();
+-                        continue;
++                                log_error("Failed to enumerate directory %s: %m", directory);
++                                _exit(EXIT_FAILURE);
++                        }
+                 }
+-                if ((pid = fork()) < 0) {
+-                        log_error("Failed to fork: %m");
+-                        free(path);
+-                        continue;
++                pids = hashmap_new(NULL, NULL);
++                if (!pids) {
++                        log_oom();
++                        _exit(EXIT_FAILURE);
+                 }
+-                if (pid == 0) {
+-                        char *_argv[2];
+-                        /* Child */
++                FOREACH_DIRENT(de, d, break) {
++                        _cleanup_free_ char *path = NULL;
++                        pid_t pid;
+-                        if (!argv) {
+-                                _argv[0] = path;
+-                                _argv[1] = NULL;
+-                                argv = _argv;
+-                        } else
+-                                argv[0] = path;
++                        if (!dirent_is_file(de))
++                                continue;
+-                        execv(path, argv);
++                        if (asprintf(&path, "%s/%s", directory, de->d_name) < 0) {
++                                log_oom();
++                                _exit(EXIT_FAILURE);
++                        }
+-                        log_error("Failed to execute %s: %m", path);
+-                        _exit(EXIT_FAILURE);
+-                }
++                        pid = fork();
++                        if (pid < 0) {
++                                log_error("Failed to fork: %m");
++                                continue;
++                        } else if (pid == 0) {
++                                char *_argv[2];
+-                log_debug("Spawned %s as %lu", path, (unsigned long) pid);
++                                assert_se(prctl(PR_SET_PDEATHSIG, SIGTERM) == 0);
+-                if ((k = hashmap_put(pids, UINT_TO_PTR(pid), path)) < 0) {
+-                        log_error("Failed to add PID to set: %s", strerror(-k));
+-                        free(path);
+-                }
+-        }
++                                if (!argv) {
++                                        _argv[0] = path;
++                                        _argv[1] = NULL;
++                                        argv = _argv;
++                                } else
++                                        argv[0] = path;
+-        while (!hashmap_isempty(pids)) {
+-                pid_t pid = PTR_TO_UINT(hashmap_first_key(pids));
+-                siginfo_t si = {};
+-                char *path;
++                                execv(path, argv);
++                                log_error("Failed to execute %s: %m", path);
++                                _exit(EXIT_FAILURE);
++                        }
+-                if (waitid(P_PID, pid, &si, WEXITED) < 0) {
+-                        if (errno == EINTR)
+-                                continue;
++                        log_debug("Spawned %s as %lu.", path, (long unsigned) pid);
+-                        log_error("waitid() failed: %m");
+-                        goto finish;
++                        r = hashmap_put(pids, UINT_TO_PTR(pid), path);
++                        if (r < 0) {
++                                log_oom();
++                                _exit(EXIT_FAILURE);
++                        }
++
++                        path = NULL;
+                 }
+-                if ((path = hashmap_remove(pids, UINT_TO_PTR(si.si_pid)))) {
+-                        if (!is_clean_exit(si.si_code, si.si_status, NULL)) {
+-                                if (si.si_code == CLD_EXITED)
+-                                        log_error("%s exited with exit status %i.", path, si.si_status);
+-                                else
+-                                        log_error("%s terminated by signal %s.", path, signal_to_string(si.si_status));
+-                        } else
+-                                log_debug("%s exited successfully.", path);
++                /* Abort execution of this process after the
++                 * timout. We simply rely on SIGALRM as default action
++                 * terminating the process, and turn on alarm(). */
++
++                if (timeout != (usec_t) -1)
++                        alarm((timeout + USEC_PER_SEC - 1) / USEC_PER_SEC);
++
++                while (!hashmap_isempty(pids)) {
++                        _cleanup_free_ char *path = NULL;
++                        pid_t pid;
++
++                        pid = PTR_TO_UINT(hashmap_first_key(pids));
++                        assert(pid > 0);
+-                        free(path);
++                        path = hashmap_remove(pids, UINT_TO_PTR(pid));
++                        assert(path);
++
++                        wait_for_terminate_and_warn(path, pid);
+                 }
+-        }
+-finish:
+-        if (_d)
+-                closedir(_d);
++                _exit(EXIT_SUCCESS);
++        }
+-        if (pids)
+-                hashmap_free_free(pids);
++        wait_for_terminate_and_warn(directory, executor_pid);
+ }
+ int kill_and_sigcont(pid_t pid, int sig) {
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 02621a7..47a3dc9 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -432,7 +432,7 @@ bool tty_is_console(const char *tty) _pure_;
+ int vtnr_from_tty(const char *tty);
+ const char *default_term_for_tty(const char *tty);
+-void execute_directory(const char *directory, DIR *_d, char *argv[]);
++void execute_directory(const char *directory, DIR *_d, usec_t timeout, char *argv[]);
+ int kill_and_sigcont(pid_t pid, int sig);
+diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
+index c228cb6..8e847db 100644
+--- a/src/sleep/sleep.c
++++ b/src/sleep/sleep.c
+@@ -25,14 +25,15 @@
+ #include <string.h>
+ #include <getopt.h>
+-#include "systemd/sd-id128.h"
+-#include "systemd/sd-messages.h"
++#include "sd-id128.h"
++#include "sd-messages.h"
+ #include "log.h"
+ #include "util.h"
+ #include "strv.h"
+ #include "fileio.h"
+ #include "build.h"
+ #include "sleep-config.h"
++#include "def.h"
+ static char* arg_verb = NULL;
+@@ -41,9 +42,12 @@ static int write_mode(char **modes) {
+         char **mode;
+         STRV_FOREACH(mode, modes) {
+-                int k = write_string_file("/sys/power/disk", *mode);
++                int k;
++
++                k = write_string_file("/sys/power/disk", *mode);
+                 if (k == 0)
+                         return 0;
++
+                 log_debug("Failed to write '%s' to /sys/power/disk: %s",
+                           *mode, strerror(-k));
+                 if (r == 0)
+@@ -106,7 +110,7 @@ static int execute(char **modes, char **states) {
+         arguments[1] = (char*) "pre";
+         arguments[2] = arg_verb;
+         arguments[3] = NULL;
+-        execute_directory(SYSTEM_SLEEP_PATH, NULL, arguments);
++        execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments);
+         log_struct(LOG_INFO,
+                    MESSAGE_ID(SD_MESSAGE_SLEEP_START),
+@@ -125,7 +129,7 @@ static int execute(char **modes, char **states) {
+                    NULL);
+         arguments[1] = (char*) "post";
+-        execute_directory(SYSTEM_SLEEP_PATH, NULL, arguments);
++        execute_directory(SYSTEM_SLEEP_PATH, NULL, DEFAULT_TIMEOUT_USEC, arguments);
+         return r;
+ }
diff --git a/debian/patches/util-allow-trailing-semicolons-on-define_trivial_cle.patch b/debian/patches/util-allow-trailing-semicolons-on-define_trivial_cle.patch
new file mode 100644 (file)
index 0000000..04ff705
--- /dev/null
@@ -0,0 +1,491 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 14 Oct 2013 04:59:26 +0200
+Subject: util: allow trailing semicolons on define_trivial_cleanup_func lines
+
+Emacs C indenting really gets confused by these lines if they carry no
+trailing semicolon, hence let's make this nicer for good old emacs. The
+other macros which define functions already do this too, so let's copy
+the scheme here.
+
+Also, let's use an uppercase name for the macro. So far our rough rule
+was that macros that are totally not function-like (like this ones,
+which define a function) are uppercase. (Well, admittedly it is a rough
+rule only, for example function and variable decorators are all
+lower-case SINCE THE CONSTANT YELLING IN THE SOURCES WOULD SUCK, and
+also they at least got underscore prefixes.) Also, the macros that
+define functions that we already have are all uppercase, so let's do the
+same here...
+
+Conflicts:
+       src/gpt-auto-generator/gpt-auto-generator.c
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 157 ++++++++++------------------
+ src/journal/journal-internal.h              |   2 +-
+ src/shared/fdset.h                          |   2 +-
+ src/shared/set.h                            |   4 +-
+ src/shared/strv.h                           |   2 +-
+ src/shared/udev-util.h                      |  10 +-
+ src/shared/util.h                           |  19 ++--
+ src/tmpfiles/tmpfiles.c                     |   2 +-
+ 8 files changed, 78 insertions(+), 120 deletions(-)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index d2b4213..25440e7 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -36,6 +36,7 @@
+ #include "missing.h"
+ #include "sd-id128.h"
+ #include "libudev.h"
++#include "udev-util.h"
+ #include "special.h"
+ #include "unit-name.h"
+ #include "virt.h"
+@@ -48,12 +49,12 @@
+  *
+  */
++#define GPT_SWAP SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)
++#define GPT_HOME SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15)
++
+ static const char *arg_dest = "/tmp";
+-static inline void blkid_free_probep(blkid_probe *b) {
+-        if (*b)
+-                blkid_free_probe(*b);
+-}
++DEFINE_TRIVIAL_CLEANUP_FUNC(blkid_probe, blkid_free_probe);
+ #define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep)
+ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) {
+@@ -113,13 +114,13 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr
+         if (fstype) {
+-                char *fst;
+-
+                 errno = 0;
+                 r = blkid_probe_lookup_value(b, "TYPE", &v, NULL);
+                 if (r != 0)
+                         *fstype = NULL;
+                 else {
++                        char *fst;
++
+                         fst = strdup(v);
+                         if (!fst)
+                                 return -ENOMEM;
+@@ -181,7 +182,7 @@ static int add_swap(const char *path, const char *fstype) {
+ }
+ static int add_home(const char *path, const char *fstype) {
+-        _cleanup_free_ char *unit = NULL, *lnk = NULL;
++        _cleanup_free_ char *unit = NULL, *lnk = NULL, *fsck = NULL;
+         _cleanup_fclose_ FILE *f = NULL;
+         if (dir_is_empty("/home") <= 0)
+@@ -199,19 +200,23 @@ static int add_home(const char *path, const char *fstype) {
+                 return -errno;
+         }
++        fsck = unit_name_from_path_instance("systemd-fsck", path, ".service");
++        if (!fsck)
++                return log_oom();
++
+         fprintf(f,
+                 "# Automatically generated by systemd-gpt-auto-generator\n\n"
+                 "[Unit]\n"
+                 "DefaultDependencies=no\n"
+-                "After=" SPECIAL_LOCAL_FS_PRE_TARGET "\n"
++                "Requires=%s\n"
++                "After=" SPECIAL_LOCAL_FS_PRE_TARGET " %s\n"
+                 "Conflicts=" SPECIAL_UMOUNT_TARGET "\n"
+                 "Before=" SPECIAL_UMOUNT_TARGET " " SPECIAL_LOCAL_FS_TARGET "\n\n"
+                 "[Mount]\n"
+                 "What=%s\n"
+                 "Where=/home\n"
+-                "Type=%s\n"
+-                "FsckPassNo=2\n",
+-                path, fstype);
++                "Type=%s\n",
++                fsck, fsck, path, fstype);
+         fflush(f);
+         if (ferror(f)) {
+@@ -234,97 +239,80 @@ static int add_home(const char *path, const char *fstype) {
+ }
+ static int enumerate_partitions(struct udev *udev, dev_t dev) {
+-        struct udev_enumerate *e = NULL;
+-        struct udev_device *parent = NULL, *d = NULL;
++        struct udev_device *parent = NULL;
++        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *d = NULL;
+         struct udev_list_entry *first, *item;
+         unsigned home_nr = (unsigned) -1;
+         _cleanup_free_ char *home = NULL, *home_fstype = NULL;
+         int r;
+         e = udev_enumerate_new(udev);
+-        if (!e) {
+-                r = log_oom();
+-                goto finish;
+-        }
++        if (!e)
++                return log_oom();
+         d = udev_device_new_from_devnum(udev, 'b', dev);
+-        if (!d) {
+-                r = log_oom();
+-                goto finish;
+-        }
++        if (!d)
++                return log_oom();
+         parent = udev_device_get_parent(d);
+-        if (!parent) {
+-                r = log_oom();
+-                goto finish;
+-        }
++        if (!parent)
++                return log_oom();
+         r = udev_enumerate_add_match_parent(e, parent);
+-        if (r < 0) {
+-                r = log_oom();
+-                goto finish;
+-        }
++        if (r < 0)
++                return log_oom();
+         r = udev_enumerate_add_match_subsystem(e, "block");
+-        if (r < 0) {
+-                r = log_oom();
+-                goto finish;
+-        }
++        if (r < 0)
++                return log_oom();
+         r = udev_enumerate_scan_devices(e);
+         if (r < 0) {
+                 log_error("Failed to enumerate partitions on /dev/block/%u:%u: %s",
+                           major(dev), minor(dev), strerror(-r));
+-                goto finish;
++                return r;
+         }
+         first = udev_enumerate_get_list_entry(e);
+         udev_list_entry_foreach(item, first) {
+                 _cleanup_free_ char *fstype = NULL;
+                 const char *node = NULL;
+-                struct udev_device *q;
++                _cleanup_udev_device_unref_ struct udev_device *q;
+                 sd_id128_t type_id;
+                 unsigned nr;
+                 q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
+-                if (!q) {
+-                        r = log_oom();
+-                        goto finish;
+-                }
++                if (!q)
++                        return log_oom();
+                 if (udev_device_get_devnum(q) == udev_device_get_devnum(d))
+-                        goto skip;
++                        continue;
+                 if (udev_device_get_devnum(q) == udev_device_get_devnum(parent))
+-                        goto skip;
++                        continue;
+                 node = udev_device_get_devnode(q);
+-                if (!node) {
+-                        r = log_oom();
+-                        goto finish;
+-                }
++                if (!node)
++                        return log_oom();
+                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
+                 if (r < 0) {
+                         log_error("Failed to verify GPT partition %s: %s",
+                                   node, strerror(-r));
+-                        udev_device_unref(q);
+-                        goto finish;
++                        return r;
+                 }
+                 if (r == 0)
+-                        goto skip;
++                        continue;
+-                if (sd_id128_equal(type_id, SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)))
++                if (sd_id128_equal(type_id, GPT_SWAP))
+                         add_swap(node, fstype);
+-                else if (sd_id128_equal(type_id, SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15))) {
+-
++                else if (sd_id128_equal(type_id, GPT_HOME)) {
+                         if (!home || nr < home_nr) {
+                                 free(home);
+                                 home = strdup(node);
+-                                if (!home) {
+-                                        r = log_oom();
+-                                        goto finish;
+-                                }
++                                if (!home)
++                                        return log_oom();
+                                 home_nr = nr;
+@@ -333,27 +321,16 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
+                                 fstype = NULL;
+                         }
+                 }
+-
+-        skip:
+-                udev_device_unref(q);
+         }
+         if (home && home_fstype)
+                 add_home(home, home_fstype);
+-finish:
+-        if (d)
+-                udev_device_unref(d);
+-
+-        if (e)
+-                udev_enumerate_unref(e);
+-
+-
+         return r;
+ }
+ static int get_btrfs_block_device(const char *path, dev_t *dev) {
+-        struct btrfs_ioctl_fs_info_args fsi;
++        struct btrfs_ioctl_fs_info_args fsi = {};
+         _cleanup_close_ int fd = -1;
+         uint64_t id;
+@@ -364,7 +341,6 @@ static int get_btrfs_block_device(const char *path, dev_t *dev) {
+         if (fd < 0)
+                 return -errno;
+-        zero(fsi);
+         if (ioctl(fd, BTRFS_IOC_FS_INFO, &fsi) < 0)
+                 return -errno;
+@@ -373,12 +349,11 @@ static int get_btrfs_block_device(const char *path, dev_t *dev) {
+                 return 0;
+         for (id = 1; id <= fsi.max_id; id++) {
+-                struct btrfs_ioctl_dev_info_args di;
++                struct btrfs_ioctl_dev_info_args di = {
++                        .devid = id,
++                };
+                 struct stat st;
+-                zero(di);
+-                di.devid = id;
+-
+                 if (ioctl(fd, BTRFS_IOC_DEV_INFO, &di) < 0) {
+                         if (errno == ENODEV)
+                                 continue;
+@@ -427,44 +402,31 @@ static int get_block_device(const char *path, dev_t *dev) {
+ }
+ static int devno_to_devnode(struct udev *udev, dev_t devno, char **ret) {
+-        struct udev_device *d = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *d;
+         const char *t;
+         char *n;
+-        int r;
+         d = udev_device_new_from_devnum(udev, 'b', devno);
+-        if (!d) {
+-                r = log_oom();
+-                goto finish;
+-        }
++        if (!d)
++                return log_oom();
+         t = udev_device_get_devnode(d);
+-        if (!t) {
+-                r = -ENODEV;
+-                goto finish;
+-        }
++        if (!t)
++                return -ENODEV;
+         n = strdup(t);
+-        if (!n) {
+-                r = -ENOMEM;
+-                goto finish;
+-        }
++        if (!n)
++                return -ENOMEM;
+         *ret = n;
+-        r = 0;
+-
+-finish:
+-        if (d)
+-                udev_device_unref(d);
+-
+-        return r;
++        return 0;
+ }
+ int main(int argc, char *argv[]) {
+         _cleanup_free_ char *node = NULL;
+-        struct udev *udev = NULL;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
+         dev_t devno;
+-        int r;
++        int r = 0;
+         if (argc > 1 && argc != 4) {
+                 log_error("This program takes three or no arguments.");
+@@ -483,13 +445,11 @@ int main(int argc, char *argv[]) {
+         if (in_initrd()) {
+                 log_debug("In initrd, exiting.");
+-                r = 0;
+                 goto finish;
+         }
+         if (detect_container(NULL) > 0) {
+                 log_debug("In a container, exiting.");
+-                r = 0;
+                 goto finish;
+         }
+@@ -528,8 +488,5 @@ int main(int argc, char *argv[]) {
+         r = enumerate_partitions(udev, devno);
+ finish:
+-        if (udev)
+-                udev_unref(udev);
+-
+         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ }
+diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
+index 1bc912c..3355fca 100644
+--- a/src/journal/journal-internal.h
++++ b/src/journal/journal-internal.h
+@@ -135,7 +135,7 @@ struct sd_journal {
+ char *journal_make_match_string(sd_journal *j);
+ void journal_print_header(sd_journal *j);
+-define_trivial_cleanup_func(sd_journal*, sd_journal_close)
++DEFINE_TRIVIAL_CLEANUP_FUNC(sd_journal*, sd_journal_close);
+ #define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
+ #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval)                     \
+diff --git a/src/shared/fdset.h b/src/shared/fdset.h
+index d0dc875..b91b430 100644
+--- a/src/shared/fdset.h
++++ b/src/shared/fdset.h
+@@ -48,5 +48,5 @@ int fdset_iterate(FDSet *s, Iterator *i);
+ #define FDSET_FOREACH(fd, fds, i) \
+         for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
+-define_trivial_cleanup_func(FDSet*, fdset_free)
++DEFINE_TRIVIAL_CLEANUP_FUNC(FDSet*, fdset_free);
+ #define _cleanup_fdset_free_ _cleanup_(fdset_freep)
+diff --git a/src/shared/set.h b/src/shared/set.h
+index a291470..5612478 100644
+--- a/src/shared/set.h
++++ b/src/shared/set.h
+@@ -73,7 +73,7 @@ char **set_get_strv(Set *s);
+ #define SET_FOREACH_BACKWARDS(e, s, i) \
+         for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i)))
+-define_trivial_cleanup_func(Set*, set_free)
+-define_trivial_cleanup_func(Set*, set_free_free)
++DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free);
++DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free_free);
+ #define _cleanup_set_free_ _cleanup_(set_freep)
+ #define _cleanup_set_free_free_ _cleanup_(set_free_freep)
+diff --git a/src/shared/strv.h b/src/shared/strv.h
+index 4d117f8..f6fb033 100644
+--- a/src/shared/strv.h
++++ b/src/shared/strv.h
+@@ -30,7 +30,7 @@ char *strv_find(char **l, const char *name) _pure_;
+ char *strv_find_prefix(char **l, const char *name) _pure_;
+ void strv_free(char **l);
+-define_trivial_cleanup_func(char**, strv_free)
++DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free);
+ #define _cleanup_strv_free_ _cleanup_(strv_freep)
+ char **strv_copy(char * const *l);
+diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
+index bff8f5f..27677af 100644
+--- a/src/shared/udev-util.h
++++ b/src/shared/udev-util.h
+@@ -24,11 +24,11 @@
+ #include "udev.h"
+ #include "util.h"
+-define_trivial_cleanup_func(struct udev*, udev_unref)
+-define_trivial_cleanup_func(struct udev_device*, udev_device_unref)
+-define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref)
+-define_trivial_cleanup_func(struct udev_event*, udev_event_unref)
+-define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref)
++DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref);
++DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref);
++DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref);
++DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref);
++DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);
+ #define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
+ #define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
+diff --git a/src/shared/util.h b/src/shared/util.h
+index 2c41765..bdbdca3 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -555,11 +555,12 @@ static inline void freep(void *p) {
+         free(*(void**) p);
+ }
+-#define define_trivial_cleanup_func(type, func) \
+-        static inline void func##p(type *p) {   \
+-        if (*p)                                 \
+-                func(*p);                       \
+-        }                                       \
++#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)                 \
++        static inline void func##p(type *p) {                   \
++                if (*p)                                         \
++                        func(*p);                               \
++        }                                                       \
++        struct __useless_struct_to_allow_trailing_semicolon__
+ static inline void closep(int *fd) {
+         if (*fd >= 0)
+@@ -570,10 +571,10 @@ static inline void umaskp(mode_t *u) {
+         umask(*u);
+ }
+-define_trivial_cleanup_func(FILE*, fclose)
+-define_trivial_cleanup_func(FILE*, pclose)
+-define_trivial_cleanup_func(DIR*, closedir)
+-define_trivial_cleanup_func(FILE*, endmntent)
++DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, fclose);
++DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose);
++DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir);
++DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
+ #define _cleanup_free_ _cleanup_(freep)
+ #define _cleanup_close_ _cleanup_(closep)
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 7e873af..e23847b 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -998,7 +998,7 @@ static void item_free(Item *i) {
+         free(i);
+ }
+-define_trivial_cleanup_func(Item*, item_free)
++DEFINE_TRIVIAL_CLEANUP_FUNC(Item*, item_free);
+ #define _cleanup_item_free_ _cleanup_(item_freep)
+ static bool item_equal(Item *a, Item *b) {
diff --git a/debian/patches/util-check-for-overflow-in-greedy_realloc.patch b/debian/patches/util-check-for-overflow-in-greedy_realloc.patch
new file mode 100644 (file)
index 0000000..d042f89
--- /dev/null
@@ -0,0 +1,35 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 10 Dec 2013 18:53:03 +0000
+Subject: util: check for overflow in greedy_realloc()
+
+(cherry picked from commit 98088803bb2a9f89b7bbc063123dda3343138f18)
+
+Conflicts:
+       src/shared/util.c
+---
+ src/shared/util.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 1510c5e..02bae90 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -5832,10 +5832,18 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) {
+         size_t a;
+         void *q;
++        assert(p);
++        assert(allocated);
++
+         if (*allocated >= need)
+                 return *p;
+         a = MAX(64u, need * 2);
++
++        /* check for overflows */
++        if (a < need)
++                return NULL;
++
+         q = realloc(*p, a);
+         if (!q)
+                 return NULL;
diff --git a/debian/patches/util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch b/debian/patches/util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch
new file mode 100644 (file)
index 0000000..89cd1f1
--- /dev/null
@@ -0,0 +1,35 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 25 Mar 2014 01:46:24 +0100
+Subject: util: consider both fuse.glusterfs and glusterfs network file systems
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 8bit
+
+Based on a similar patch by Lukáš Nykrýn.
+
+(cherry picked from commit 67608cad2301f9ab5c92336992c176505640f2ba)
+(cherry picked from commit 5a01c85370bea492d27ff006c7a33a1084b49a94)
+---
+ src/shared/util.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index bec339b..617c3ac 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -1625,7 +1625,14 @@ bool fstype_is_network(const char *fstype) {
+                 "nfs\0"
+                 "nfs4\0"
+                 "gfs\0"
+-                "gfs2\0";
++                "gfs2\0"
++                "glusterfs\0";
++
++        const char *x;
++
++        x = startswith(fstype, "fuse.");
++        if (x)
++                fstype = x;
+         return nulstr_contains(table, fstype);
+ }
diff --git a/debian/patches/util-fix-handling-of-trailing-whitespace-in-split_qu.patch b/debian/patches/util-fix-handling-of-trailing-whitespace-in-split_qu.patch
new file mode 100644 (file)
index 0000000..27247e6
--- /dev/null
@@ -0,0 +1,131 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 27 Nov 2013 22:37:52 +0100
+Subject: util: fix handling of trailing whitespace in split_quoted()
+
+Inspired by a patch by Lukas Nykryn.
+
+(cherry picked from commit 70f75a523b16ad495a7791d595ee3eececf75953)
+
+Conflicts:
+       src/test/test-strv.c
+---
+ src/shared/util.c    | 24 +++++++++++++++---------
+ src/test/test-strv.c | 27 +++++++++++++++++++++++++++
+ 2 files changed, 42 insertions(+), 9 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 8824b9b..52451f9 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -370,17 +370,21 @@ char *split(const char *c, size_t *l, const char *separator, char **state) {
+ /* Split a string into words, but consider strings enclosed in '' and
+  * "" as words even if they include spaces. */
+ char *split_quoted(const char *c, size_t *l, char **state) {
+-        char *current, *e;
++        const char *current, *e;
+         bool escaped = false;
+-        current = *state ? *state : (char*) c;
++        assert(c);
++        assert(l);
++        assert(state);
+-        if (!*current || *c == 0)
+-                return NULL;
++        current = *state ? *state : c;
+         current += strspn(current, WHITESPACE);
+-        if (*current == '\'') {
++        if (*current == 0)
++                return NULL;
++
++        else if (*current == '\'') {
+                 current ++;
+                 for (e = current; *e; e++) {
+@@ -393,7 +397,8 @@ char *split_quoted(const char *c, size_t *l, char **state) {
+                 }
+                 *l = e-current;
+-                *state = *e == 0 ? e : e+1;
++                *state = (char*) (*e == 0 ? e : e+1);
++
+         } else if (*current == '\"') {
+                 current ++;
+@@ -407,7 +412,8 @@ char *split_quoted(const char *c, size_t *l, char **state) {
+                 }
+                 *l = e-current;
+-                *state = *e == 0 ? e : e+1;
++                *state = (char*) (*e == 0 ? e : e+1);
++
+         } else {
+                 for (e = current; *e; e++) {
+                         if (escaped)
+@@ -418,10 +424,10 @@ char *split_quoted(const char *c, size_t *l, char **state) {
+                                 break;
+                 }
+                 *l = e-current;
+-                *state = e;
++                *state = (char*) e;
+         }
+-        return (char*) current;
++        return current;
+ }
+ int get_parent_of_pid(pid_t pid, pid_t *_ppid) {
+diff --git a/src/test/test-strv.c b/src/test/test-strv.c
+index c3d536d..6de1455 100644
+--- a/src/test/test-strv.c
++++ b/src/test/test-strv.c
+@@ -143,6 +143,7 @@ static void test_strv_quote_unquote(const char* const *split, const char *quoted
+         char **t;
+         p = strv_join_quoted((char **)split);
++        assert_se(p);
+         printf("-%s- --- -%s-\n", p, quoted); /* fprintf deals with NULL, puts does not */
+         assert_se(p);
+         assert_se(streq(p, quoted));
+@@ -156,6 +157,20 @@ static void test_strv_quote_unquote(const char* const *split, const char *quoted
+         }
+ }
++static void test_strv_quote_unquote2(const char *quoted, const char ** list) {
++        _cleanup_strv_free_ char **s;
++        unsigned i = 0;
++        char **t;
++
++        s = strv_split_quoted(quoted);
++        assert_se(s);
++
++        STRV_FOREACH(t, s)
++                assert_se(streq(list[i++], *t));
++
++        assert_se(list[i] == NULL);
++}
++
+ static void test_strv_split_nulstr(void) {
+         _cleanup_strv_free_ char **l = NULL;
+         const char nulstr[] = "str0\0str1\0str2\0str3\0";
+@@ -309,6 +324,18 @@ int main(int argc, char *argv[]) {
+         test_strv_quote_unquote(input_table_quotes, QUOTES_STRING);
+         test_strv_quote_unquote(input_table_spaces, SPACES_STRING);
++        test_strv_quote_unquote2("    foo=bar     \"waldo\"    zzz    ", (const char*[]) { "foo=bar", "waldo", "zzz", NULL });
++        test_strv_quote_unquote2("", (const char*[]) { NULL });
++        test_strv_quote_unquote2(" ", (const char*[]) { NULL });
++        test_strv_quote_unquote2("   ", (const char*[]) { NULL });
++        test_strv_quote_unquote2("   x", (const char*[]) { "x", NULL });
++        test_strv_quote_unquote2("x   ", (const char*[]) { "x", NULL });
++        test_strv_quote_unquote2("  x   ", (const char*[]) { "x", NULL });
++        test_strv_quote_unquote2("  \"x\"   ", (const char*[]) { "x", NULL });
++        test_strv_quote_unquote2("  \'x\'   ", (const char*[]) { "x", NULL });
++        test_strv_quote_unquote2("  \'x\"\'   ", (const char*[]) { "x\"", NULL });
++        test_strv_quote_unquote2("  \"x\'\"   ", (const char*[]) { "x\'", NULL });
++
+         test_strv_split_nulstr();
+         test_strv_parse_nulstr();
+         test_strv_overlap();
diff --git a/debian/patches/util-ignore_file-should-not-allow-files-ending-with.patch b/debian/patches/util-ignore_file-should-not-allow-files-ending-with.patch
new file mode 100644 (file)
index 0000000..b581b29
--- /dev/null
@@ -0,0 +1,27 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sat, 31 May 2014 21:36:23 +0200
+Subject: util: ignore_file should not allow files ending with '~'
+
+ignore_file currently allows any file ending with '~' while it
+seems that the opposite was intended:
+a228a22fda4faa9ecb7c5a5e499980c8ae5d2a08
+
+(cherry picked from commit 93f1a06374e335e8508d89e1bdaadf45be6ab777)
+(cherry picked from commit c4a42680d72b18c5bd8717e6cff3e0df049936d9)
+---
+ src/shared/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index aa6242d..6e97a6d 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -1499,7 +1499,7 @@ bool ignore_file(const char *filename) {
+         assert(filename);
+         if (endswith(filename, "~"))
+-                return false;
++                return true;
+         return ignore_file_allow_backup(filename);
+ }
diff --git a/debian/patches/util-make-sure-all-our-name_to_handle_at-code-makes-.patch b/debian/patches/util-make-sure-all-our-name_to_handle_at-code-makes-.patch
new file mode 100644 (file)
index 0000000..c0f9c67
--- /dev/null
@@ -0,0 +1,79 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 24 Apr 2014 07:46:31 +0200
+Subject: util: make sure all our name_to_handle_at() code makes use of
+ file_handle_union
+
+(cherry picked from commit 21749924e12201d8f5210c5dc9695e18fd16bb93)
+(cherry picked from commit 6b494ffbcb54873508b6ca18ec93dfa20221d542)
+
+Conflicts:
+       src/libudev/libudev-monitor.c
+---
+ src/shared/path-util.c | 25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
+
+diff --git a/src/shared/path-util.c b/src/shared/path-util.c
+index 45099ee..d8c14e8 100644
+--- a/src/shared/path-util.c
++++ b/src/shared/path-util.c
+@@ -327,11 +327,15 @@ bool path_equal(const char *a, const char *b) {
+ }
+ int path_is_mount_point(const char *t, bool allow_symlink) {
+-        char *parent;
+-        int r;
+-        struct file_handle *h;
++
++        union file_handle_union h = {
++                .handle.handle_bytes = MAX_HANDLE_SZ
++        };
++
+         int mount_id, mount_id_parent;
++        char *parent;
+         struct stat a, b;
++        int r;
+         /* We are not actually interested in the file handles, but
+          * name_to_handle_at() also passes us the mount ID, hence use
+@@ -340,12 +344,9 @@ int path_is_mount_point(const char *t, bool allow_symlink) {
+         if (path_equal(t, "/"))
+                 return 1;
+-        h = alloca(MAX_HANDLE_SZ);
+-        h->handle_bytes = MAX_HANDLE_SZ;
+-
+-        r = name_to_handle_at(AT_FDCWD, t, h, &mount_id, allow_symlink ? AT_SYMLINK_FOLLOW : 0);
++        r = name_to_handle_at(AT_FDCWD, t, &h.handle, &mount_id, allow_symlink ? AT_SYMLINK_FOLLOW : 0);
+         if (r < 0) {
+-                if (errno == ENOSYS || errno == ENOTSUP)
++                if (IN_SET(errno, ENOSYS, EOPNOTSUPP))
+                         /* This kernel or file system does not support
+                          * name_to_handle_at(), hence fallback to the
+                          * traditional stat() logic */
+@@ -361,15 +362,14 @@ int path_is_mount_point(const char *t, bool allow_symlink) {
+         if (r < 0)
+                 return r;
+-        h->handle_bytes = MAX_HANDLE_SZ;
+-        r = name_to_handle_at(AT_FDCWD, parent, h, &mount_id_parent, 0);
++        h.handle.handle_bytes = MAX_HANDLE_SZ;
++        r = name_to_handle_at(AT_FDCWD, parent, &h.handle, &mount_id_parent, 0);
+         free(parent);
+-
+         if (r < 0) {
+                 /* The parent can't do name_to_handle_at() but the
+                  * directory we are interested in can? If so, it must
+                  * be a mount point */
+-                if (errno == ENOTSUP)
++                if (errno == EOPNOTSUPP)
+                         return 1;
+                 return -errno;
+@@ -396,7 +396,6 @@ fallback:
+         r = lstat(parent, &b);
+         free(parent);
+-
+         if (r < 0)
+                 return -errno;
diff --git a/debian/patches/util-replace-close_nointr_nofail-by-a-more-useful-sa.patch b/debian/patches/util-replace-close_nointr_nofail-by-a-more-useful-sa.patch
new file mode 100644 (file)
index 0000000..1f2006e
--- /dev/null
@@ -0,0 +1,2854 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 18 Mar 2014 19:22:43 +0100
+Subject: util: replace close_nointr_nofail() by a more useful safe_close()
+
+safe_close() automatically becomes a NOP when a negative fd is passed,
+and returns -1 unconditionally. This makes it easy to write lines like
+this:
+
+        fd = safe_close(fd);
+
+Which will close an fd if it is open, and reset the fd variable
+correctly.
+
+By making use of this new scheme we can drop a > 200 lines of code that
+was required to test for non-negative fds or to reset the closed fd
+variable afterwards.
+
+(cherry-picked from commit 03e334a1c7dc8c20c38902aa039440763acc9b17)
+
+(cherry picked from commit 4529ad1defde79e74797b494ab3ac924ce06ff2a)
+
+Conflicts:
+       src/core/automount.c
+       src/core/busname.c
+       src/core/dbus.c
+       src/core/execute.c
+       src/core/manager.c
+       src/core/path.c
+       src/core/socket.c
+       src/journal/journalctl.c
+       src/journal/journald-console.c
+       src/journal/journald-kmsg.c
+       src/journal/journald-server.c
+       src/journal/journald-stream.c
+       src/libsystemd-dhcp/dhcp-network.c
+       src/libsystemd-dhcp/sd-dhcp-client.c
+       src/libsystemd/sd-bus/bus-container.c
+       src/libsystemd/sd-bus/bus-kernel.c
+       src/libsystemd/sd-bus/bus-message.c
+       src/libsystemd/sd-bus/sd-bus.c
+       src/libsystemd/sd-bus/sd-memfd.c
+       src/libsystemd/sd-event/sd-event.c
+       src/libsystemd/sd-resolve/sd-resolve.c
+       src/libsystemd/sd-rtnl/sd-rtnl.c
+       src/login/logind-inhibit.c
+       src/login/logind-session.c
+       src/login/pam-module.c
+       src/machine/machinectl.c
+       src/nspawn/nspawn.c
+       src/shared/logs-show.c
+       src/shared/util.c
+       src/socket-proxy/socket-proxyd.c
+       src/udev/net/link-config.c
+---
+ src/core/audit-fd.c                                |  2 +-
+ src/core/automount.c                               | 40 ++++-------
+ src/core/cgroup.c                                  |  8 +--
+ src/core/dbus.c                                    | 10 ++-
+ src/core/execute.c                                 | 50 +++++--------
+ src/core/ima-setup.c                               |  6 +-
+ src/core/job.c                                     |  7 +-
+ src/core/load-fragment.c                           |  2 +-
+ src/core/machine-id-setup.c                        |  7 +-
+ src/core/main.c                                    |  2 +-
+ src/core/manager.c                                 | 32 ++++-----
+ src/core/path.c                                    |  4 +-
+ src/core/service.c                                 |  6 +-
+ src/core/smack-setup.c                             |  2 +-
+ src/core/socket.c                                  | 41 ++++-------
+ src/core/switch-root.c                             | 35 +++------
+ src/core/umount.c                                  |  8 +--
+ src/core/unit.c                                    |  4 +-
+ src/fsck/fsck.c                                    |  9 +--
+ src/initctl/initctl.c                              |  5 +-
+ src/journal/cat.c                                  |  9 +--
+ src/journal/catalog.c                              |  8 +--
+ src/journal/coredumpctl.c                          |  3 +-
+ src/journal/journal-authenticate.c                 |  5 +-
+ src/journal/journal-file.c                         |  4 +-
+ src/journal/journal-send.c                         | 16 ++---
+ src/journal/journal-verify.c                       | 12 ++--
+ src/journal/journalctl.c                           |  5 +-
+ src/journal/journald-console.c                     |  2 +-
+ src/journal/journald-kmsg.c                        |  5 +-
+ src/journal/journald-server.c                      | 27 ++-----
+ src/journal/journald-stream.c                      |  6 +-
+ src/journal/sd-journal.c                           |  3 +-
+ src/journal/test-journal-verify.c                  |  2 +-
+ src/journal/test-mmap-cache.c                      |  6 +-
+ src/libsystemd-bus/bus-kernel.c                    |  6 +-
+ src/libsystemd-bus/bus-message.c                   |  5 +-
+ src/libsystemd-bus/bus-socket.c                    |  4 +-
+ src/libsystemd-bus/sd-bus.c                        |  4 +-
+ src/libsystemd-bus/sd-memfd.c                      |  2 +-
+ src/libsystemd-bus/test-bus-chat.c                 |  2 +-
+ src/libsystemd-bus/test-bus-kernel-benchmark.c     |  2 +-
+ src/libsystemd-bus/test-bus-kernel.c               |  6 +-
+ src/login/inhibit.c                                |  2 +-
+ src/login/logind-button.c                          |  2 +-
+ src/login/logind-core.c                            |  2 +-
+ src/login/logind-dbus.c                            |  5 +-
+ src/login/logind-inhibit.c                         |  6 +-
+ src/login/logind-seat.c                            |  3 +-
+ src/login/logind-session.c                         |  6 +-
+ src/login/logind.c                                 | 23 ++----
+ src/login/pam-module.c                             |  3 +-
+ src/login/sd-login.c                               |  8 +--
+ src/login/test-inhibit.c                           |  4 +-
+ src/machine/machined.c                             |  7 +-
+ src/nspawn/nspawn.c                                | 27 ++++---
+ src/readahead/readahead-collect.c                  | 22 ++----
+ src/readahead/readahead-common.c                   |  2 +-
+ src/readahead/readahead-replay.c                   | 18 ++---
+ src/reply-password/reply-password.c                |  6 +-
+ src/shared/ask-password-api.c                      | 17 ++---
+ src/shared/dbus-loop.c                             | 12 ++--
+ src/shared/fdset.c                                 |  2 +-
+ src/shared/hwclock.c                               |  4 +-
+ src/shared/install.c                               | 12 ++--
+ src/shared/log.c                                   | 25 ++-----
+ src/shared/socket-label.c                          |  2 +-
+ src/shared/spawn-polkit-agent.c                    |  4 +-
+ src/shared/util.c                                  | 84 +++++++++++-----------
+ src/shared/util.h                                  |  6 +-
+ src/shared/watchdog.c                              |  3 +-
+ src/shutdownd/shutdownd.c                          |  3 +-
+ src/test/test-util.c                               |  2 +-
+ src/tmpfiles/tmpfiles.c                            |  6 +-
+ .../tty-ask-password-agent.c                       | 25 +++----
+ src/vconsole/vconsole-setup.c                      |  3 +-
+ 76 files changed, 297 insertions(+), 483 deletions(-)
+
+diff --git a/src/core/audit-fd.c b/src/core/audit-fd.c
+index 5955bd8..4326d17 100644
+--- a/src/core/audit-fd.c
++++ b/src/core/audit-fd.c
+@@ -55,7 +55,7 @@ int get_audit_fd(void) {
+ void close_audit_fd(void) {
+         if (initialized && audit_fd >= 0)
+-                close_nointr_nofail(audit_fd);
++                safe_close(audit_fd);
+         initialized = true;
+         audit_fd = -ECONNRESET;
+diff --git a/src/core/automount.c b/src/core/automount.c
+index 203104e..4c753de 100644
+--- a/src/core/automount.c
++++ b/src/core/automount.c
+@@ -92,8 +92,7 @@ static void unmount_autofs(Automount *a) {
+         automount_send_ready(a, -EHOSTDOWN);
+         unit_unwatch_fd(UNIT(a), &a->pipe_watch);
+-        close_nointr_nofail(a->pipe_fd);
+-        a->pipe_fd = -1;
++        a->pipe_fd = safe_close(a->pipe_fd);
+         /* If we reload/reexecute things we keep the mount point
+          * around */
+@@ -311,8 +310,7 @@ static int open_dev_autofs(Manager *m) {
+         init_autofs_dev_ioctl(&param);
+         if (ioctl(m->dev_autofs_fd, AUTOFS_DEV_IOCTL_VERSION, &param) < 0) {
+-                close_nointr_nofail(m->dev_autofs_fd);
+-                m->dev_autofs_fd = -1;
++                m->dev_autofs_fd = safe_close(m->dev_autofs_fd);
+                 return -errno;
+         }
+@@ -412,8 +410,9 @@ static int autofs_send_ready(int dev_autofs_fd, int ioctl_fd, uint32_t token, in
+ }
+ int automount_send_ready(Automount *a, int status) {
+-        int ioctl_fd, r;
++        _cleanup_close_ int ioctl_fd = -1;
+         unsigned token;
++        int r;
+         assert(a);
+         assert(status <= 0);
+@@ -422,10 +421,8 @@ int automount_send_ready(Automount *a, int status) {
+                 return 0;
+         ioctl_fd = open_ioctl_fd(UNIT(a)->manager->dev_autofs_fd, a->where, a->dev_id);
+-        if (ioctl_fd < 0) {
+-                r = ioctl_fd;
+-                goto fail;
+-        }
++        if (ioctl_fd < 0)
++                return ioctl_fd;
+         if (status)
+                 log_debug_unit(UNIT(a)->id, "Sending failure: %s", strerror(-status));
+@@ -451,18 +448,15 @@ int automount_send_ready(Automount *a, int status) {
+                         r = k;
+         }
+-fail:
+-        if (ioctl_fd >= 0)
+-                close_nointr_nofail(ioctl_fd);
+-
+         return r;
+ }
+ static void automount_enter_waiting(Automount *a) {
++        _cleanup_close_ int ioctl_fd = -1;
+         int p[2] = { -1, -1 };
+         char name[32], options[128];
+         bool mounted = false;
+-        int r, ioctl_fd = -1, dev_autofs_fd;
++        int r, dev_autofs_fd;
+         struct stat st;
+         assert(a);
+@@ -501,8 +495,7 @@ static void automount_enter_waiting(Automount *a) {
+         mounted = true;
+-        close_nointr_nofail(p[1]);
+-        p[1] = -1;
++        p[1] = safe_close(p[1]);
+         if (stat(a->where, &st) < 0) {
+                 r = -errno;
+@@ -529,8 +522,7 @@ static void automount_enter_waiting(Automount *a) {
+          * the direct mount will not receive events from the
+          * kernel. */
+-        close_nointr_nofail(ioctl_fd);
+-        ioctl_fd = -1;
++        ioctl_fd = safe_close(ioctl_fd);
+         r = unit_watch_fd(UNIT(a), p[0], EPOLLIN, &a->pipe_watch);
+         if (r < 0)
+@@ -544,10 +536,7 @@ static void automount_enter_waiting(Automount *a) {
+         return;
+ fail:
+-        assert_se(close_pipe(p) == 0);
+-
+-        if (ioctl_fd >= 0)
+-                close_nointr_nofail(ioctl_fd);
++        close_pipe(p);
+         if (mounted)
+                 repeat_unmount(a->where);
+@@ -716,9 +705,7 @@ static int automount_deserialize_item(Unit *u, const char *key, const char *valu
+                 if (safe_atoi(value, &fd) < 0 || fd < 0 || !fdset_contains(fds, fd))
+                         log_debug_unit(u->id, "Failed to parse pipe-fd value %s", value);
+                 else {
+-                        if (a->pipe_fd >= 0)
+-                                close_nointr_nofail(a->pipe_fd);
+-
++                        safe_close(a->pipe_fd);
+                         a->pipe_fd = fdset_remove(fds, fd);
+                 }
+         } else
+@@ -811,8 +798,7 @@ fail:
+ static void automount_shutdown(Manager *m) {
+         assert(m);
+-        if (m->dev_autofs_fd >= 0)
+-                close_nointr_nofail(m->dev_autofs_fd);
++        m->dev_autofs_fd = safe_close(m->dev_autofs_fd);
+ }
+ static void automount_reset_failed(Unit *u) {
+diff --git a/src/core/cgroup.c b/src/core/cgroup.c
+index c215a86..9e46304 100644
+--- a/src/core/cgroup.c
++++ b/src/core/cgroup.c
+@@ -657,8 +657,7 @@ int manager_setup_cgroup(Manager *m) {
+         }
+         /* 5. And pin it, so that it cannot be unmounted */
+-        if (m->pin_cgroupfs_fd >= 0)
+-                close_nointr_nofail(m->pin_cgroupfs_fd);
++        safe_close(m->pin_cgroupfs_fd);
+         m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
+         if (m->pin_cgroupfs_fd < 0) {
+@@ -683,10 +682,7 @@ void manager_shutdown_cgroup(Manager *m, bool delete) {
+         if (delete && m->cgroup_root)
+                 cg_trim(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, false);
+-        if (m->pin_cgroupfs_fd >= 0) {
+-                close_nointr_nofail(m->pin_cgroupfs_fd);
+-                m->pin_cgroupfs_fd = -1;
+-        }
++        m->pin_cgroupfs_fd = safe_close(m->pin_cgroupfs_fd);
+         free(m->cgroup_root);
+         m->cgroup_root = NULL;
+diff --git a/src/core/dbus.c b/src/core/dbus.c
+index aa3d93b..b616a24 100644
+--- a/src/core/dbus.c
++++ b/src/core/dbus.c
+@@ -147,7 +147,7 @@ static dbus_bool_t bus_add_watch(DBusWatch *bus_watch, void *data) {
+                 }
+                 if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, w->fd, &ev) < 0) {
+-                        close_nointr_nofail(w->fd);
++                        safe_close(w->fd);
+                         free(w);
+                         return FALSE;
+                 }
+@@ -174,8 +174,7 @@ static void bus_remove_watch(DBusWatch *bus_watch, void *data) {
+         assert(w->type == WATCH_DBUS_WATCH);
+         assert_se(epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, w->fd, NULL) >= 0);
+-        if (w->fd_is_dupped)
+-                close_nointr_nofail(w->fd);
++        safe_close(w->fd);
+         free(w);
+ }
+@@ -263,8 +262,7 @@ static dbus_bool_t bus_add_timeout(DBusTimeout *timeout, void *data) {
+         return TRUE;
+ fail:
+-        if (w->fd >= 0)
+-                close_nointr_nofail(w->fd);
++        safe_close(w->fd);
+         free(w);
+         return FALSE;
+@@ -284,7 +282,7 @@ static void bus_remove_timeout(DBusTimeout *timeout, void *data) {
+         assert(w->type == WATCH_DBUS_TIMEOUT);
+         assert_se(epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, w->fd, NULL) >= 0);
+-        close_nointr_nofail(w->fd);
++        safe_close(w->fd);
+         free(w);
+ }
+diff --git a/src/core/execute.c b/src/core/execute.c
+index ee445d7..add66ce 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -103,7 +103,7 @@ static int shift_fds(int fds[], unsigned n_fds) {
+                         if ((nfd = fcntl(fds[i], F_DUPFD, i+3)) < 0)
+                                 return -errno;
+-                        close_nointr_nofail(fds[i]);
++                        safe_close(fds[i]);
+                         fds[i] = nfd;
+                         /* Hmm, the fd we wanted isn't free? Then
+@@ -200,7 +200,7 @@ static int open_null_as(int flags, int nfd) {
+         if (fd != nfd) {
+                 r = dup2(fd, nfd) < 0 ? -errno : nfd;
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         } else
+                 r = nfd;
+@@ -225,12 +225,12 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons
+         r = connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path));
+         if (r < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+         if (shutdown(fd, SHUT_RD) < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -254,7 +254,7 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons
+         if (fd != nfd) {
+                 r = dup2(fd, nfd) < 0 ? -errno : nfd;
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         } else
+                 r = nfd;
+@@ -271,7 +271,7 @@ static int open_terminal_as(const char *path, mode_t mode, int nfd) {
+         if (fd != nfd) {
+                 r = dup2(fd, nfd) < 0 ? -errno : nfd;
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         } else
+                 r = nfd;
+@@ -331,7 +331,7 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty
+                 if (fd != STDIN_FILENO) {
+                         r = dup2(fd, STDIN_FILENO) < 0 ? -errno : STDIN_FILENO;
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                 } else
+                         r = STDIN_FILENO;
+@@ -495,7 +495,7 @@ static int setup_confirm_stdio(int *_saved_stdin,
+         }
+         if (fd >= 2)
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         *_saved_stdin = saved_stdin;
+         *_saved_stdout = saved_stdout;
+@@ -503,20 +503,15 @@ static int setup_confirm_stdio(int *_saved_stdin,
+         return 0;
+ fail:
+-        if (saved_stdout >= 0)
+-                close_nointr_nofail(saved_stdout);
+-
+-        if (saved_stdin >= 0)
+-                close_nointr_nofail(saved_stdin);
+-
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(saved_stdout);
++        safe_close(saved_stdin);
++        safe_close(fd);
+         return r;
+ }
+ _printf_attr_(1, 2) static int write_confirm_message(const char *format, ...) {
+-        int fd;
++        _cleanup_close_ int fd = -1;
+         va_list ap;
+         assert(format);
+@@ -529,8 +524,6 @@ _printf_attr_(1, 2) static int write_confirm_message(const char *format, ...) {
+         vdprintf(fd, format, ap);
+         va_end(ap);
+-        close_nointr_nofail(fd);
+-
+         return 0;
+ }
+@@ -552,11 +545,8 @@ static int restore_confirm_stdio(int *saved_stdin,
+                 if (dup2(*saved_stdout, STDOUT_FILENO) < 0)
+                         r = -errno;
+-        if (*saved_stdin >= 0)
+-                close_nointr_nofail(*saved_stdin);
+-
+-        if (*saved_stdout >= 0)
+-                close_nointr_nofail(*saved_stdout);
++        safe_close(*saved_stdin);
++        safe_close(*saved_stdout);
+         return r;
+ }
+@@ -1002,10 +992,9 @@ static int apply_seccomp(uint32_t *syscall_filter) {
+ static void do_idle_pipe_dance(int idle_pipe[4]) {
+         assert(idle_pipe);
+-        if (idle_pipe[1] >= 0)
+-                close_nointr_nofail(idle_pipe[1]);
+-        if (idle_pipe[2] >= 0)
+-                close_nointr_nofail(idle_pipe[2]);
++
++        safe_close(idle_pipe[1]);
++        safe_close(idle_pipe[2]);
+         if (idle_pipe[0] >= 0) {
+                 int r;
+@@ -1020,12 +1009,11 @@ static void do_idle_pipe_dance(int idle_pipe[4]) {
+                         fd_wait_for_event(idle_pipe[0], POLLHUP, IDLE_TIMEOUT2_USEC);
+                 }
+-                close_nointr_nofail(idle_pipe[0]);
++                safe_close(idle_pipe[0]);
+         }
+-        if (idle_pipe[3] >= 0)
+-                close_nointr_nofail(idle_pipe[3]);
++        safe_close(idle_pipe[3]);
+ }
+ int exec_spawn(ExecCommand *command,
+diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c
+index 7f8ec23..ed65096 100644
+--- a/src/core/ima-setup.c
++++ b/src/core/ima-setup.c
+@@ -47,7 +47,7 @@ int ima_setup(void) {
+        struct stat st;
+        ssize_t policy_size = 0, written = 0;
+        char *policy;
+-       int policyfd = -1, imafd = -1;
++       _cleanup_close_ int policyfd = -1, imafd = -1;
+        int result = 0;
+        if (stat(IMA_POLICY_PATH, &st) < 0)
+@@ -98,10 +98,6 @@ int ima_setup(void) {
+ out_mmap:
+        munmap(policy, policy_size);
+ out:
+-       if (policyfd >= 0)
+-                close_nointr_nofail(policyfd);
+-       if (imafd >= 0)
+-                close_nointr_nofail(imafd);
+        if (result)
+                 return result;
+ #endif /* HAVE_IMA */
+diff --git a/src/core/job.c b/src/core/job.c
+index c6bf08f..916e191 100644
+--- a/src/core/job.c
++++ b/src/core/job.c
+@@ -110,7 +110,7 @@ void job_free(Job *j) {
+                 assert(j->timer_watch.fd >= 0);
+                 assert_se(epoll_ctl(j->manager->epoll_fd, EPOLL_CTL_DEL, j->timer_watch.fd, NULL) >= 0);
+-                close_nointr_nofail(j->timer_watch.fd);
++                safe_close(j->timer_watch.fd);
+         }
+         while ((cl = j->bus_client_list)) {
+@@ -899,8 +899,7 @@ int job_start_timer(Job *j) {
+         return 0;
+ fail:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -1054,7 +1053,7 @@ int job_deserialize(Job *j, FILE *f, FDSet *fds) {
+                                 log_debug("Failed to parse job-timer-watch-fd value %s", v);
+                         else {
+                                 if (j->timer_watch.type == WATCH_JOB_TIMER)
+-                                        close_nointr_nofail(j->timer_watch.fd);
++                                        safe_close(j->timer_watch.fd);
+                                 j->timer_watch.type = WATCH_JOB_TIMER;
+                                 j->timer_watch.fd = fdset_remove(fds, fd);
+diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
+index d6ac4f6..45b36b9 100644
+--- a/src/core/load-fragment.c
++++ b/src/core/load-fragment.c
+@@ -2373,7 +2373,7 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_final) {
+         f = fdopen(fd, "re");
+         if (!f) {
+                 r = -errno;
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return r;
+         }
+diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
+index dcd1630..86fa0b4 100644
+--- a/src/core/machine-id-setup.c
++++ b/src/core/machine-id-setup.c
+@@ -73,7 +73,7 @@ static int generate(char id[34]) {
+         fd = open("/var/lib/dbus/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
+         if (fd >= 0) {
+                 k = loop_read(fd, id, 33, false);
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 if (k == 33 && id[32] == '\n') {
+@@ -118,7 +118,7 @@ static int generate(char id[34]) {
+                         fd = open("/sys/class/dmi/id/product_uuid", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
+                         if (fd >= 0) {
+                                 k = loop_read(fd, uuid, 36, false);
+-                                close_nointr_nofail(fd);
++                                safe_close(fd);
+                                 if (k >= 36) {
+                                         r = shorten_uuid(id, uuid);
+@@ -205,8 +205,7 @@ int machine_id_setup(void) {
+                         return 0;
+         }
+-        close_nointr_nofail(fd);
+-        fd = -1;
++        fd = safe_close(fd);
+         /* Hmm, we couldn't write it? So let's write it to
+          * /run/machine-id as a replacement */
+diff --git a/src/core/main.c b/src/core/main.c
+index 1ac1ba7..2a294c6 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -235,7 +235,7 @@ static int console_setup(bool do_reset) {
+         if (r < 0)
+                 log_error("Failed to reset /dev/console: %s", strerror(-r));
+-        close_nointr_nofail(tty_fd);
++        safe_close(tty_fd);
+         return r;
+ }
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 1baa863..1e7dc38 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -192,8 +192,7 @@ static int manager_watch_jobs_in_progress(Manager *m) {
+         return 0;
+ err:
+-        if (m->jobs_in_progress_watch.fd >= 0)
+-                close_nointr_nofail(m->jobs_in_progress_watch.fd);
++        safe_close(m->jobs_in_progress_watch.fd);
+         watch_init(&m->jobs_in_progress_watch);
+         return r;
+ }
+@@ -203,7 +202,7 @@ static void manager_unwatch_jobs_in_progress(Manager *m) {
+                 return;
+         assert_se(epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, m->jobs_in_progress_watch.fd, NULL) >= 0);
+-        close_nointr_nofail(m->jobs_in_progress_watch.fd);
++        safe_close(m->jobs_in_progress_watch.fd);
+         watch_init(&m->jobs_in_progress_watch);
+         m->jobs_in_progress_iteration = 0;
+@@ -306,8 +305,7 @@ static int manager_watch_idle_pipe(Manager *m) {
+         return 0;
+ err:
+-        if (m->idle_pipe_watch.fd >= 0)
+-                close_nointr_nofail(m->idle_pipe_watch.fd);
++        safe_close(m->idle_pipe_watch.fd);
+         watch_init(&m->idle_pipe_watch);
+         return r;
+ }
+@@ -349,7 +347,7 @@ static int manager_setup_time_change(Manager *m) {
+         if (timerfd_settime(m->time_change_watch.fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) {
+                 log_debug("Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m");
+-                close_nointr_nofail(m->time_change_watch.fd);
++                m->time_change_watch.fd = safe_close(m->time_change_watch.fd);
+                 watch_init(&m->time_change_watch);
+                 return 0;
+         }
+@@ -385,7 +383,7 @@ static int enable_special_signals(Manager *m) {
+                 if (ioctl(fd, KDSIGACCEPT, SIGWINCH) < 0)
+                         log_warning("Failed to enable kbrequest handling: %s", strerror(errno));
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         }
+         return 0;
+@@ -747,16 +745,11 @@ void manager_free(Manager *m) {
+         hashmap_free(m->watch_pids2);
+         hashmap_free(m->watch_bus);
+-        if (m->epoll_fd >= 0)
+-                close_nointr_nofail(m->epoll_fd);
+-        if (m->signal_watch.fd >= 0)
+-                close_nointr_nofail(m->signal_watch.fd);
+-        if (m->notify_watch.fd >= 0)
+-                close_nointr_nofail(m->notify_watch.fd);
+-        if (m->time_change_watch.fd >= 0)
+-                close_nointr_nofail(m->time_change_watch.fd);
+-        if (m->jobs_in_progress_watch.fd >= 0)
+-                close_nointr_nofail(m->jobs_in_progress_watch.fd);
++        safe_close(m->epoll_fd);
++        safe_close(m->signal_watch.fd);
++        safe_close(m->notify_watch.fd);
++        safe_close(m->time_change_watch.fd);
++        safe_close(m->jobs_in_progress_watch.fd);
+         free(m->notify_socket);
+@@ -1770,7 +1763,7 @@ static int process_event(Manager *m, struct epoll_event *ev) {
+                 /* Restart the watch */
+                 epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, m->time_change_watch.fd,
+                           NULL);
+-                close_nointr_nofail(m->time_change_watch.fd);
++                safe_close(m->time_change_watch.fd);
+                 watch_init(&m->time_change_watch);
+                 manager_setup_time_change(m);
+@@ -2050,8 +2043,7 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
+         }
+ finish:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         free(message);
+ }
+diff --git a/src/core/path.c b/src/core/path.c
+index 99e2fed..5e4f6d5 100644
+--- a/src/core/path.c
++++ b/src/core/path.c
+@@ -150,9 +150,7 @@ void path_spec_unwatch(PathSpec *s, Unit *u) {
+                 return;
+         unit_unwatch_fd(u, &s->watch);
+-
+-        close_nointr_nofail(s->inotify_fd);
+-        s->inotify_fd = -1;
++        s->inotify_fd = safe_close(s->inotify_fd);
+ }
+ int path_spec_fd_event(PathSpec *s, uint32_t events) {
+diff --git a/src/core/service.c b/src/core/service.c
+index 3bda9a3..f0df5fe 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -222,8 +222,7 @@ static void service_close_socket_fd(Service *s) {
+         if (s->socket_fd < 0)
+                 return;
+-        close_nointr_nofail(s->socket_fd);
+-        s->socket_fd = -1;
++        s->socket_fd = safe_close(s->socket_fd);
+ }
+ static void service_connection_unref(Service *s) {
+@@ -2794,8 +2793,7 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
+                         log_debug_unit(u->id, "Failed to parse socket-fd value %s", value);
+                 else {
+-                        if (s->socket_fd >= 0)
+-                                close_nointr_nofail(s->socket_fd);
++                        safe_close(s->socket_fd);
+                         s->socket_fd = fdset_remove(fds, fd);
+                 }
+         } else if (streq(key, "main-exec-status-pid")) {
+diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
+index 1434dea..8838d31 100644
+--- a/src/core/smack-setup.c
++++ b/src/core/smack-setup.c
+@@ -86,7 +86,7 @@ static int write_rules(const char* dstpath, const char* srcdir) {
+                 if (!policy) {
+                         if (r == 0)
+                                 r = -errno;
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         log_error("Failed to open %s: %m", entry->d_name);
+                         continue;
+                 }
+diff --git a/src/core/socket.c b/src/core/socket.c
+index e673f38..842850f 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -113,7 +113,7 @@ void socket_free_ports(Socket *s) {
+                 if (p->fd >= 0) {
+                         unit_unwatch_fd(UNIT(s), &p->fd_watch);
+-                        close_nointr_nofail(p->fd);
++                        safe_close(p->fd);
+                 }
+                 free(p->path);
+@@ -676,7 +676,7 @@ static void socket_close_fds(Socket *s) {
+                         continue;
+                 unit_unwatch_fd(UNIT(s), &p->fd_watch);
+-                close_nointr_nofail(p->fd);
++                p->fd = safe_close(p->fd);
+                 /* One little note: we should never delete any sockets
+                  * in the file system here! After all some other
+@@ -685,8 +685,6 @@ static void socket_close_fds(Socket *s) {
+                  * we delete sockets in the file system before we
+                  * create a new one, not after we stopped using
+                  * one! */
+-
+-                p->fd = -1;
+         }
+ }
+@@ -863,9 +861,7 @@ static int fifo_address_create(
+ fail:
+         label_context_clear();
+-
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -900,8 +896,7 @@ static int special_address_create(
+         return 0;
+ fail:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -960,9 +955,7 @@ static int mq_address_create(
+         return 0;
+ fail:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
+-
++        safe_close(fd);
+         return r;
+ }
+@@ -1438,7 +1431,7 @@ static void socket_enter_running(Socket *s, int cfd) {
+                                UNIT(s)->id);
+                 if (cfd >= 0)
+-                        close_nointr_nofail(cfd);
++                        safe_close(cfd);
+                 else  {
+                         /* Flush all sockets by closing and reopening them */
+                         socket_close_fds(s);
+@@ -1483,7 +1476,7 @@ static void socket_enter_running(Socket *s, int cfd) {
+                         log_warning_unit(UNIT(s)->id,
+                                          "%s: Too many incoming connections (%u)",
+                                          UNIT(s)->id, s->n_connections);
+-                        close_nointr_nofail(cfd);
++                        safe_close(cfd);
+                         return;
+                 }
+@@ -1498,7 +1491,7 @@ static void socket_enter_running(Socket *s, int cfd) {
+                         /* ENOTCONN is legitimate if TCP RST was received.
+                          * This connection is over, but the socket unit lives on. */
+-                        close_nointr_nofail(cfd);
++                        safe_close(cfd);
+                         return;
+                 }
+@@ -1558,8 +1551,7 @@ fail:
+                          bus_error(&error, r));
+         socket_enter_stop_pre(s, SOCKET_FAILURE_RESOURCES);
+-        if (cfd >= 0)
+-                close_nointr_nofail(cfd);
++        safe_close(cfd);
+         dbus_error_free(&error);
+ }
+@@ -1804,8 +1796,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+                                         break;
+                         if (p) {
+-                                if (p->fd >= 0)
+-                                        close_nointr_nofail(p->fd);
++                                safe_close(p->fd);
+                                 p->fd = fdset_remove(fds, fd);
+                         }
+                 }
+@@ -1825,8 +1816,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+                                         break;
+                         if (p) {
+-                                if (p->fd >= 0)
+-                                        close_nointr_nofail(p->fd);
++                                safe_close(p->fd);
+                                 p->fd = fdset_remove(fds, fd);
+                         }
+                 }
+@@ -1846,8 +1836,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+                                         break;
+                         if (p) {
+-                                if (p->fd >= 0)
+-                                        close_nointr_nofail(p->fd);
++                                safe_close(p->fd);
+                                 p->fd = fdset_remove(fds, fd);
+                         }
+                 }
+@@ -1866,8 +1855,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+                                         break;
+                         if (p) {
+-                                if (p->fd >= 0)
+-                                        close_nointr_nofail(p->fd);
++                                safe_close(p->fd);
+                                 p->fd = fdset_remove(fds, fd);
+                         }
+                 }
+@@ -1886,8 +1874,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+                                         break;
+                         if (p) {
+-                                if (p->fd >= 0)
+-                                        close_nointr_nofail(p->fd);
++                                safe_close(p->fd);
+                                 p->fd = fdset_remove(fds, fd);
+                         }
+                 }
+diff --git a/src/core/switch-root.c b/src/core/switch-root.c
+index ce0e41d..518ec1f 100644
+--- a/src/core/switch-root.c
++++ b/src/core/switch-root.c
+@@ -41,11 +41,10 @@ int switch_root(const char *new_root) {
+                 "/sys\0"
+                 "/run\0";
+-        int r, old_root_fd = -1;
++        _cleanup_close_ int old_root_fd = -1;
+         struct stat new_root_stat;
+         bool old_root_remove;
+-        const char *i;
+-        _cleanup_free_ char *temporary_old_root = NULL;
++        const char *i, *temporary_old_root;
+         if (path_equal(new_root, "/"))
+                 return 0;
+@@ -56,16 +55,13 @@ int switch_root(const char *new_root) {
+          * directory we choose for this, but it should be more likely
+          * than not that /mnt exists and is suitable as mount point
+          * and is on the same fs as the old root dir */
+-        temporary_old_root = strappend(new_root, "/mnt");
+-        if (!temporary_old_root)
+-                return -ENOMEM;
++        temporary_old_root = strappenda(new_root, "/mnt");
+         old_root_remove = in_initrd();
+         if (stat(new_root, &new_root_stat) < 0) {
+-                r = -errno;
+                 log_error("Failed to stat directory %s: %m", new_root);
+-                goto fail;
++                return -errno;
+         }
+         /* Work-around for a kernel bug: for some reason the kernel
+@@ -104,9 +100,8 @@ int switch_root(const char *new_root) {
+         }
+         if (chdir(new_root) < 0) {
+-                r = -errno;
+                 log_error("Failed to change directory to %s: %m", new_root);
+-                goto fail;
++                return -errno;
+         }
+         if (old_root_remove) {
+@@ -123,27 +118,23 @@ int switch_root(const char *new_root) {
+                 /* Immediately get rid of the old root. Since we are
+                  * running off it we need to do this lazily. */
+                 if (umount2(temporary_old_root, MNT_DETACH) < 0) {
+-                        r = -errno;
+                         log_error("Failed to umount old root dir %s: %m", temporary_old_root);
+-                        goto fail;
++                        return -errno;
+                 }
+         } else if (mount(new_root, "/", NULL, MS_MOVE, NULL) < 0) {
+-                r = -errno;
+                 log_error("Failed to mount moving %s to /: %m", new_root);
+-                goto fail;
++                return -errno;
+         }
+         if (chroot(".") < 0) {
+-                r = -errno;
+                 log_error("Failed to change root: %m");
+-                goto fail;
++                return -errno;
+         }
+         if (chdir("/") < 0) {
+-                r = -errno;
+                 log_error("Failed to change directory: %m");
+-                goto fail;
++                return -errno;
+         }
+         if (old_root_fd >= 0) {
+@@ -157,11 +148,5 @@ int switch_root(const char *new_root) {
+                 }
+         }
+-        r = 0;
+-
+-fail:
+-        if (old_root_fd >= 0)
+-                close_nointr_nofail(old_root_fd);
+-
+-        return r;
++        return 0;
+ }
+diff --git a/src/core/umount.c b/src/core/umount.c
+index fbd7e1c..57a97e1 100644
+--- a/src/core/umount.c
++++ b/src/core/umount.c
+@@ -315,14 +315,14 @@ static int dm_list_get(MountPoint **head) {
+ }
+ static int delete_loopback(const char *device) {
+-        int fd, r;
++        _cleanup_close_ int fd = -1;
++        int r;
+-        if ((fd = open(device, O_RDONLY|O_CLOEXEC)) < 0)
++        fd = open(device, O_RDONLY|O_CLOEXEC);
++        if (fd < 0)
+                 return errno == ENOENT ? 0 : -errno;
+         r = ioctl(fd, LOOP_CLR_FD, 0);
+-        close_nointr_nofail(fd);
+-
+         if (r >= 0)
+                 return 1;
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 9a7720d..c05926a 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1851,7 +1851,7 @@ int unit_watch_timer(Unit *u, clockid_t clock_id, bool relative, usec_t usec, Wa
+ fail:
+         if (ours)
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         return -errno;
+ }
+@@ -1868,7 +1868,7 @@ void unit_unwatch_timer(Unit *u, Watch *w) {
+         assert(w->fd >= 0);
+         assert_se(epoll_ctl(u->manager->epoll_fd, EPOLL_CTL_DEL, w->fd, NULL) >= 0);
+-        close_nointr_nofail(w->fd);
++        safe_close(w->fd);
+         w->fd = -1;
+         w->type = WATCH_INVALID;
+diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
+index 1189fe7..1ae104a 100644
+--- a/src/fsck/fsck.c
++++ b/src/fsck/fsck.c
+@@ -183,7 +183,7 @@ static int process_progress(int fd) {
+         f = fdopen(fd, "r");
+         if (!f) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -370,15 +370,12 @@ int main(int argc, char *argv[]) {
+         } else if (pid == 0) {
+                 /* Child */
+                 if (progress_pipe[0] >= 0)
+-                        close_nointr_nofail(progress_pipe[0]);
++                        safe_close(progress_pipe[0]);
+                 execv(cmdline[0], (char**) cmdline);
+                 _exit(8); /* Operational error */
+         }
+-        if (progress_pipe[1] >= 0) {
+-                close_nointr_nofail(progress_pipe[1]);
+-                progress_pipe[1] = -1;
+-        }
++        progress_pipe[1] = safe_close(progress_pipe[1]);
+         if (progress_pipe[0] >= 0) {
+                 process_progress(progress_pipe[0]);
+diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c
+index ec33040..03a379a 100644
+--- a/src/initctl/initctl.c
++++ b/src/initctl/initctl.c
+@@ -258,7 +258,7 @@ static void fifo_free(Fifo *f) {
+                 if (f->server)
+                         epoll_ctl(f->server->epoll_fd, EPOLL_CTL_DEL, f->fd, NULL);
+-                close_nointr_nofail(f->fd);
++                safe_close(f->fd);
+         }
+         free(f);
+@@ -270,8 +270,7 @@ static void server_done(Server *s) {
+         while (s->fifos)
+                 fifo_free(s->fifos);
+-        if (s->epoll_fd >= 0)
+-                close_nointr_nofail(s->epoll_fd);
++        safe_close(s->epoll_fd);
+         if (s->bus) {
+                 dbus_connection_flush(s->bus);
+diff --git a/src/journal/cat.c b/src/journal/cat.c
+index ea61578..b4b1332 100644
+--- a/src/journal/cat.c
++++ b/src/journal/cat.c
+@@ -151,7 +151,7 @@ int main(int argc, char *argv[]) {
+         }
+         if (fd >= 3)
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         fd = -1;
+@@ -169,11 +169,8 @@ int main(int argc, char *argv[]) {
+         log_error("Failed to execute process: %s", strerror(-r));
+ finish:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
+-
+-        if (saved_stderr >= 0)
+-                close_nointr_nofail(saved_stderr);
++        safe_close(fd);
++        safe_close(saved_stderr);
+         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ }
+diff --git a/src/journal/catalog.c b/src/journal/catalog.c
+index e5342be..7f748b3 100644
+--- a/src/journal/catalog.c
++++ b/src/journal/catalog.c
+@@ -435,18 +435,18 @@ static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p
+                 return -errno;
+         if (fstat(fd, &st) < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+         if (st.st_size < (off_t) sizeof(CatalogHeader)) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -EINVAL;
+         }
+         p = mmap(NULL, PAGE_ALIGN(st.st_size), PROT_READ, MAP_SHARED, fd, 0);
+         if (p == MAP_FAILED) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -457,7 +457,7 @@ static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p
+             h->incompatible_flags != 0 ||
+             le64toh(h->n_items) <= 0 ||
+             st.st_size < (off_t) (le64toh(h->header_size) + le64toh(h->catalog_item_size) * le64toh(h->n_items))) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 munmap(p, st.st_size);
+                 return -EBADMSG;
+         }
+diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c
+index a5997e2..f384286 100644
+--- a/src/journal/coredumpctl.c
++++ b/src/journal/coredumpctl.c
+@@ -491,8 +491,7 @@ static int run_gdb(sd_journal *j) {
+                 goto finish;
+         }
+-        close_nointr_nofail(fd);
+-        fd = -1;
++        fd = safe_close(fd);
+         pid = fork();
+         if (pid < 0) {
+diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c
+index f416b79..5ab1982 100644
+--- a/src/journal/journal-authenticate.c
++++ b/src/journal/journal-authenticate.c
+@@ -418,10 +418,9 @@ finish:
+         if (m)
+                 munmap(m, PAGE_ALIGN(sizeof(FSSHeader)));
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
+-
++        safe_close(fd);
+         free(p);
++
+         return r;
+ }
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 57ded0a..2d2d289 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -133,9 +133,7 @@ void journal_file_close(JournalFile *f) {
+         if (f->header)
+                 munmap(f->header, PAGE_ALIGN(sizeof(Header)));
+-        if (f->fd >= 0)
+-                close_nointr_nofail(f->fd);
+-
++        safe_close(f->fd);
+         free(f->path);
+         if (f->mmap)
+diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
+index d99ff0c..d40eaba 100644
+--- a/src/journal/journal-send.c
++++ b/src/journal/journal-send.c
+@@ -66,7 +66,7 @@ retry:
+         fd_inc_sndbuf(fd, SNDBUF_SIZE);
+         if (!__sync_bool_compare_and_swap(&fd_plus_one, 0, fd+1)) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 goto retry;
+         }
+@@ -321,13 +321,13 @@ _public_ int sd_journal_sendv(const struct iovec *iov, int n) {
+                 return -errno;
+         if (unlink(path) < 0) {
+-                close_nointr_nofail(buffer_fd);
++                safe_close(buffer_fd);
+                 return -errno;
+         }
+         n = writev(buffer_fd, w, j);
+         if (n < 0) {
+-                close_nointr_nofail(buffer_fd);
++                safe_close(buffer_fd);
+                 return -errno;
+         }
+@@ -347,7 +347,7 @@ _public_ int sd_journal_sendv(const struct iovec *iov, int n) {
+         mh.msg_controllen = cmsg->cmsg_len;
+         k = sendmsg(fd, &mh, MSG_NOSIGNAL);
+-        close_nointr_nofail(buffer_fd);
++        safe_close(buffer_fd);
+         if (k < 0)
+                 return -errno;
+@@ -423,12 +423,12 @@ _public_ int sd_journal_stream_fd(const char *identifier, int priority, int leve
+         r = connect(fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path));
+         if (r < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+         if (shutdown(fd, SHUT_RD) < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -456,12 +456,12 @@ _public_ int sd_journal_stream_fd(const char *identifier, int priority, int leve
+         r = loop_write(fd, header, l, false);
+         if (r < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return (int) r;
+         }
+         if ((size_t) r != l) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
+index f2422ff..55ec6fd 100644
+--- a/src/journal/journal-verify.c
++++ b/src/journal/journal-verify.c
+@@ -1228,9 +1228,9 @@ int journal_file_verify(
+         mmap_cache_close_fd(f->mmap, entry_fd);
+         mmap_cache_close_fd(f->mmap, entry_array_fd);
+-        close_nointr_nofail(data_fd);
+-        close_nointr_nofail(entry_fd);
+-        close_nointr_nofail(entry_array_fd);
++        safe_close(data_fd);
++        safe_close(entry_fd);
++        safe_close(entry_array_fd);
+         if (first_contained)
+                 *first_contained = le64toh(f->header->head_entry_realtime);
+@@ -1253,17 +1253,17 @@ fail:
+         if (data_fd >= 0) {
+                 mmap_cache_close_fd(f->mmap, data_fd);
+-                close_nointr_nofail(data_fd);
++                safe_close(data_fd);
+         }
+         if (entry_fd >= 0) {
+                 mmap_cache_close_fd(f->mmap, entry_fd);
+-                close_nointr_nofail(entry_fd);
++                safe_close(entry_fd);
+         }
+         if (entry_array_fd >= 0) {
+                 mmap_cache_close_fd(f->mmap, entry_array_fd);
+-                close_nointr_nofail(entry_array_fd);
++                safe_close(entry_array_fd);
+         }
+         return r;
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index b991ae3..9886a2f 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -1141,7 +1141,7 @@ static int setup_keys(void) {
+         n = now(CLOCK_REALTIME);
+         n /= arg_interval;
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         fd = mkostemp(k, O_WRONLY|O_CLOEXEC|O_NOCTTY);
+         if (fd < 0) {
+                 log_error("Failed to open %s: %m", k);
+@@ -1240,8 +1240,7 @@ static int setup_keys(void) {
+         r = 0;
+ finish:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         if (k) {
+                 unlink(k);
+diff --git a/src/journal/journald-console.c b/src/journal/journald-console.c
+index 1ee3afe..7a566ae 100644
+--- a/src/journal/journald-console.c
++++ b/src/journal/journald-console.c
+@@ -107,7 +107,7 @@ void server_forward_console(
+         if (writev(fd, iovec, n) < 0)
+                 log_debug("Failed to write to %s for logging: %s", tty, strerror(errno));
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+ finish:
+         free(ident_buf);
+diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
+index 9895808..4c2f6e7 100644
+--- a/src/journal/journald-kmsg.c
++++ b/src/journal/journald-kmsg.c
+@@ -407,7 +407,7 @@ int server_open_dev_kmsg(Server *s) {
+ }
+ int server_open_kernel_seqnum(Server *s) {
+-        int fd;
++        _cleanup_close_ int fd;
+         uint64_t *p;
+         assert(s);
+@@ -424,18 +424,15 @@ int server_open_kernel_seqnum(Server *s) {
+         if (posix_fallocate(fd, 0, sizeof(uint64_t)) < 0) {
+                 log_error("Failed to allocate sequential number file, ignoring: %m");
+-                close_nointr_nofail(fd);
+                 return 0;
+         }
+         p = mmap(NULL, sizeof(uint64_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
+         if (p == MAP_FAILED) {
+                 log_error("Failed to map sequential number file, ignoring: %m");
+-                close_nointr_nofail(fd);
+                 return 0;
+         }
+-        close_nointr_nofail(fd);
+         s->kernel_seqnum = p;
+         return 0;
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index cd2cfe9..0b31d10 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -1638,26 +1638,13 @@ void server_done(Server *s) {
+         hashmap_free(s->user_journals);
+-        if (s->epoll_fd >= 0)
+-                close_nointr_nofail(s->epoll_fd);
+-
+-        if (s->signal_fd >= 0)
+-                close_nointr_nofail(s->signal_fd);
+-
+-        if (s->syslog_fd >= 0)
+-                close_nointr_nofail(s->syslog_fd);
+-
+-        if (s->native_fd >= 0)
+-                close_nointr_nofail(s->native_fd);
+-
+-        if (s->stdout_fd >= 0)
+-                close_nointr_nofail(s->stdout_fd);
+-
+-        if (s->dev_kmsg_fd >= 0)
+-                close_nointr_nofail(s->dev_kmsg_fd);
+-
+-        if (s->sync_timer_fd >= 0)
+-                close_nointr_nofail(s->sync_timer_fd);
++        safe_close(s->epoll_fd);
++        safe_close(s->signal_fd);
++        safe_close(s->syslog_fd);
++        safe_close(s->native_fd);
++        safe_close(s->stdout_fd);
++        safe_close(s->dev_kmsg_fd);
++        safe_close(s->sync_timer_fd);
+         if (s->rate_limit)
+                 journal_rate_limit_free(s->rate_limit);
+diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
+index aae381b..816e351 100644
+--- a/src/journal/journald-stream.c
++++ b/src/journal/journald-stream.c
+@@ -327,7 +327,7 @@ void stdout_stream_free(StdoutStream *s) {
+                 if (s->server)
+                         epoll_ctl(s->server->epoll_fd, EPOLL_CTL_DEL, s->fd, NULL);
+-                close_nointr_nofail(s->fd);
++                safe_close(s->fd);
+         }
+ #ifdef HAVE_SELINUX
+@@ -359,13 +359,13 @@ int stdout_stream_new(Server *s) {
+         if (s->n_stdout_streams >= STDOUT_STREAMS_MAX) {
+                 log_warning("Too many stdout streams, refusing connection.");
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return 0;
+         }
+         stream = new0(StdoutStream, 1);
+         if (!stream) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return log_oom();
+         }
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 661257b..3840ee4 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -1836,8 +1836,7 @@ _public_ void sd_journal_close(sd_journal *j) {
+         hashmap_free(j->directories_by_path);
+         hashmap_free(j->directories_by_wd);
+-        if (j->inotify_fd >= 0)
+-                close_nointr_nofail(j->inotify_fd);
++        safe_close(j->inotify_fd);
+         if (j->mmap) {
+                 log_debug("mmap cache statistics: %u hit, %u miss", mmap_cache_get_hit(j->mmap), mmap_cache_get_missed(j->mmap));
+diff --git a/src/journal/test-journal-verify.c b/src/journal/test-journal-verify.c
+index 0540074..3b181c6 100644
+--- a/src/journal/test-journal-verify.c
++++ b/src/journal/test-journal-verify.c
+@@ -48,7 +48,7 @@ static void bit_toggle(const char *fn, uint64_t p) {
+         r = pwrite(fd, &b, 1, p/8);
+         assert(r == 1);
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+ }
+ static int raw_verify(const char *fn, const char *verification_key) {
+diff --git a/src/journal/test-mmap-cache.c b/src/journal/test-mmap-cache.c
+index e2ffaf4..868ba00 100644
+--- a/src/journal/test-mmap-cache.c
++++ b/src/journal/test-mmap-cache.c
+@@ -71,9 +71,9 @@ int main(int argc, char *argv[]) {
+         mmap_cache_unref(m);
+-        close_nointr_nofail(x);
+-        close_nointr_nofail(y);
+-        close_nointr_nofail(z);
++        safe_close(x);
++        safe_close(y);
++        safe_close(z);
+         return 0;
+ }
+diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c
+index bf8de04..4efc65f 100644
+--- a/src/libsystemd-bus/bus-kernel.c
++++ b/src/libsystemd-bus/bus-kernel.c
+@@ -414,7 +414,7 @@ static void close_kdbus_msg(sd_bus *bus, struct kdbus_msg *k) {
+                 if (d->type == KDBUS_MSG_FDS)
+                         close_many(d->fds, (d->size - offsetof(struct kdbus_item, fds)) / sizeof(int));
+                 else if (d->type == KDBUS_MSG_PAYLOAD_MEMFD)
+-                        close_nointr_nofail(d->memfd.fd);
++                        safe_close(d->memfd.fd);
+         }
+ }
+@@ -687,7 +687,7 @@ int bus_kernel_create(const char *name, char **s) {
+                 return -ENOMEM;
+         if (ioctl(fd, KDBUS_CMD_BUS_MAKE, make) < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 free(p);
+                 return -errno;
+         }
+@@ -742,7 +742,7 @@ static void close_and_munmap(int fd, void *address, size_t size) {
+         if (size > 0)
+                 assert_se(munmap(address, PAGE_ALIGN(size)) >= 0);
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+ }
+ void bus_kernel_push_memfd(sd_bus *bus, int fd, void *address, size_t size) {
+diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
+index 760a148..7284d27 100644
+--- a/src/libsystemd-bus/bus-message.c
++++ b/src/libsystemd-bus/bus-message.c
+@@ -68,7 +68,7 @@ static void message_free_part(sd_bus_message *m, struct bus_body_part *part) {
+                         if (part->mapped > 0)
+                                 assert_se(munmap(part->data, part->mapped) == 0);
+-                        close_nointr_nofail(part->memfd);
++                        safe_close(part->memfd);
+                 }
+         } else if (part->munmap_this)
+@@ -1482,8 +1482,7 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void
+         return 0;
+ fail:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+diff --git a/src/libsystemd-bus/bus-socket.c b/src/libsystemd-bus/bus-socket.c
+index b60facb..32b9207 100644
+--- a/src/libsystemd-bus/bus-socket.c
++++ b/src/libsystemd-bus/bus-socket.c
+@@ -745,7 +745,7 @@ int bus_socket_exec(sd_bus *b) {
+                 assert_se(dup3(s[1], STDOUT_FILENO, 0) == STDOUT_FILENO);
+                 if (s[1] != STDIN_FILENO && s[1] != STDOUT_FILENO)
+-                        close_nointr_nofail(s[1]);
++                        safe_close(s[1]);
+                 fd_cloexec(STDIN_FILENO, false);
+                 fd_cloexec(STDOUT_FILENO, false);
+@@ -762,7 +762,7 @@ int bus_socket_exec(sd_bus *b) {
+                 _exit(EXIT_FAILURE);
+         }
+-        close_nointr_nofail(s[1]);
++        safe_close(s[1]);
+         b->output_fd = b->input_fd = s[0];
+         return bus_socket_start_auth(b);
+diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
+index 8dc3f6e..6f08a00 100644
+--- a/src/libsystemd-bus/sd-bus.c
++++ b/src/libsystemd-bus/sd-bus.c
+@@ -49,10 +49,10 @@ static void bus_close_fds(sd_bus *b) {
+         assert(b);
+         if (b->input_fd >= 0)
+-                close_nointr_nofail(b->input_fd);
++                safe_close(b->input_fd);
+         if (b->output_fd >= 0 && b->output_fd != b->input_fd)
+-                close_nointr_nofail(b->output_fd);
++                safe_close(b->output_fd);
+         b->input_fd = b->output_fd = -1;
+ }
+diff --git a/src/libsystemd-bus/sd-memfd.c b/src/libsystemd-bus/sd-memfd.c
+index bd14da3..4ecfe61 100644
+--- a/src/libsystemd-bus/sd-memfd.c
++++ b/src/libsystemd-bus/sd-memfd.c
+@@ -88,7 +88,7 @@ void sd_memfd_free(sd_memfd *m) {
+         if (m->f)
+                 fclose(m->f);
+         else
+-                close_nointr_nofail(m->fd);
++                safe_close(m->fd);
+         free(m);
+ }
+diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c
+index f308edd..b2c2636 100644
+--- a/src/libsystemd-bus/test-bus-chat.c
++++ b/src/libsystemd-bus/test-bus-chat.c
+@@ -229,7 +229,7 @@ static int server(sd_bus *bus) {
+                         if (write(fd, &x, 1) < 0) {
+                                 log_error("Failed to write to fd: %m");
+-                                close_nointr_nofail(fd);
++                                safe_close(fd);
+                                 goto fail;
+                         }
+diff --git a/src/libsystemd-bus/test-bus-kernel-benchmark.c b/src/libsystemd-bus/test-bus-kernel-benchmark.c
+index 2e84cd9..7ee9fbb 100644
+--- a/src/libsystemd-bus/test-bus-kernel-benchmark.c
++++ b/src/libsystemd-bus/test-bus-kernel-benchmark.c
+@@ -269,7 +269,7 @@ int main(int argc, char *argv[]) {
+                 CPU_SET(0, &cpuset);
+                 pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
+-                close_nointr_nofail(bus_ref);
++                safe_close(bus_ref);
+                 sd_bus_unref(b);
+                 switch (mode) {
+diff --git a/src/libsystemd-bus/test-bus-kernel.c b/src/libsystemd-bus/test-bus-kernel.c
+index 680dcde..2d08bc8 100644
+--- a/src/libsystemd-bus/test-bus-kernel.c
++++ b/src/libsystemd-bus/test-bus-kernel.c
+@@ -122,14 +122,12 @@ int main(int argc, char *argv[]) {
+         assert_se(write(pipe_fds[1], "x", 1) == 1);
+-        close_nointr_nofail(pipe_fds[1]);
+-        pipe_fds[1] = -1;
++        pipe_fds[1] = safe_close(pipe_fds[1]);
+         r = sd_bus_message_append(m, "h", pipe_fds[0]);
+         assert_se(r >= 0);
+-        close_nointr_nofail(pipe_fds[0]);
+-        pipe_fds[0] = -1;
++        pipe_fds[0] = safe_close(pipe_fds[0]);
+         r = sd_bus_send(b, m, NULL);
+         assert_se(r >= 0);
+diff --git a/src/login/inhibit.c b/src/login/inhibit.c
+index 29e50c1..37edc5e 100644
+--- a/src/login/inhibit.c
++++ b/src/login/inhibit.c
+@@ -285,7 +285,7 @@ int main(int argc, char *argv[]) {
+                 if (pid == 0) {
+                         /* Child */
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         close_all_fds(NULL, 0);
+                         execvp(argv[optind], argv + optind);
+diff --git a/src/login/logind-button.c b/src/login/logind-button.c
+index 4f456d2..1705a29 100644
+--- a/src/login/logind-button.c
++++ b/src/login/logind-button.c
+@@ -74,7 +74,7 @@ void button_free(Button *b) {
+                 /* If the device has been unplugged close() returns
+                  * ENODEV, let's ignore this, hence we don't use
+-                 * close_nointr_nofail() */
++                 * safe_close() */
+                 close(b->fd);
+         }
+diff --git a/src/login/logind-core.c b/src/login/logind-core.c
+index 36999ac..ce14a99 100644
+--- a/src/login/logind-core.c
++++ b/src/login/logind-core.c
+@@ -460,7 +460,7 @@ static int vt_is_busy(int vtnr) {
+         else
+                 r = !!(vt_stat.v_state & (1 << vtnr));
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index a5ab19c..24f6622 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -795,7 +795,7 @@ static int bus_manager_inhibit(
+                 goto fail;
+         }
+-        close_nointr_nofail(fifo_fd);
++        safe_close(fifo_fd);
+         *_reply = reply;
+         reply = NULL;
+@@ -807,8 +807,7 @@ fail:
+         if (i)
+                 inhibitor_free(i);
+-        if (fifo_fd >= 0)
+-                close_nointr_nofail(fifo_fd);
++        safe_close(fifo_fd);
+         return r;
+ }
+diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c
+index e770883..38a6841 100644
+--- a/src/login/logind-inhibit.c
++++ b/src/login/logind-inhibit.c
+@@ -258,8 +258,7 @@ int inhibitor_load(Inhibitor *i) {
+                 int fd;
+                 fd = inhibitor_create_fifo(i);
+-                if (fd >= 0)
+-                        close_nointr_nofail(fd);
++                safe_close(fd);
+         }
+ finish:
+@@ -323,8 +322,7 @@ void inhibitor_remove_fifo(Inhibitor *i) {
+         if (i->fifo_fd >= 0) {
+                 assert_se(hashmap_remove(i->manager->inhibitor_fds, INT_TO_PTR(i->fifo_fd + 1)) == i);
+                 assert_se(epoll_ctl(i->manager->epoll_fd, EPOLL_CTL_DEL, i->fifo_fd, NULL) == 0);
+-                close_nointr_nofail(i->fifo_fd);
+-                i->fifo_fd = -1;
++                i->fifo_fd = safe_close(i->fifo_fd);
+         }
+         if (i->fifo_path) {
+diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
+index feebcf4..b581925 100644
+--- a/src/login/logind-seat.c
++++ b/src/login/logind-seat.c
+@@ -183,8 +183,7 @@ static int vt_allocate(int vtnr) {
+         r = fd < 0 ? -errno : 0;
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index ece222a..13de549 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -375,8 +375,7 @@ int session_load(Session *s) {
+                    trigger the EOF. */
+                 fd = session_create_fifo(s);
+-                if (fd >= 0)
+-                        close_nointr_nofail(fd);
++                safe_close(fd);
+         }
+         if (realtime) {
+@@ -972,8 +971,7 @@ void session_remove_fifo(Session *s) {
+         if (s->fifo_fd >= 0) {
+                 assert_se(hashmap_remove(s->manager->session_fds, INT_TO_PTR(s->fifo_fd + 1)) == s);
+                 assert_se(epoll_ctl(s->manager->epoll_fd, EPOLL_CTL_DEL, s->fifo_fd, NULL) == 0);
+-                close_nointr_nofail(s->fifo_fd);
+-                s->fifo_fd = -1;
++                s->fifo_fd = safe_close(s->fifo_fd);
+                 session_save(s);
+                 user_save(s->user);
+diff --git a/src/login/logind.c b/src/login/logind.c
+index 5180be7..f147910 100644
+--- a/src/login/logind.c
++++ b/src/login/logind.c
+@@ -152,8 +152,7 @@ void manager_free(Manager *m) {
+         hashmap_free(m->button_fds);
+         hashmap_free(m->timer_fds);
+-        if (m->console_active_fd >= 0)
+-                close_nointr_nofail(m->console_active_fd);
++        safe_close(m->console_active_fd);
+         if (m->udev_seat_monitor)
+                 udev_monitor_unref(m->udev_seat_monitor);
+@@ -173,17 +172,10 @@ void manager_free(Manager *m) {
+                 dbus_connection_unref(m->bus);
+         }
+-        if (m->bus_fd >= 0)
+-                close_nointr_nofail(m->bus_fd);
+-
+-        if (m->epoll_fd >= 0)
+-                close_nointr_nofail(m->epoll_fd);
+-
+-        if (m->reserve_vt_fd >= 0)
+-                close_nointr_nofail(m->reserve_vt_fd);
+-
+-        if (m->idle_action_fd >= 0)
+-                close_nointr_nofail(m->idle_action_fd);
++        safe_close(m->bus_fd);
++        safe_close(m->epoll_fd);
++        safe_close(m->reserve_vt_fd);
++        safe_close(m->idle_action_fd);
+         strv_free(m->kill_only_users);
+         strv_free(m->kill_exclude_users);
+@@ -1041,10 +1033,7 @@ int manager_dispatch_idle_action(Manager *m) {
+         return 0;
+ finish:
+-        if (m->idle_action_fd >= 0) {
+-                close_nointr_nofail(m->idle_action_fd);
+-                m->idle_action_fd = -1;
+-        }
++        m->idle_action_fd = safe_close(m->idle_action_fd);
+         return r;
+ }
+diff --git a/src/login/pam-module.c b/src/login/pam-module.c
+index 6259450..fe3ddd4 100644
+--- a/src/login/pam-module.c
++++ b/src/login/pam-module.c
+@@ -478,8 +478,7 @@ finish:
+         if (reply)
+                 dbus_message_unref(reply);
+-        if (session_fd >= 0)
+-                close_nointr_nofail(session_fd);
++        safe_close(session_fd);
+         return r;
+ }
+diff --git a/src/login/sd-login.c b/src/login/sd-login.c
+index 7e25041..2e7768e 100644
+--- a/src/login/sd-login.c
++++ b/src/login/sd-login.c
+@@ -646,7 +646,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) {
+         if (!category || streq(category, "seat")) {
+                 k = inotify_add_watch(fd, "/run/systemd/seats/", IN_MOVED_TO|IN_DELETE);
+                 if (k < 0) {
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return -errno;
+                 }
+@@ -656,7 +656,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) {
+         if (!category || streq(category, "session")) {
+                 k = inotify_add_watch(fd, "/run/systemd/sessions/", IN_MOVED_TO|IN_DELETE);
+                 if (k < 0) {
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return -errno;
+                 }
+@@ -666,7 +666,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) {
+         if (!category || streq(category, "uid")) {
+                 k = inotify_add_watch(fd, "/run/systemd/users/", IN_MOVED_TO|IN_DELETE);
+                 if (k < 0) {
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return -errno;
+                 }
+@@ -676,7 +676,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) {
+         if (!category || streq(category, "machine")) {
+                 k = inotify_add_watch(fd, "/run/systemd/machines/", IN_MOVED_TO|IN_DELETE);
+                 if (k < 0) {
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return -errno;
+                 }
+diff --git a/src/login/test-inhibit.c b/src/login/test-inhibit.c
+index 7b6deff..68d91da 100644
+--- a/src/login/test-inhibit.c
++++ b/src/login/test-inhibit.c
+@@ -127,11 +127,11 @@ int main(int argc, char*argv[]) {
+         assert(fd2 >= 0);
+         print_inhibitors(bus);
+-        close_nointr_nofail(fd1);
++        safe_close(fd1);
+         sleep(1);
+         print_inhibitors(bus);
+-        close_nointr_nofail(fd2);
++        safe_close(fd2);
+         sleep(1);
+         print_inhibitors(bus);
+diff --git a/src/machine/machined.c b/src/machine/machined.c
+index ad804a1..f427383 100644
+--- a/src/machine/machined.c
++++ b/src/machine/machined.c
+@@ -73,11 +73,8 @@ void manager_free(Manager *m) {
+                 dbus_connection_unref(m->bus);
+         }
+-        if (m->bus_fd >= 0)
+-                close_nointr_nofail(m->bus_fd);
+-
+-        if (m->epoll_fd >= 0)
+-                close_nointr_nofail(m->epoll_fd);
++        safe_close(m->bus_fd);
++        safe_close(m->epoll_fd);
+         free(m);
+ }
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 8718e94..adc682d 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -785,7 +785,7 @@ static int setup_kmsg(const char *dest, int kmsg_socket) {
+         /* Store away the fd in the socket, so that it stays open as
+          * long as we run the child */
+         k = sendmsg(kmsg_socket, &mh, MSG_DONTWAIT|MSG_NOSIGNAL);
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         if (k < 0) {
+                 log_error("Failed to send FIFO fd: %m");
+@@ -1050,7 +1050,7 @@ static bool audit_enabled(void) {
+         fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_AUDIT);
+         if (fd >= 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return true;
+         }
+         return false;
+@@ -1239,12 +1239,11 @@ int main(int argc, char *argv[]) {
+                                 n_env ++;
+                         /* Wait for the parent process to log our PID */
+-                        close_nointr_nofail(pipefd[1]);
++                        safe_close(pipefd[1]);
+                         fd_wait_for_event(pipefd[0], POLLHUP, -1);
+-                        close_nointr_nofail(pipefd[0]);
++                        safe_close(pipefd[0]);
+-                        close_nointr_nofail(master);
+-                        master = -1;
++                        master = safe_close(master);
+                         if (saved_attr_valid) {
+                                 if (tcsetattr(STDIN_FILENO, TCSANOW, &raw_attr) < 0) {
+@@ -1257,8 +1256,7 @@ int main(int argc, char *argv[]) {
+                         close_nointr(STDOUT_FILENO);
+                         close_nointr(STDERR_FILENO);
+-                        close_nointr_nofail(kmsg_socket_pair[0]);
+-                        kmsg_socket_pair[0] = -1;
++                        kmsg_socket_pair[0] = safe_close(kmsg_socket_pair[0]);
+                         reset_all_signal_handlers();
+@@ -1268,7 +1266,7 @@ int main(int argc, char *argv[]) {
+                         k = open_terminal(console, O_RDWR);
+                         if (k != STDIN_FILENO) {
+                                 if (k >= 0) {
+-                                        close_nointr_nofail(k);
++                                        safe_close(k);
+                                         k = -EINVAL;
+                                 }
+@@ -1335,8 +1333,7 @@ int main(int argc, char *argv[]) {
+                         if (setup_kmsg(arg_directory, kmsg_socket_pair[1]) < 0)
+                                 goto child_fail;
+-                        close_nointr_nofail(kmsg_socket_pair[1]);
+-                        kmsg_socket_pair[1] = -1;
++                        kmsg_socket_pair[1] = safe_close(kmsg_socket_pair[1]);
+                         if (setup_boot_id(arg_directory) < 0)
+                                 goto child_fail;
+@@ -1504,13 +1501,13 @@ int main(int argc, char *argv[]) {
+                 }
+                 log_info("Init process in the container running as PID %lu.", (unsigned long) pid);
+-                close_nointr_nofail(pipefd[0]);
+-                close_nointr_nofail(pipefd[1]);
++                safe_close(pipefd[0]);
++                safe_close(pipefd[1]);
+                 /* Wait for the child process to establish cgroup hierarchy */
+-                close_nointr_nofail(pipefd2[1]);
++                safe_close(pipefd2[1]);
+                 fd_wait_for_event(pipefd2[0], POLLHUP, -1);
+-                close_nointr_nofail(pipefd2[0]);
++                safe_close(pipefd2[0]);
+                 fdset_free(fds);
+                 fds = NULL;
+diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
+index 6b74866..112f59c 100644
+--- a/src/readahead/readahead-collect.c
++++ b/src/readahead/readahead-collect.c
+@@ -177,8 +177,7 @@ finish:
+         if (start != MAP_FAILED)
+                 munmap(start, l);
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -494,16 +493,12 @@ static int collect(const char *root) {
+                                 log_warning("readlink(%s) failed: %s", fn, strerror(-k));
+                 next_iteration:
+-                        if (m->fd >= 0)
+-                                close_nointr_nofail(m->fd);
++                        safe_close(m->fd);
+                 }
+         }
+ done:
+-        if (fanotify_fd >= 0) {
+-                close_nointr_nofail(fanotify_fd);
+-                fanotify_fd = -1;
+-        }
++        fanotify_fd = safe_close(fanotify_fd);
+         log_debug("Writing Pack File...");
+@@ -593,14 +588,9 @@ done:
+         log_debug("Done.");
+ finish:
+-        if (fanotify_fd >= 0)
+-                close_nointr_nofail(fanotify_fd);
+-
+-        if (signal_fd >= 0)
+-                close_nointr_nofail(signal_fd);
+-
+-        if (inotify_fd >= 0)
+-                close_nointr_nofail(inotify_fd);
++        safe_close(fanotify_fd);
++        safe_close(signal_fd);
++        safe_close(inotify_fd);
+         if (pack) {
+                 fclose(pack);
+diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c
+index 1edf9cc..49679fc 100644
+--- a/src/readahead/readahead-common.c
++++ b/src/readahead/readahead-common.c
+@@ -218,7 +218,7 @@ int open_inotify(void) {
+         if (inotify_add_watch(fd, "/run/systemd/readahead", IN_CREATE) < 0) {
+                 log_error("Failed to watch /run/systemd/readahead: %m");
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+diff --git a/src/readahead/readahead-replay.c b/src/readahead/readahead-replay.c
+index cb04e5f..8dc1942 100644
+--- a/src/readahead/readahead-replay.c
++++ b/src/readahead/readahead-replay.c
+@@ -67,10 +67,8 @@ static int unpack_file(FILE *pack) {
+                 if (errno != ENOENT && errno != EPERM && errno != EACCES && errno != ELOOP)
+                         log_warning("open(%s) failed: %m", fn);
+-        } else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0) {
+-                close_nointr_nofail(fd);
+-                fd = -1;
+-        }
++        } else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0)
++                fd = safe_close(fd);
+         if (fread(&inode, sizeof(inode), 1, pack) != 1) {
+                 log_error("Premature end of pack file.");
+@@ -81,10 +79,8 @@ static int unpack_file(FILE *pack) {
+         if (fd >= 0) {
+                 /* If the inode changed the file got deleted, so just
+                  * ignore this entry */
+-                if (st.st_ino != (uint64_t) inode) {
+-                        close_nointr_nofail(fd);
+-                        fd = -1;
+-                }
++                if (st.st_ino != (uint64_t) inode)
++                        fd = safe_close(fd);
+         }
+         for (;;) {
+@@ -129,8 +125,7 @@ static int unpack_file(FILE *pack) {
+         }
+ finish:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -279,8 +274,7 @@ finish:
+         if (pack)
+                 fclose(pack);
+-        if (inotify_fd >= 0)
+-                close_nointr_nofail(inotify_fd);
++        safe_close(inotify_fd);
+         free(pack_fn);
+diff --git a/src/reply-password/reply-password.c b/src/reply-password/reply-password.c
+index 2f16898..c730216 100644
+--- a/src/reply-password/reply-password.c
++++ b/src/reply-password/reply-password.c
+@@ -91,7 +91,8 @@ int main(int argc, char *argv[]) {
+                 goto finish;
+         }
+-        if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0)) < 0) {
++        fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
++        if (fd < 0) {
+                 log_error("socket() failed: %m");
+                 goto finish;
+         }
+@@ -102,8 +103,7 @@ int main(int argc, char *argv[]) {
+         r = EXIT_SUCCESS;
+ finish:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
+index 25367d0..200876d 100644
+--- a/src/shared/ask-password-api.c
++++ b/src/shared/ask-password-api.c
+@@ -231,8 +231,7 @@ int ask_password_tty(
+         r = 0;
+ finish:
+-        if (notify >= 0)
+-                close_nointr_nofail(notify);
++        safe_close(notify);
+         if (ttyfd >= 0) {
+@@ -241,7 +240,7 @@ finish:
+                         tcsetattr(ttyfd, TCSADRAIN, &old_termios);
+                 }
+-                close_nointr_nofail(ttyfd);
++                safe_close(ttyfd);
+         }
+         return r;
+@@ -294,7 +293,7 @@ static int create_socket(char **name) {
+         return fd;
+ fail:
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -528,19 +527,15 @@ int ask_password_agent(
+         r = 0;
+ finish:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         if (socket_name) {
+                 unlink(socket_name);
+                 free(socket_name);
+         }
+-        if (socket_fd >= 0)
+-                close_nointr_nofail(socket_fd);
+-
+-        if (signal_fd >= 0)
+-                close_nointr_nofail(signal_fd);
++        safe_close(socket_fd);
++        safe_close(signal_fd);
+         if (f)
+                 fclose(f);
+diff --git a/src/shared/dbus-loop.c b/src/shared/dbus-loop.c
+index c533242..aadb641 100644
+--- a/src/shared/dbus-loop.c
++++ b/src/shared/dbus-loop.c
+@@ -75,7 +75,7 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data) {
+                         return FALSE;
+                 if (epoll_ctl(PTR_TO_INT(data), EPOLL_CTL_ADD, e->fd, &ev) < 0) {
+-                        close_nointr_nofail(e->fd);
++                        safe_close(e->fd);
+                         return FALSE;
+                 }
+@@ -99,8 +99,7 @@ static void remove_watch(DBusWatch *watch, void *data) {
+         assert_se(epoll_ctl(PTR_TO_INT(data), EPOLL_CTL_DEL, e->fd, NULL) >= 0);
+-        if (e->fd_is_dupped)
+-                close_nointr_nofail(e->fd);
++        safe_close(e->fd);
+ }
+ static void toggle_watch(DBusWatch *watch, void *data) {
+@@ -167,8 +166,7 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
+         return TRUE;
+ fail:
+-        if (e->fd >= 0)
+-                close_nointr_nofail(e->fd);
++        safe_close(e->fd);
+         free(e);
+         return FALSE;
+@@ -184,7 +182,7 @@ static void remove_timeout(DBusTimeout *timeout, void *data) {
+                 return;
+         assert_se(epoll_ctl(PTR_TO_INT(data), EPOLL_CTL_DEL, e->fd, NULL) >= 0);
+-        close_nointr_nofail(e->fd);
++        safe_close(e->fd);
+ }
+ static void toggle_timeout(DBusTimeout *timeout, void *data) {
+@@ -213,7 +211,7 @@ int bus_loop_open(DBusConnection *c) {
+         if (!dbus_connection_set_watch_functions(c, add_watch, remove_watch, toggle_watch, INT_TO_PTR(fd), NULL) ||
+             !dbus_connection_set_timeout_functions(c, add_timeout, remove_timeout, toggle_timeout, INT_TO_PTR(fd), NULL)) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -ENOMEM;
+         }
+diff --git a/src/shared/fdset.c b/src/shared/fdset.c
+index fd27398..a2c861d 100644
+--- a/src/shared/fdset.c
++++ b/src/shared/fdset.c
+@@ -82,7 +82,7 @@ int fdset_put_dup(FDSet *s, int fd) {
+         r = fdset_put(s, copy);
+         if (r < 0) {
+-                close_nointr_nofail(copy);
++                safe_close(copy);
+                 return r;
+         }
+diff --git a/src/shared/hwclock.c b/src/shared/hwclock.c
+index 17f12de..10c6537 100644
+--- a/src/shared/hwclock.c
++++ b/src/shared/hwclock.c
+@@ -62,7 +62,7 @@ int hwclock_get_time(struct tm *tm) {
+          * to confused mktime(). */
+         tm->tm_isdst = -1;
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return err;
+ }
+@@ -80,7 +80,7 @@ int hwclock_set_time(const struct tm *tm) {
+         if (ioctl(fd, RTC_SET_TIME, tm) < 0)
+                 err = -errno;
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return err;
+ }
+diff --git a/src/shared/install.c b/src/shared/install.c
+index cb07947..241e000 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -207,7 +207,7 @@ static int remove_marked_symlinks_fd(
+         d = fdopendir(fd);
+         if (!d) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -248,7 +248,7 @@ static int remove_marked_symlinks_fd(
+                         p = path_make_absolute(de->d_name, path);
+                         if (!p) {
+-                                close_nointr_nofail(nfd);
++                                safe_close(nfd);
+                                 return -ENOMEM;
+                         }
+@@ -348,7 +348,7 @@ static int remove_marked_symlinks(
+                         r = q;
+         } while (deleted);
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+@@ -371,7 +371,7 @@ static int find_symlinks_fd(
+         d = fdopendir(fd);
+         if (!d) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -408,7 +408,7 @@ static int find_symlinks_fd(
+                         p = path_make_absolute(de->d_name, path);
+                         if (!p) {
+-                                close_nointr_nofail(nfd);
++                                safe_close(nfd);
+                                 return -ENOMEM;
+                         }
+@@ -1013,7 +1013,7 @@ static int unit_file_load(
+         f = fdopen(fd, "re");
+         if (!f) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -ENOMEM;
+         }
+diff --git a/src/shared/log.c b/src/shared/log.c
+index 2267764..039cbbe 100644
+--- a/src/shared/log.c
++++ b/src/shared/log.c
+@@ -62,7 +62,7 @@ void log_close_console(void) {
+         if (getpid() == 1) {
+                 if (console_fd >= 3)
+-                        close_nointr_nofail(console_fd);
++                        safe_close(console_fd);
+                 console_fd = -1;
+         }
+@@ -84,12 +84,7 @@ static int log_open_console(void) {
+ }
+ void log_close_kmsg(void) {
+-
+-        if (kmsg_fd < 0)
+-                return;
+-
+-        close_nointr_nofail(kmsg_fd);
+-        kmsg_fd = -1;
++        kmsg_fd = safe_close(kmsg_fd);
+ }
+ static int log_open_kmsg(void) {
+@@ -105,12 +100,7 @@ static int log_open_kmsg(void) {
+ }
+ void log_close_syslog(void) {
+-
+-        if (syslog_fd < 0)
+-                return;
+-
+-        close_nointr_nofail(syslog_fd);
+-        syslog_fd = -1;
++        syslog_fd = safe_close(syslog_fd);
+ }
+ static int create_log_socket(int type) {
+@@ -152,7 +142,7 @@ static int log_open_syslog(void) {
+         }
+         if (connect(syslog_fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path)) < 0) {
+-                close_nointr_nofail(syslog_fd);
++                safe_close(syslog_fd);
+                 /* Some legacy syslog systems still use stream
+                  * sockets. They really shouldn't. But what can we
+@@ -180,12 +170,7 @@ fail:
+ }
+ void log_close_journal(void) {
+-
+-        if (journal_fd < 0)
+-                return;
+-
+-        close_nointr_nofail(journal_fd);
+-        journal_fd = -1;
++        journal_fd = safe_close(journal_fd);
+ }
+ static int log_open_journal(void) {
+diff --git a/src/shared/socket-label.c b/src/shared/socket-label.c
+index ff212de..e4382d5 100644
+--- a/src/shared/socket-label.c
++++ b/src/shared/socket-label.c
+@@ -138,6 +138,6 @@ int socket_address_listen(
+ fail:
+         r = -errno;
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
+diff --git a/src/shared/spawn-polkit-agent.c b/src/shared/spawn-polkit-agent.c
+index f9e52cd..fccf1e9 100644
+--- a/src/shared/spawn-polkit-agent.c
++++ b/src/shared/spawn-polkit-agent.c
+@@ -61,7 +61,7 @@ int polkit_agent_open(void) {
+                        POLKIT_AGENT_BINARY_PATH, "--notify-fd", notify_fd, "--fallback", NULL);
+         /* Close the writing side, because that's the one for the agent */
+-        close_nointr_nofail(pipe_fd[1]);
++        safe_close(pipe_fd[1]);
+         if (r < 0)
+                 log_error("Failed to fork TTY ask password agent: %s", strerror(-r));
+@@ -69,7 +69,7 @@ int polkit_agent_open(void) {
+                 /* Wait until the agent closes the fd */
+                 fd_wait_for_event(pipe_fd[0], POLLHUP, (usec_t) -1);
+-        close_nointr_nofail(pipe_fd[0]);
++        safe_close(pipe_fd[0]);
+         return r;
+ }
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 533db92..aa6242d 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -173,13 +173,22 @@ int close_nointr(int fd) {
+                 return -errno;
+ }
+-void close_nointr_nofail(int fd) {
+-        PROTECT_ERRNO;
++int safe_close(int fd) {
++
++        /*
++         * Like close_nointr() but cannot fail. Guarantees errno is
++         * unchanged. Is a NOP with negative fds passed, and returns
++         * -1, so that it can be used in this syntax:
++         *
++         * fd = safe_close(fd);
++         */
+-        /* like close_nointr() but cannot fail, and guarantees errno
+-         * is unchanged */
++        if (fd >= 0) {
++                PROTECT_ERRNO;
++                assert_se(close_nointr(fd) == 0);
++        }
+-        assert_se(close_nointr(fd) == 0);
++        return -1;
+ }
+ void close_many(const int fds[], unsigned n_fd) {
+@@ -188,7 +197,7 @@ void close_many(const int fds[], unsigned n_fd) {
+         assert(fds || n_fd <= 0);
+         for (i = 0; i < n_fd; i++)
+-                close_nointr_nofail(fds[i]);
++                safe_close(fds[i]);
+ }
+ int unlink_noerrno(const char *path) {
+@@ -1834,16 +1843,13 @@ finish:
+ }
+ int reset_terminal(const char *name) {
+-        int fd, r;
++        _cleanup_close_ int fd = -1;
+         fd = open_terminal(name, O_RDWR|O_NOCTTY|O_CLOEXEC);
+         if (fd < 0)
+                 return fd;
+-        r = reset_terminal_fd(fd, true);
+-        close_nointr_nofail(fd);
+-
+-        return r;
++        return reset_terminal_fd(fd, true);
+ }
+ int open_terminal(const char *name, int mode) {
+@@ -1882,12 +1888,12 @@ int open_terminal(const char *name, int mode) {
+         r = isatty(fd);
+         if (r < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+         if (!r) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -ENOTTY;
+         }
+@@ -2076,11 +2082,10 @@ int acquire_terminal(
+                  * ended our handle will be dead. It's important that
+                  * we do this after sleeping, so that we don't enter
+                  * an endless loop. */
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         }
+-        if (notify >= 0)
+-                close_nointr_nofail(notify);
++        safe_close(notify);
+         r = reset_terminal_fd(fd, true);
+         if (r < 0)
+@@ -2089,11 +2094,8 @@ int acquire_terminal(
+         return fd;
+ fail:
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
+-
+-        if (notify >= 0)
+-                close_nointr_nofail(notify);
++        safe_close(fd);
++        safe_close(notify);
+         return r;
+ }
+@@ -2391,7 +2393,7 @@ int make_stdio(int fd) {
+         t = dup3(fd, STDERR_FILENO, 0);
+         if (fd >= 3)
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+         if (r < 0 || s < 0 || t < 0)
+                 return -errno;
+@@ -2772,7 +2774,7 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct
+         d = fdopendir(fd);
+         if (!d) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return errno == ENOENT ? 0 : -errno;
+         }
+@@ -2867,7 +2869,7 @@ int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root
+         assert(fd >= 0);
+         if (fstatfs(fd, &s) < 0) {
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -errno;
+         }
+@@ -2876,7 +2878,7 @@ int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root
+          * non-state data */
+         if (!is_temporary_fs(&s)) {
+                 log_error("Attempted to remove disk file system, and we can't allow that.");
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return -EPERM;
+         }
+@@ -2922,13 +2924,13 @@ static int rm_rf_internal(const char *path, bool only_dirs, bool delete_root, bo
+         if (!dangerous) {
+                 if (fstatfs(fd, &s) < 0) {
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return -errno;
+                 }
+                 if (!is_temporary_fs(&s)) {
+                         log_error("Attempted to remove disk file system, and we can't allow that.");
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return -EPERM;
+                 }
+         }
+@@ -3382,7 +3384,7 @@ char *ellipsize(const char *s, size_t length, unsigned percent) {
+ }
+ int touch(const char *path) {
+-        int fd;
++        _cleanup_close_ int fd;
+         assert(path);
+@@ -3394,7 +3396,6 @@ int touch(const char *path) {
+         if (fd < 0)
+                 return -errno;
+-        close_nointr_nofail(fd);
+         return 0;
+ }
+@@ -3557,7 +3558,7 @@ DIR *xopendirat(int fd, const char *name, int flags) {
+         d = fdopendir(nfd);
+         if (!d) {
+-                close_nointr_nofail(nfd);
++                safe_close(nfd);
+                 return NULL;
+         }
+@@ -4055,16 +4056,13 @@ int terminal_vhangup_fd(int fd) {
+ }
+ int terminal_vhangup(const char *name) {
+-        int fd, r;
++        _cleanup_close_ int fd;
+         fd = open_terminal(name, O_RDWR|O_NOCTTY|O_CLOEXEC);
+         if (fd < 0)
+                 return fd;
+-        r = terminal_vhangup_fd(fd);
+-        close_nointr_nofail(fd);
+-
+-        return r;
++        return terminal_vhangup_fd(fd);
+ }
+ int vt_disallocate(const char *name) {
+@@ -4091,7 +4089,7 @@ int vt_disallocate(const char *name) {
+                            "\033[H"    /* move home */
+                            "\033[2J",  /* clear screen */
+                            10, false);
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 return 0;
+         }
+@@ -4112,7 +4110,7 @@ int vt_disallocate(const char *name) {
+                 return fd;
+         r = ioctl(fd, VT_DISALLOCATE, u);
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         if (r >= 0)
+                 return 0;
+@@ -4131,7 +4129,7 @@ int vt_disallocate(const char *name) {
+                    "\033[H"   /* move home */
+                    "\033[3J", /* clear screen including scrollback, requires Linux 2.6.40 */
+                    10, false);
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return 0;
+ }
+@@ -4148,7 +4146,7 @@ int copy_file(const char *from, const char *to) {
+         fdt = open(to, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC|O_NOCTTY, 0644);
+         if (fdt < 0) {
+-                close_nointr_nofail(fdf);
++                safe_close(fdf);
+                 return -errno;
+         }
+@@ -4160,7 +4158,7 @@ int copy_file(const char *from, const char *to) {
+                 if (n < 0) {
+                         r = -errno;
+-                        close_nointr_nofail(fdf);
++                        safe_close(fdf);
+                         close_nointr(fdt);
+                         unlink(to);
+@@ -4175,7 +4173,7 @@ int copy_file(const char *from, const char *to) {
+                 if (n != k) {
+                         r = k < 0 ? k : (errno ? -errno : -EIO);
+-                        close_nointr_nofail(fdf);
++                        safe_close(fdf);
+                         close_nointr(fdt);
+                         unlink(to);
+@@ -4183,7 +4181,7 @@ int copy_file(const char *from, const char *to) {
+                 }
+         }
+-        close_nointr_nofail(fdf);
++        safe_close(fdf);
+         r = close_nointr(fdt);
+         if (r < 0) {
+@@ -5669,7 +5667,7 @@ int on_ac_power(void) {
+                 if (n != 6 || memcmp(contents, "Mains\n", 6))
+                         continue;
+-                close_nointr_nofail(fd);
++                safe_close(fd);
+                 fd = openat(device, "online", O_RDONLY|O_CLOEXEC|O_NOCTTY);
+                 if (fd < 0) {
+                         if (errno == ENOENT)
+diff --git a/src/shared/util.h b/src/shared/util.h
+index a173885..e83d2ab 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -125,7 +125,8 @@ char *endswith(const char *s, const char *postfix) _pure_;
+ bool first_word(const char *s, const char *word) _pure_;
+ int close_nointr(int fd);
+-void close_nointr_nofail(int fd);
++int safe_close(int fd);
++
+ void close_many(const int fds[], unsigned n_fd);
+ int parse_boolean(const char *v) _pure_;
+@@ -565,8 +566,7 @@ static inline void freep(void *p) {
+         struct __useless_struct_to_allow_trailing_semicolon__
+ static inline void closep(int *fd) {
+-        if (*fd >= 0)
+-                close_nointr_nofail(*fd);
++        safe_close(*fd);
+ }
+ static inline void umaskp(mode_t *u) {
+diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c
+index ddbe7af..ba9ad9b 100644
+--- a/src/shared/watchdog.c
++++ b/src/shared/watchdog.c
+@@ -164,6 +164,5 @@ void watchdog_close(bool disarm) {
+                 }
+         }
+-        close_nointr_nofail(watchdog_fd);
+-        watchdog_fd = -1;
++        watchdog_fd = safe_close(watchdog_fd);
+ }
+diff --git a/src/shutdownd/shutdownd.c b/src/shutdownd/shutdownd.c
+index 461a726..886380d 100644
+--- a/src/shutdownd/shutdownd.c
++++ b/src/shutdownd/shutdownd.c
+@@ -438,8 +438,7 @@ int main(int argc, char *argv[]) {
+ finish:
+         for (i = 0; i < _FD_MAX; i++)
+-                if (pollfd[i].fd >= 0)
+-                        close_nointr_nofail(pollfd[i].fd);
++                safe_close(pollfd[i].fd);
+         if (unlink_nologin)
+                 unlink("/run/nologin");
+diff --git a/src/test/test-util.c b/src/test/test-util.c
+index 7566adc..34b7db8 100644
+--- a/src/test/test-util.c
++++ b/src/test/test-util.c
+@@ -64,7 +64,7 @@ static void test_close_many(void) {
+         assert_se(fcntl(fds[1], F_GETFD) == -1);
+         assert_se(fcntl(fds[2], F_GETFD) >= 0);
+-        close_nointr_nofail(fds[2]);
++        safe_close(fds[2]);
+         unlink(name0);
+         unlink(name1);
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 98d01a1..4244656 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -489,7 +489,7 @@ static int write_one_file(Item *i, const char *path) {
+                 unescaped = cunescape(i->argument);
+                 if (unescaped == NULL) {
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return log_oom();
+                 }
+@@ -498,12 +498,12 @@ static int write_one_file(Item *i, const char *path) {
+                 if (n < 0 || (size_t) n < l) {
+                         log_error("Failed to write file %s: %s", path, n < 0 ? strerror(-n) : "Short write");
+-                        close_nointr_nofail(fd);
++                        safe_close(fd);
+                         return n < 0 ? n : -EIO;
+                 }
+         }
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         if (stat(path, &st) < 0) {
+                 log_error("stat(%s) failed: %m", path);
+diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
+index 256c21d..cb74c72 100644
+--- a/src/tty-ask-password-agent/tty-ask-password-agent.c
++++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
+@@ -234,11 +234,8 @@ static int ask_password_plymouth(
+         r = 0;
+ finish:
+-        if (notify >= 0)
+-                close_nointr_nofail(notify);
+-
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(notify);
++        safe_close(fd);
+         free(packet);
+@@ -374,7 +371,7 @@ static int parse_password(const char *filename, char **wall) {
+                         r = ask_password_tty(message, not_after, filename, &password);
+                         if (arg_console) {
+-                                close_nointr_nofail(tty_fd);
++                                safe_close(tty_fd);
+                                 release_terminal();
+                         }
+@@ -421,8 +418,7 @@ static int parse_password(const char *filename, char **wall) {
+ finish:
+         fclose(f);
+-        if (socket_fd >= 0)
+-                close_nointr_nofail(socket_fd);
++        safe_close(socket_fd);
+         free(packet);
+         free(socket_name);
+@@ -494,7 +490,7 @@ static bool wall_tty_match(const char *path) {
+                 return true;
+         /* What, we managed to open the pipe? Then this tty is filtered. */
+-        close_nointr_nofail(fd);
++        safe_close(fd);
+         return false;
+ }
+@@ -616,14 +612,9 @@ static int watch_passwords(void) {
+         r = 0;
+ finish:
+-        if (notify >= 0)
+-                close_nointr_nofail(notify);
+-
+-        if (signal_fd >= 0)
+-                close_nointr_nofail(signal_fd);
+-
+-        if (tty_block_fd >= 0)
+-                close_nointr_nofail(tty_block_fd);
++        safe_close(notify);
++        safe_close(signal_fd);
++        safe_close(tty_block_fd);
+         return r;
+ }
+diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
+index 1bbf737..0f2b706 100644
+--- a/src/vconsole/vconsole-setup.c
++++ b/src/vconsole/vconsole-setup.c
+@@ -301,8 +301,7 @@ finish:
+         free(vc_font_map);
+         free(vc_font_unimap);
+-        if (fd >= 0)
+-                close_nointr_nofail(fd);
++        safe_close(fd);
+         return r;
+ }
diff --git a/debian/patches/util-treat-fuse.sshfs-as-a-network-filesystem.patch b/debian/patches/util-treat-fuse.sshfs-as-a-network-filesystem.patch
new file mode 100644 (file)
index 0000000..23100f9
--- /dev/null
@@ -0,0 +1,23 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 20 Jun 2014 22:43:49 -0400
+Subject: util: treat fuse.sshfs as a network filesystem
+
+https://bugs.freedesktop.org/show_bug.cgi?id=73727
+(cherry picked from commit da92ca5eb506d513033e0c7a85daf25a7e1c9d0e)
+(cherry picked from commit e4798529d9ca623d360d6b012770bb0f9d8a5ea2)
+---
+ src/shared/util.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 7aa3d02..e78e4e4 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -1629,6 +1629,7 @@ bool fstype_is_network(const char *fstype) {
+         static const char table[] =
+                 "cifs\0"
+                 "smbfs\0"
++                "sshfs\0"
+                 "ncpfs\0"
+                 "ncp\0"
+                 "nfs\0"
diff --git a/debian/patches/util-try-harder-to-increase-the-send-recv-buffers-of.patch b/debian/patches/util-try-harder-to-increase-the-send-recv-buffers-of.patch
new file mode 100644 (file)
index 0000000..c9655da
--- /dev/null
@@ -0,0 +1,61 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 16 Dec 2013 17:04:36 +0100
+Subject: util: try harder to increase the send/recv buffers of sockets
+
+If we have the priviliges we will try SO_SNDBUFFORCE/SO_RCVBUFFORCE and
+only fall back to SO_SNDBUF/SO_RCVBUF if that fails.
+
+(cherry picked from commit 92d75ca419994f3924dc14117b71f8706d9e1f57)
+---
+ src/shared/util.c | 25 ++++++++++++-------------
+ 1 file changed, 12 insertions(+), 13 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 02bae90..8824b9b 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -4928,15 +4928,15 @@ int fd_inc_sndbuf(int fd, size_t n) {
+         socklen_t l = sizeof(value);
+         r = getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, &l);
+-        if (r >= 0 &&
+-            l == sizeof(value) &&
+-            (size_t) value >= n*2)
++        if (r >= 0 && l == sizeof(value) && (size_t) value >= n*2)
+                 return 0;
++        /* If we have the privileges we will ignore the kernel limit. */
++
+         value = (int) n;
+-        r = setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, sizeof(value));
+-        if (r < 0)
+-                return -errno;
++        if (setsockopt(fd, SOL_SOCKET, SO_SNDBUFFORCE, &value, sizeof(value)) < 0)
++                if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &value, sizeof(value)) < 0)
++                        return -errno;
+         return 1;
+ }
+@@ -4946,16 +4946,15 @@ int fd_inc_rcvbuf(int fd, size_t n) {
+         socklen_t l = sizeof(value);
+         r = getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, &l);
+-        if (r >= 0 &&
+-            l == sizeof(value) &&
+-            (size_t) value >= n*2)
++        if (r >= 0 && l == sizeof(value) && (size_t) value >= n*2)
+                 return 0;
+-        value = (int) n;
+-        r = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, sizeof(value));
+-        if (r < 0)
+-                return -errno;
++        /* If we have the privileges we will ignore the kernel limit. */
++        value = (int) n;
++        if (setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &value, sizeof(value)) < 0)
++                if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &value, sizeof(value)) < 0)
++                        return -errno;
+         return 1;
+ }
diff --git a/debian/patches/util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch b/debian/patches/util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
new file mode 100644 (file)
index 0000000..44c007f
--- /dev/null
@@ -0,0 +1,26 @@
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sat, 30 Nov 2013 23:45:31 +0100
+Subject: util.c: check if return value from ttyname_r is > 0 instead of != 0
+
+We must return a negative error code from getttyname_malloc but
+that would not be the case if ttyname_r returned a negative value.
+
+ttyname_r should only return EBADF, ENOTTY, or ERANGE so it should
+be safe to change.
+---
+ src/shared/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 3fc080a..1510c5e 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -2561,7 +2561,7 @@ int getttyname_malloc(int fd, char **r) {
+         assert(r);
+         k = ttyname_r(fd, path, sizeof(path));
+-        if (k != 0)
++        if (k > 0)
+                 return -k;
+         char_array_0(path);
diff --git a/debian/patches/utils-silence-the-compiler-warning.patch b/debian/patches/utils-silence-the-compiler-warning.patch
new file mode 100644 (file)
index 0000000..269ca99
--- /dev/null
@@ -0,0 +1,21 @@
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 10 Feb 2014 15:41:47 +0100
+Subject: utils: silence the compiler warning
+
+---
+ src/shared/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 52451f9..7500779 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -427,7 +427,7 @@ char *split_quoted(const char *c, size_t *l, char **state) {
+                 *state = (char*) e;
+         }
+-        return current;
++        return (char *) current;
+ }
+ int get_parent_of_pid(pid_t pid, pid_t *_ppid) {
diff --git a/debian/patches/valgrind-make-running-PID-1-in-valgrind-useful.patch b/debian/patches/valgrind-make-running-PID-1-in-valgrind-useful.patch
new file mode 100644 (file)
index 0000000..8894f07
--- /dev/null
@@ -0,0 +1,58 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 20 Nov 2013 22:11:10 +0100
+Subject: valgrind: make running PID 1 in valgrind useful
+
+Since valgrind only generates useful output on exit() (rather than
+exec()) we need to explicitly exit when valgrind is detected.
+
+Conflicts:
+       src/core/main.c
+---
+ configure.ac    |  2 +-
+ src/core/main.c | 13 +++++++++++++
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9904e25..6232cf8 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -814,7 +814,7 @@ AC_DEFINE_UNQUOTED(TELINIT, ["$TELINIT"], [Path to telinit])
+ AC_SUBST(TELINIT)
+-AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h])
++AC_CHECK_HEADERS_ONCE([valgrind/memcheck.h valgrind/valgrind.h])
+ # ------------------------------------------------------------------------------
+ have_myhostname=no
+diff --git a/src/core/main.c b/src/core/main.c
+index 00fd394..58c3a9e 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -34,6 +34,10 @@
+ #include <sys/prctl.h>
+ #include <sys/mount.h>
++#ifdef HAVE_VALGRIND_VALGRIND_H
++#include <valgrind/valgrind.h>
++#endif
++
+ #include "manager.h"
+ #include "log.h"
+ #include "load-fragment.h"
+@@ -1855,6 +1859,15 @@ finish:
+         if (fds)
+                 fdset_free(fds);
++#ifdef HAVE_VALGRIND_VALGRIND_H
++        /* If we are PID 1 and running under valgrind, then let's exit
++         * here explicitly. valgrind will only generate nice output on
++         * exit(), not on exec(), hence let's do the former not the
++         * latter here. */
++        if (getpid() == 1 && RUNNING_ON_VALGRIND)
++                return 0;
++#endif
++
+         if (shutdown_verb) {
+                 const char * command_line[] = {
+                         SYSTEMD_SHUTDOWN_BINARY_PATH,
diff --git a/debian/patches/virt-move-caching-of-virtualization-check-results-in.patch b/debian/patches/virt-move-caching-of-virtualization-check-results-in.patch
new file mode 100644 (file)
index 0000000..24f5830
--- /dev/null
@@ -0,0 +1,297 @@
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 31 Oct 2013 16:23:06 +0100
+Subject: virt: move caching of virtualization check results into detect_vm()
+ and detect_container()
+
+After all, we ended up calling detect_container() more often than
+detect_virtualization(), hence the former one should cache the results,
+since the latter is only a wrapper around the former.
+---
+ src/detect-virt/detect-virt.c |   2 +-
+ src/shared/virt.c             | 180 ++++++++++++++++++++----------------------
+ 2 files changed, 87 insertions(+), 95 deletions(-)
+
+diff --git a/src/detect-virt/detect-virt.c b/src/detect-virt/detect-virt.c
+index bd3ee45..72ff2a8 100644
+--- a/src/detect-virt/detect-virt.c
++++ b/src/detect-virt/detect-virt.c
+@@ -114,8 +114,8 @@ static int parse_argv(int argc, char *argv[]) {
+ int main(int argc, char *argv[]) {
+         const char *id = NULL;
+-        int r;
+         int retval = EXIT_SUCCESS;
++        int r;
+         /* This is mostly intended to be used for scripts which want
+          * to detect whether we are being run in a virtualized
+diff --git a/src/shared/virt.c b/src/shared/virt.c
+index 4f8134a..537ccda 100644
+--- a/src/shared/virt.c
++++ b/src/shared/virt.c
+@@ -60,6 +60,9 @@ int detect_vm(const char **id) {
+                 /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */
+                 "Microsoft Hv\0"          "microsoft\0";
++        static __thread int cached_found = -1;
++        static __thread const char *cached_id = NULL;
++
+         uint32_t eax, ecx;
+         union {
+                 uint32_t sig32[3];
+@@ -69,6 +72,15 @@ int detect_vm(const char **id) {
+         const char *j, *k;
+         bool hypervisor;
+         _cleanup_free_ char *hvtype = NULL;
++        const char *_id = NULL;
++
++        if (_likely_(cached_found >= 0)) {
++
++                if (id)
++                        *id = cached_id;
++
++                return cached_found;
++        }
+         /* Try high-level hypervisor sysfs file first:
+          *
+@@ -76,10 +88,9 @@ int detect_vm(const char **id) {
+         r = read_one_line_file("/sys/hypervisor/type", &hvtype);
+         if (r >= 0) {
+                 if (streq(hvtype, "xen")) {
+-                        if (id)
+-                                *id = "xen";
+-
+-                        return 1;
++                        _id = "xen";
++                        r = 1;
++                        goto finish;
+                 }
+         } else if (r != -ENOENT)
+                 return r;
+@@ -125,17 +136,14 @@ int detect_vm(const char **id) {
+                 NULSTR_FOREACH_PAIR(j, k, cpuid_vendor_table)
+                         if (streq(sig.text, j)) {
+-
+-                                if (id)
+-                                        *id = k;
+-
+-                                return 1;
++                                _id = k;
++                                r = 1;
++                                goto finish;
+                         }
+         }
+         for (i = 0; i < ELEMENTSOF(dmi_vendors); i++) {
+                 _cleanup_free_ char *s = NULL;
+-                const char *found = NULL;
+                 r = read_one_line_file(dmi_vendors[i], &s);
+                 if (r < 0) {
+@@ -146,22 +154,17 @@ int detect_vm(const char **id) {
+                 }
+                 NULSTR_FOREACH_PAIR(j, k, dmi_vendor_table)
+-                        if (startswith(s, j))
+-                                found = k;
+-
+-                if (found) {
+-                        if (id)
+-                                *id = found;
+-
+-                        return 1;
+-                }
++                        if (startswith(s, j)) {
++                                _id = k;
++                                r = 1;
++                                goto finish;
++                        }
+         }
+         if (hypervisor || hvtype) {
+-                if (id)
+-                        *id = "other";
+-
+-                return 1;
++                _id = "other";
++                r = 1;
++                goto finish;
+         }
+ #endif
+@@ -171,17 +174,40 @@ int detect_vm(const char **id) {
+         if (r < 0)
+                 return r;
+         if (strstr(cpuinfo_contents, "\nvendor_id\t: User Mode Linux\n")) {
+-                *id = "uml";
+-                return 1;
++                _id = "uml";
++                r = 1;
++                goto finish;
+         }
+-        return 0;
++        r = 0;
++
++finish:
++        cached_found = r;
++
++        cached_id = _id;
++        if (id)
++                *id = _id;
++
++        return r;
+ }
+ int detect_container(const char **id) {
++
++        static __thread int cached_found = -1;
++        static __thread const char *cached_id = NULL;
++
+         _cleanup_free_ char *e = NULL;
++        const char *_id = NULL;
+         int r;
++        if (_likely_(cached_found >= 0)) {
++
++                if (id)
++                        *id = cached_id;
++
++                return cached_found;
++        }
++
+         /* Unfortunately many of these operations require root access
+          * in one way or another */
+@@ -189,95 +215,61 @@ int detect_container(const char **id) {
+         if (r < 0)
+                 return r;
+         if (r > 0) {
+-
+-                if (id)
+-                        *id = "chroot";
+-
+-                return 1;
++                _id = "chroot";
++                goto finish;
+         }
+         /* /proc/vz exists in container and outside of the container,
+          * /proc/bc only outside of the container. */
+         if (access("/proc/vz", F_OK) >= 0 &&
+             access("/proc/bc", F_OK) < 0) {
+-
+-                if (id)
+-                        *id = "openvz";
+-
+-                return 1;
++                _id = "openvz";
++                r = 1;
++                goto finish;
+         }
+         r = getenv_for_pid(1, "container", &e);
+-        if (r <= 0)
++        if (r < 0)
+                 return r;
++        if (r == 0)
++                goto finish;
+         /* We only recognize a selected few here, since we want to
+          * enforce a redacted namespace */
+-        if (streq(e, "lxc")) {
+-                if (id)
+-                        *id = "lxc";
+-        } else if (streq(e, "lxc-libvirt")) {
+-                if (id)
+-                        *id = "lxc-libvirt";
+-        } else if (streq(e, "systemd-nspawn")) {
+-                if (id)
+-                        *id = "systemd-nspawn";
+-        } else {
+-                if (id)
+-                        *id = "other";
+-        }
++        if (streq(e, "lxc"))
++                _id ="lxc";
++        else if (streq(e, "lxc-libvirt"))
++                _id = "lxc-libvirt";
++        else if (streq(e, "systemd-nspawn"))
++                _id = "systemd-nspawn";
++        else
++                _id = "other";
++
++finish:
++        cached_found = r;
++
++        cached_id = _id;
++        if (id)
++                *id = _id;
+         return r;
+ }
+ /* Returns a short identifier for the various VM/container implementations */
+ Virtualization detect_virtualization(const char **id) {
+-
+-        static __thread Virtualization cached_virt = _VIRTUALIZATION_INVALID;
+-        static __thread const char *cached_id = NULL;
+-
+-        const char *_id;
+         int r;
+-        Virtualization v;
+-
+-        if (_likely_(cached_virt >= 0)) {
+-
+-                if (id && cached_virt > 0)
+-                        *id = cached_id;
+-                return cached_virt;
+-        }
+-
+-        r = detect_container(&_id);
+-        if (r < 0) {
+-                v = r;
+-                goto finish;
+-        } else if (r > 0) {
+-                v = VIRTUALIZATION_CONTAINER;
+-                goto finish;
+-        }
+-
+-        r = detect_vm(&_id);
+-        if (r < 0) {
+-                v = r;
+-                goto finish;
+-        } else if (r > 0) {
+-                v = VIRTUALIZATION_VM;
+-                goto finish;
+-        }
+-
+-        v = VIRTUALIZATION_NONE;
+-
+-finish:
+-        if (v > 0) {
+-                cached_id = _id;
+-
+-                if (id)
+-                        *id = _id;
+-        }
++        r = detect_container(id);
++        if (r < 0)
++                return r;
++        if (r > 0)
++                return VIRTUALIZATION_CONTAINER;
+-        if (v >= 0)
+-                cached_virt = v;
++        r = detect_vm(id);
++        if (r < 0)
++                return r;
++        if (r > 0)
++                return VIRTUALIZATION_VM;
+-        return v;
++        return VIRTUALIZATION_NONE;
+ }
diff --git a/debian/patches/virt-split-detect_vm-into-separate-functions.patch b/debian/patches/virt-split-detect_vm-into-separate-functions.patch
new file mode 100644 (file)
index 0000000..f773e9a
--- /dev/null
@@ -0,0 +1,204 @@
+From: =?utf-8?q?Zbigniew_J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 28 Nov 2013 13:34:08 -0500
+Subject: virt: split detect_vm into separate functions
+
+It didn't build on arm. Let's simplify it a bit by
+splitting x86 specific parts out, which should also make
+things easier when arm virtualization support is added.
+---
+ src/shared/virt.c | 140 +++++++++++++++++++++++++++++++-----------------------
+ 1 file changed, 81 insertions(+), 59 deletions(-)
+
+diff --git a/src/shared/virt.c b/src/shared/virt.c
+index 537ccda..4e18638 100644
+--- a/src/shared/virt.c
++++ b/src/shared/virt.c
+@@ -27,30 +27,10 @@
+ #include "virt.h"
+ #include "fileio.h"
+-/* Returns a short identifier for the various VM implementations */
+-int detect_vm(const char **id) {
+-        _cleanup_free_ char *cpuinfo_contents = NULL;
+-        int r;
+-
+-#if defined(__i386__) || defined(__x86_64__)
++static int detect_vm_cpuid(const char **_id) {
+         /* Both CPUID and DMI are x86 specific interfaces... */
+-
+-        static const char *const dmi_vendors[] = {
+-                "/sys/class/dmi/id/sys_vendor",
+-                "/sys/class/dmi/id/board_vendor",
+-                "/sys/class/dmi/id/bios_vendor"
+-        };
+-
+-        static const char dmi_vendor_table[] =
+-                "QEMU\0"                  "qemu\0"
+-                /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
+-                "VMware\0"                "vmware\0"
+-                "VMW\0"                   "vmware\0"
+-                "Microsoft Corporation\0" "microsoft\0"
+-                "innotek GmbH\0"          "oracle\0"
+-                "Xen\0"                   "xen\0"
+-                "Bochs\0"                 "bochs\0";
++#if defined(__i386__) || defined(__x86_64__)
+         static const char cpuid_vendor_table[] =
+                 "XenVMMXenVMM\0"          "xen\0"
+@@ -60,40 +40,13 @@ int detect_vm(const char **id) {
+                 /* http://msdn.microsoft.com/en-us/library/ff542428.aspx */
+                 "Microsoft Hv\0"          "microsoft\0";
+-        static __thread int cached_found = -1;
+-        static __thread const char *cached_id = NULL;
+-
+         uint32_t eax, ecx;
+         union {
+                 uint32_t sig32[3];
+                 char text[13];
+         } sig = {};
+-        unsigned i;
+         const char *j, *k;
+         bool hypervisor;
+-        _cleanup_free_ char *hvtype = NULL;
+-        const char *_id = NULL;
+-
+-        if (_likely_(cached_found >= 0)) {
+-
+-                if (id)
+-                        *id = cached_id;
+-
+-                return cached_found;
+-        }
+-
+-        /* Try high-level hypervisor sysfs file first:
+-         *
+-         * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */
+-        r = read_one_line_file("/sys/hypervisor/type", &hvtype);
+-        if (r >= 0) {
+-                if (streq(hvtype, "xen")) {
+-                        _id = "xen";
+-                        r = 1;
+-                        goto finish;
+-                }
+-        } else if (r != -ENOENT)
+-                return r;
+         /* http://lwn.net/Articles/301888/ */
+@@ -136,14 +89,44 @@ int detect_vm(const char **id) {
+                 NULSTR_FOREACH_PAIR(j, k, cpuid_vendor_table)
+                         if (streq(sig.text, j)) {
+-                                _id = k;
+-                                r = 1;
+-                                goto finish;
++                                *_id = k;
++                                return 1;
+                         }
++
++                *_id = "other";
++                return 0;
+         }
++#endif
++
++        return 0;
++}
++
++static int detect_vm_dmi(const char **_id) {
++
++        /* Both CPUID and DMI are x86 specific interfaces... */
++#if defined(__i386__) || defined(__x86_64__)
++
++        static const char *const dmi_vendors[] = {
++                "/sys/class/dmi/id/sys_vendor",
++                "/sys/class/dmi/id/board_vendor",
++                "/sys/class/dmi/id/bios_vendor"
++        };
++
++        static const char dmi_vendor_table[] =
++                "QEMU\0"                  "qemu\0"
++                /* http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1009458 */
++                "VMware\0"                "vmware\0"
++                "VMW\0"                   "vmware\0"
++                "Microsoft Corporation\0" "microsoft\0"
++                "innotek GmbH\0"          "oracle\0"
++                "Xen\0"                   "xen\0"
++                "Bochs\0"                 "bochs\0";
++        unsigned i;
+         for (i = 0; i < ELEMENTSOF(dmi_vendors); i++) {
+                 _cleanup_free_ char *s = NULL;
++                const char *j, *k;
++                int r;
+                 r = read_one_line_file(dmi_vendors[i], &s);
+                 if (r < 0) {
+@@ -155,20 +138,59 @@ int detect_vm(const char **id) {
+                 NULSTR_FOREACH_PAIR(j, k, dmi_vendor_table)
+                         if (startswith(s, j)) {
+-                                _id = k;
+-                                r = 1;
+-                                goto finish;
++                                *_id = k;
++                                return 1;
+                         }
+         }
++#endif
+-        if (hypervisor || hvtype) {
+-                _id = "other";
++        return 0;
++}
++
++/* Returns a short identifier for the various VM implementations */
++int detect_vm(const char **id) {
++        _cleanup_free_ char *hvtype = NULL, *cpuinfo_contents = NULL;
++        static __thread int cached_found = -1;
++        static __thread const char *cached_id = NULL;
++        const char *_id = NULL;
++        int r;
++
++        if (_likely_(cached_found >= 0)) {
++
++                if (id)
++                        *id = cached_id;
++
++                return cached_found;
++        }
++
++        /* Try high-level hypervisor sysfs file first:
++         *
++         * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */
++        r = read_one_line_file("/sys/hypervisor/type", &hvtype);
++        if (r >= 0) {
++                if (streq(hvtype, "xen")) {
++                        _id = "xen";
++                        r = 1;
++                        goto finish;
++                }
++        } else if (r != -ENOENT)
++                return r;
++
++        /* this will set _id to "other" and return 0 for unknown hypervisors */
++        r = detect_vm_cpuid(&_id);
++        if (r != 0)
++                goto finish;
++
++        r = detect_vm_dmi(&_id);
++        if (r != 0)
++                goto finish;
++
++        if (_id) {
++                /* "other" */
+                 r = 1;
+                 goto finish;
+         }
+-#endif
+-
+         /* Detect User-Mode Linux by reading /proc/cpuinfo */
+         r = read_full_file("/proc/cpuinfo", &cpuinfo_contents, NULL);
+         if (r < 0)
diff --git a/debian/patches/zsh-completion-add-bootctl.patch b/debian/patches/zsh-completion-add-bootctl.patch
new file mode 100644 (file)
index 0000000..f764a0e
--- /dev/null
@@ -0,0 +1,56 @@
+From: Marko Myllynen <myllynen@redhat.com>
+Date: Wed, 13 Nov 2013 23:02:23 -0500
+Subject: zsh-completion: add bootctl
+
+---
+ Makefile.am                   |  4 ++++
+ shell-completion/zsh/_bootctl | 25 +++++++++++++++++++++++++
+ 2 files changed, 29 insertions(+)
+ create mode 100644 shell-completion/zsh/_bootctl
+
+diff --git a/Makefile.am b/Makefile.am
+index b4fc33b..efe5aa3 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1743,6 +1743,10 @@ bootctl_LDADD = \
+ bin_PROGRAMS += \
+       bootctl
++
++dist_zshcompletion_DATA += \
++      shell-completion/zsh/_bootctl
++
+ endif
+ # ------------------------------------------------------------------------------
+diff --git a/shell-completion/zsh/_bootctl b/shell-completion/zsh/_bootctl
+new file mode 100644
+index 0000000..7d2453c
+--- /dev/null
++++ b/shell-completion/zsh/_bootctl
+@@ -0,0 +1,25 @@
++#compdef bootctl
++
++(( $+functions[_bootctl_command] )) || _bootctl_command()
++{
++    local -a _bootctl_cmds
++    _bootctl_cmds=(
++        "status:Show current firmware and boot settings"
++    )
++    if (( CURRENT == 1 )); then
++        _describe -t commands 'bootctl command' _bootctl_cmds || compadd "$@"
++    else
++        local curcontext="$curcontext"
++        cmd="${${_bootctl_cmds[(r)$words[1]:*]%%:*}}"
++        if (( $+functions[_bootctl_$cmd] )); then
++            _bootctl_$cmd
++        else
++            _message "no more options"
++        fi
++    fi
++}
++
++_arguments \
++    {-h,--help}'[Prints a short help text and exits.]' \
++    '--version[Prints a short version string and exits.]' \
++    '*::bootctl command:_bootctl_command'
diff --git a/debian/patches/zsh-completion-add-systemd-run.patch b/debian/patches/zsh-completion-add-systemd-run.patch
new file mode 100644 (file)
index 0000000..16f1d11
--- /dev/null
@@ -0,0 +1,59 @@
+From: Ronny Chevalier <chevalier.ronny@gmail.com>
+Date: Wed, 30 Oct 2013 21:57:44 +0100
+Subject: zsh-completion: add systemd-run
+
+---
+ Makefile.am                       |  1 +
+ shell-completion/zsh/_systemd-run | 31 +++++++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+)
+ create mode 100644 shell-completion/zsh/_systemd-run
+
+diff --git a/Makefile.am b/Makefile.am
+index 5e3e5d2..7ab345a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -352,6 +352,7 @@ dist_zshcompletion_DATA = \
+       shell-completion/zsh/_kernel-install \
+       shell-completion/zsh/_systemd-nspawn \
+       shell-completion/zsh/_systemd-analyze \
++      shell-completion/zsh/_systemd-run \
+       shell-completion/zsh/_sd_hosts_or_user_at_host \
+       shell-completion/zsh/_systemd-delta \
+       shell-completion/zsh/_systemd
+diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run
+new file mode 100644
+index 0000000..0c81c54
+--- /dev/null
++++ b/shell-completion/zsh/_systemd-run
+@@ -0,0 +1,31 @@
++#compdef systemd-run
++
++__systemctl() {
++        local -a _modes
++        _modes=("--user" "--system")
++        systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null
++}
++
++__get_slices () {
++        __systemctl list-units --all -t slice \
++        | { while read -r a b; do echo $a; done; };
++}
++
++__slices () {
++        local -a _slices
++        _slices=(${(fo)"$(__get_slices)"})
++        typeset -U _slices
++        _describe 'slices' _slices
++}
++
++_arguments \
++        {-h,--help}'[Show help message]' \
++        '--version[Show package version]' \
++        '--user[Run as user unit]' \
++        '--scope[Run this as scope rather than service]' \
++        '--unit=[Run under the specified unit name]:unit name' \
++        '--description=[Description for unit]:description' \
++        '--slice=[Run in the specified slice]:slices:__slices' \
++        {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \
++        '--send-sighup[Send SIGHUP when terminating]' \
++        '*::command:_command'
diff --git a/debian/patches/zsh-completions-kernel-install-only-show-existing-ke.patch b/debian/patches/zsh-completions-kernel-install-only-show-existing-ke.patch
new file mode 100644 (file)
index 0000000..4057fa9
--- /dev/null
@@ -0,0 +1,25 @@
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 6 Feb 2014 18:15:47 +0100
+Subject: zsh-completions: kernel-install - only show existing kernels for
+ 'remove'
+
+When we remove a kernel, we don't remove the modules, so don't look at the modules directory to find installed kernels.
+
+(cherry picked from commit d72143bad46b51fc0bbedf01ff92aea8b07afac6)
+---
+ shell-completion/zsh/_kernel-install | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install
+index 0655188..4fdd3a4 100644
+--- a/shell-completion/zsh/_kernel-install
++++ b/shell-completion/zsh/_kernel-install
+@@ -12,7 +12,7 @@ _kernels(){
+     read _MACHINE_ID < /etc/machine-id
+     _kernel=( /lib/modules/[0-9]* )
+     if [[ "$cmd" == "remove" && -n "$_MACHINE_ID" ]]; then
+-        _kernel=( /lib/modules/[0-9]* "/boot/$_MACHINE_ID"/[0-9]* )
++        _kernel=( "/boot/$_MACHINE_ID"/[0-9]* )
+     fi
+     _kernel=( ${_kernel##*/} )
+     _describe "installed kernels" _kernel