diff --git a/0327-core-introduce-new-stop-protocol-for-unit-scopes.patch b/0327-core-introduce-new-stop-protocol-for-unit-scopes.patch new file mode 100644 index 0000000..d3b2514 --- /dev/null +++ b/0327-core-introduce-new-stop-protocol-for-unit-scopes.patch @@ -0,0 +1,265 @@ +From 151079d27da70b27845569fce5856dfada8fd467 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Thu, 27 Feb 2014 17:56:16 +0100 +Subject: [PATCH] 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 \ + " \n" \ + BUS_UNIT_CGROUP_INTERFACE \ ++ " \n"\ + " \n" \ + BUS_KILL_CONTEXT_INTERFACE \ + BUS_CGROUP_CONTEXT_INTERFACE \ + " \n" \ ++ " \n" \ + " \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/0328-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch b/0328-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch new file mode 100644 index 0000000..4214b10 --- /dev/null +++ b/0328-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch @@ -0,0 +1,716 @@ +From d9eb14931b12ded622f5aa4bd547e6075d10100f Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Thu, 27 Feb 2014 18:16:19 +0100 +Subject: [PATCH] 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 \ + " \n" \ ++ " \n" \ + BUS_UNIT_CGROUP_INTERFACE \ + " \n"\ + " \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/0329-logind-rework-session-shutdown-logic.patch b/0329-logind-rework-session-shutdown-logic.patch new file mode 100644 index 0000000..7e102b8 --- /dev/null +++ b/0329-logind-rework-session-shutdown-logic.patch @@ -0,0 +1,597 @@ +From 634acdc887a967039233e40b96e4f6ff79f86b72 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 3 Mar 2014 15:37:49 +0100 +Subject: [PATCH] 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 + #include + #include ++#include + + #include + #include +@@ -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/0330-logind-order-all-scopes-after-both-systemd-logind.se.patch b/0330-logind-order-all-scopes-after-both-systemd-logind.se.patch new file mode 100644 index 0000000..eff810e --- /dev/null +++ b/0330-logind-order-all-scopes-after-both-systemd-logind.se.patch @@ -0,0 +1,87 @@ +From 1a6dce07f96e63891db22c10acf5b0edc5c4dc81 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 3 Mar 2014 16:07:39 +0100 +Subject: [PATCH] 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/0331-logind-given-that-we-can-now-relatively-safely-shutd.patch b/0331-logind-given-that-we-can-now-relatively-safely-shutd.patch new file mode 100644 index 0000000..3c8931e --- /dev/null +++ b/0331-logind-given-that-we-can-now-relatively-safely-shutd.patch @@ -0,0 +1,43 @@ +From a0ef58e3e421909661c615ee6b067a9c2cd9f955 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 4 Mar 2014 17:00:54 +0100 +Subject: [PATCH] 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/0332-logind-fix-reference-to-systemd-user-sessions.servic.patch b/0332-logind-fix-reference-to-systemd-user-sessions.servic.patch new file mode 100644 index 0000000..ef47801 --- /dev/null +++ b/0332-logind-fix-reference-to-systemd-user-sessions.servic.patch @@ -0,0 +1,22 @@ +From e6e2819b162ae890c680679e6311c70d509d07d1 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 10 Mar 2014 17:47:35 +0100 +Subject: [PATCH] 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/0333-logind-add-forgotten-call-to-user_send_changed.patch b/0333-logind-add-forgotten-call-to-user_send_changed.patch new file mode 100644 index 0000000..4901db7 --- /dev/null +++ b/0333-logind-add-forgotten-call-to-user_send_changed.patch @@ -0,0 +1,21 @@ +From a1ff5dcf1d82433f6a660f0c1ae66f786e2133a6 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 10 Mar 2014 18:11:45 +0100 +Subject: [PATCH] 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/0334-logind-save-session-after-setting-the-stopping-flag.patch b/0334-logind-save-session-after-setting-the-stopping-flag.patch new file mode 100644 index 0000000..902ddfa --- /dev/null +++ b/0334-logind-save-session-after-setting-the-stopping-flag.patch @@ -0,0 +1,25 @@ +From 708bc5bfd86b87c3ab086c5b00a32885728a8155 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 10 Mar 2014 18:22:55 +0100 +Subject: [PATCH] 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/0335-logind-save-user-state-after-stopping-the-session.patch b/0335-logind-save-user-state-after-stopping-the-session.patch new file mode 100644 index 0000000..2cea353 --- /dev/null +++ b/0335-logind-save-user-state-after-stopping-the-session.patch @@ -0,0 +1,22 @@ +From 930bd712d867e77611f911991b2d55f1cbce92f0 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Mon, 10 Mar 2014 18:26:34 +0100 +Subject: [PATCH] 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/0336-logind-initialize-timer_fd.patch b/0336-logind-initialize-timer_fd.patch new file mode 100644 index 0000000..70b769f --- /dev/null +++ b/0336-logind-initialize-timer_fd.patch @@ -0,0 +1,21 @@ +From 8d29b9bc8fa8b1d74c20810d5817b33bab8529ee Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 11 Mar 2014 13:26:38 +0100 +Subject: [PATCH] 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/0337-logind-pass-pointer-to-User-object-to-user_save.patch b/0337-logind-pass-pointer-to-User-object-to-user_save.patch new file mode 100644 index 0000000..b674c51 --- /dev/null +++ b/0337-logind-pass-pointer-to-User-object-to-user_save.patch @@ -0,0 +1,22 @@ +From 17716265ca42e2a5a72bebd9f87d22be1f0ee931 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Tue, 11 Mar 2014 20:42:42 +0100 +Subject: [PATCH] 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/0338-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch b/0338-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch new file mode 100644 index 0000000..af32f16 --- /dev/null +++ b/0338-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch @@ -0,0 +1,360 @@ +From 39c82bc4ed40b4ce20f85559afc67ad16459cef5 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Fri, 7 Feb 2014 11:58:25 +0100 +Subject: [PATCH] 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/0339-core-correctly-unregister-PIDs-from-PID-hashtables.patch b/0339-core-correctly-unregister-PIDs-from-PID-hashtables.patch new file mode 100644 index 0000000..a40492b --- /dev/null +++ b/0339-core-correctly-unregister-PIDs-from-PID-hashtables.patch @@ -0,0 +1,97 @@ +From ba421b96a473a4e608c2b1d01d3bb3dfe36c23a6 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 6 Mar 2014 02:19:42 +0100 +Subject: [PATCH] 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/0340-logind-uninitialized-timer_fd-is-set-to-1.patch b/0340-logind-uninitialized-timer_fd-is-set-to-1.patch new file mode 100644 index 0000000..03b3f0c --- /dev/null +++ b/0340-logind-uninitialized-timer_fd-is-set-to-1.patch @@ -0,0 +1,22 @@ +From 5cadb261e83dbc70fd42095e78c5862dac09dc65 Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Thu, 13 Mar 2014 11:16:36 +0100 +Subject: [PATCH] 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/0341-logind-add-forgotten-return-statement.patch b/0341-logind-add-forgotten-return-statement.patch new file mode 100644 index 0000000..d5dc51e --- /dev/null +++ b/0341-logind-add-forgotten-return-statement.patch @@ -0,0 +1,22 @@ +From 495d57fb7487f29965a712acdc21f96273aa5c1d Mon Sep 17 00:00:00 2001 +From: Michal Sekletar +Date: Thu, 13 Mar 2014 11:18:27 +0100 +Subject: [PATCH] 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/0342-core-fix-detection-of-dead-processes.patch b/0342-core-fix-detection-of-dead-processes.patch new file mode 100644 index 0000000..fb2bd76 --- /dev/null +++ b/0342-core-fix-detection-of-dead-processes.patch @@ -0,0 +1,87 @@ +From 0ab7a0e4655fd1108fa3abc994f816a22073abc6 Mon Sep 17 00:00:00 2001 +From: Yuxuan Shui +Date: Sat, 15 Feb 2014 02:38:50 +0800 +Subject: [PATCH] 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/0343-Fix-prototype-of-get_process_state.patch b/0343-Fix-prototype-of-get_process_state.patch new file mode 100644 index 0000000..b19c70c --- /dev/null +++ b/0343-Fix-prototype-of-get_process_state.patch @@ -0,0 +1,22 @@ +From a4157894c590dc1a976449271be4b6faecf22a28 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 14 Feb 2014 23:04:50 -0500 +Subject: [PATCH] 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/0344-core-check-for-return-value-from-get_process_state.patch b/0344-core-check-for-return-value-from-get_process_state.patch new file mode 100644 index 0000000..c7ed60a --- /dev/null +++ b/0344-core-check-for-return-value-from-get_process_state.patch @@ -0,0 +1,35 @@ +From 4372855b7871dd4f639d0e5fca86eff0d38aeb18 Mon Sep 17 00:00:00 2001 +From: Yuxuan Shui +Date: Sat, 15 Feb 2014 13:20:55 +0800 +Subject: [PATCH] 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/0345-man-update-link-to-LSB.patch b/0345-man-update-link-to-LSB.patch new file mode 100644 index 0000000..91996c8 --- /dev/null +++ b/0345-man-update-link-to-LSB.patch @@ -0,0 +1,34 @@ +From c090a62ceac2d3ea9f02b46f448a0ae59abd0a23 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 6 Mar 2014 08:10:19 -0500 +Subject: [PATCH] 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 LSB ++ url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB + recommendations for SysV init + scripts. + +@@ -395,7 +395,7 @@ + exclusively on boot (and manually by the + administrator) via SysV init scripts, as + detailed in the LSB ++ url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB + Linux Standard Base Core + Specification. This method of + activation is supported ubiquitously on Linux diff --git a/0346-man-systemd-bootchart-fix-spacing-in-command.patch b/0346-man-systemd-bootchart-fix-spacing-in-command.patch new file mode 100644 index 0000000..8adac11 --- /dev/null +++ b/0346-man-systemd-bootchart-fix-spacing-in-command.patch @@ -0,0 +1,28 @@ +From de4a6f8bf8bc73124129371307dd244404aa992e Mon Sep 17 00:00:00 2001 +From: Zachary Cook +Date: Thu, 6 Mar 2014 03:49:49 -0500 +Subject: [PATCH] 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 systemd-analyze +- plot function. ++ the systemd-analyze plot ++ function. + + + Of course, bootchart can also be used at any diff --git a/0347-man-add-missing-comma.patch b/0347-man-add-missing-comma.patch new file mode 100644 index 0000000..705e498 --- /dev/null +++ b/0347-man-add-missing-comma.patch @@ -0,0 +1,26 @@ +From 4ccaa267522874b65595502d1e9afb498089524b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 6 Mar 2014 23:54:13 -0500 +Subject: [PATCH] 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 @@ + See Also + + udev7 +- ++ , + + systemd-udevd.service8 + diff --git a/0348-build-sys-Don-t-distribute-generated-udev-rule.patch b/0348-build-sys-Don-t-distribute-generated-udev-rule.patch new file mode 100644 index 0000000..51ae06a --- /dev/null +++ b/0348-build-sys-Don-t-distribute-generated-udev-rule.patch @@ -0,0 +1,39 @@ +From db970ea57e722e7c2ca683e402d7f6e26335eb95 Mon Sep 17 00:00:00 2001 +From: Armin K +Date: Tue, 4 Mar 2014 16:23:41 +0100 +Subject: [PATCH] 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/0349-units-Do-not-unescape-instance-name-in-systemd-backl.patch b/0349-units-Do-not-unescape-instance-name-in-systemd-backl.patch new file mode 100644 index 0000000..3bd1c5b --- /dev/null +++ b/0349-units-Do-not-unescape-instance-name-in-systemd-backl.patch @@ -0,0 +1,38 @@ +From 8b91df4b1157f08958e84b205f0d95822311a67d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Thomas=20B=C3=A4chler?= +Date: Fri, 7 Mar 2014 01:50:34 +0100 +Subject: [PATCH] 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/0350-util-add-timeout-to-generator-execution.patch b/0350-util-add-timeout-to-generator-execution.patch new file mode 100644 index 0000000..9375ae0 --- /dev/null +++ b/0350-util-add-timeout-to-generator-execution.patch @@ -0,0 +1,342 @@ +From 7bd1311e54a418b1532d3931b9af70f8aabf4ece Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Thu, 6 Mar 2014 02:19:06 +0100 +Subject: [PATCH] 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 + + #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 + #include + +-#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/0351-input_id-Recognize-buttonless-joystick-types.patch b/0351-input_id-Recognize-buttonless-joystick-types.patch new file mode 100644 index 0000000..392b03f --- /dev/null +++ b/0351-input_id-Recognize-buttonless-joystick-types.patch @@ -0,0 +1,54 @@ +From d57c6115e0aa3d04fea4c87c67ec455ffe5a0c75 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Mon, 10 Mar 2014 08:54:22 +0100 +Subject: [PATCH] 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/0352-logind-fix-policykit-checks.patch b/0352-logind-fix-policykit-checks.patch new file mode 100644 index 0000000..bd34592 --- /dev/null +++ b/0352-logind-fix-policykit-checks.patch @@ -0,0 +1,40 @@ +From 8878abc5e22b5bd9107e0f99d87660e114e3add9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 10 Mar 2014 08:25:15 -0400 +Subject: [PATCH] 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/0353-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch b/0353-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch new file mode 100644 index 0000000..912422c --- /dev/null +++ b/0353-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch @@ -0,0 +1,77 @@ +From 68c2e85c091cdf051b5cd8e769b5cfdd65f9d35f Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 10 Mar 2014 21:36:01 +0100 +Subject: [PATCH] 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/0354-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch b/0354-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch new file mode 100644 index 0000000..54d042d --- /dev/null +++ b/0354-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch @@ -0,0 +1,39 @@ +From cb0f609a277b1f110fe9d521590b59b65a1744b2 Mon Sep 17 00:00:00 2001 +From: Samuli Suominen +Date: Sat, 8 Mar 2014 09:49:29 +0200 +Subject: [PATCH] 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/0355-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch b/0355-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch new file mode 100644 index 0000000..7aa438b --- /dev/null +++ b/0355-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch @@ -0,0 +1,30 @@ +From 2522b82b1e3909fb63d1fcfc3d39d49475bacabd Mon Sep 17 00:00:00 2001 +From: Peter Rajnoha +Date: Mon, 10 Mar 2014 22:58:14 +0100 +Subject: [PATCH] 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/0356-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch b/0356-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch new file mode 100644 index 0000000..ed10e7e --- /dev/null +++ b/0356-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch @@ -0,0 +1,43 @@ +From d85784d471679c86cf9cc99da7a9a9604d809112 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 11 Mar 2014 05:23:39 +0100 +Subject: [PATCH] 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 . + systemd-suspend.service8, + systemd-hibernate.service8, or + systemd-hybrid-sleep.service8. +- 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. + +@@ -145,8 +145,8 @@ along with systemd; If not, see . + systemd-suspend.service8, + systemd-hibernate.service8, or + systemd-hybrid-sleep.service8. +- 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. + diff --git a/0357-man-fix-description-of-systemctl-after-before.patch b/0357-man-fix-description-of-systemctl-after-before.patch new file mode 100644 index 0000000..35caaa2 --- /dev/null +++ b/0357-man-fix-description-of-systemctl-after-before.patch @@ -0,0 +1,29 @@ +From 95e7995207f3450546c722ff41d2a8004ef8c0a6 Mon Sep 17 00:00:00 2001 +From: Andrey Borzenkov +Date: Fri, 21 Feb 2014 20:44:06 +0400 +Subject: [PATCH] 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 + + + +- Show which units are started after or before +- with list-dependencies, respectively. ++ Show after (before) which units the specified unit is started ++ with list-dependencies. + + + diff --git a/0358-udev-properly-detect-reference-to-unexisting-part-of.patch b/0358-udev-properly-detect-reference-to-unexisting-part-of.patch new file mode 100644 index 0000000..1062549 --- /dev/null +++ b/0358-udev-properly-detect-reference-to-unexisting-part-of.patch @@ -0,0 +1,25 @@ +From 7f102a597ca007e1e81757fe1762ba196f91e3ce Mon Sep 17 00:00:00 2001 +From: Lukas Nykryn +Date: Mon, 24 Feb 2014 17:06:21 +0100 +Subject: [PATCH] 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/0359-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0359-hwdb-Update-database-of-Bluetooth-company-identifier.patch new file mode 100644 index 0000000..7e57634 --- /dev/null +++ b/0359-hwdb-Update-database-of-Bluetooth-company-identifier.patch @@ -0,0 +1,31 @@ +From beecde3f3b7cd729ec499a158965e4f61bd64c7e Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Tue, 11 Mar 2014 09:33:31 -0700 +Subject: [PATCH] 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/0360-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch b/0360-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch new file mode 100644 index 0000000..a9151f7 --- /dev/null +++ b/0360-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch @@ -0,0 +1,24 @@ +From fcacd7a9edca0edee046197edc1423155336272b Mon Sep 17 00:00:00 2001 +From: Tomasz Torcz +Date: Wed, 12 Mar 2014 19:25:11 +0100 +Subject: [PATCH] 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/0361-man-improve-wording-of-systemctl-s-after-before.patch b/0361-man-improve-wording-of-systemctl-s-after-before.patch new file mode 100644 index 0000000..09ce1ea --- /dev/null +++ b/0361-man-improve-wording-of-systemctl-s-after-before.patch @@ -0,0 +1,55 @@ +From 9d3d73e42eab725dd8c30035211ef0fdfdac4f63 Mon Sep 17 00:00:00 2001 +From: "Jason St. John" +Date: Mon, 17 Mar 2014 00:03:46 -0400 +Subject: [PATCH] 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 +Reported-by: Lennart Poettering +(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 + + + ++ ++ ++ With list-dependencies, show the ++ units that are ordered before the specified unit. In other ++ words, list the units that are in the After= ++ directive of the specified unit, have the specified unit in ++ their Before= directive, or are otherwise ++ implicit dependencies of the specified unit. ++ ++ ++ ++ + + + +- Show after (before) which units the specified unit is started +- with list-dependencies. +- ++ With list-dependencies, show the ++ units that are ordered after the specified unit. In other ++ words, list the units that are in the Before= ++ directive of the specified unit, have the specified unit in ++ their After= directive, or otherwise depend ++ on the specified unit. + + + diff --git a/0362-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch b/0362-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch new file mode 100644 index 0000000..cbde087 --- /dev/null +++ b/0362-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch @@ -0,0 +1,79 @@ +From 3e10b60a4253a9915b4628a7fdf9fd6e35ecf5e8 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 18 Mar 2014 04:06:36 +0100 +Subject: [PATCH] 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/0363-hwdb-update.patch b/0363-hwdb-update.patch new file mode 100644 index 0000000..23fc284 --- /dev/null +++ b/0363-hwdb-update.patch @@ -0,0 +1,6589 @@ +From 527dcd7f37db786e8fe78140b91bcbdb8a54e5ad Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Tue, 18 Mar 2014 16:17:51 +0100 +Subject: [PATCH] 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/0364-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch b/0364-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch new file mode 100644 index 0000000..bee861a --- /dev/null +++ b/0364-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch @@ -0,0 +1,27 @@ +From 4940ee75b343be7f993c734dd8682ae791b083bb Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 24 Mar 2014 21:04:02 +0100 +Subject: [PATCH] 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/0365-man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch b/0365-man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch new file mode 100644 index 0000000..bacc426 --- /dev/null +++ b/0365-man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch @@ -0,0 +1,28 @@ +From e639faaa6f3fca2a8ac00c7bc3e28f8ef25fa39e Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 25 Mar 2014 00:10:41 +0100 +Subject: [PATCH] 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. ++ PID. (Note that the tag is ++ usually derived from glibc's ++ program_invocation_short_name ++ variable, see program_invocation_short_name3.) + + + diff --git a/0366-man-be-more-specific-when-EnvironmentFile-is-read.patch b/0366-man-be-more-specific-when-EnvironmentFile-is-read.patch new file mode 100644 index 0000000..20ceb6e --- /dev/null +++ b/0366-man-be-more-specific-when-EnvironmentFile-is-read.patch @@ -0,0 +1,34 @@ +From e3641a55147a3ecbfd068d8639ecbc1a3951c956 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 25 Mar 2014 00:26:09 +0100 +Subject: [PATCH] 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 @@ + + 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 + Environment=. If + the same variable is set twice from + these files, the files will be read in diff --git a/0367-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch b/0367-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch new file mode 100644 index 0000000..bc77cc3 --- /dev/null +++ b/0367-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch @@ -0,0 +1,52 @@ +From 3c993d002a52d9f6f7b919f094b6f979092bc76a Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 25 Mar 2014 00:31:48 +0100 +Subject: [PATCH] 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 + + Send a signal to one or more processes of the + unit. Use to select which +- process to kill. Use to select +- the kill mode and to select the +- signal to send. ++ process to kill. Use to select ++ the signal to send. + + + +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/0368-systemctl-add-more-verbose-explanation-of-kill-who-a.patch b/0368-systemctl-add-more-verbose-explanation-of-kill-who-a.patch new file mode 100644 index 0000000..3cb2841 --- /dev/null +++ b/0368-systemctl-add-more-verbose-explanation-of-kill-who-a.patch @@ -0,0 +1,58 @@ +From 9e33f349d489f24da7e1c93e85d826df8ad9ae5b Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 25 Mar 2014 00:51:22 +0100 +Subject: [PATCH] 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 + + + When used with kill, choose which +- processes to kill. Must be one of , +- or 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 . ++ processes to send a signal to. Must be one of ++ , or ++ 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 ++ ExecStartPre=, ++ ExecStop= or ++ ExecReload= 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 ++ Type=forking the initial process started ++ by the manager for ExecStart= 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 ExecStart= 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 ++ /usr/bin/mount and ++ /usr/bin/umount), but no main process ++ is defined. If omitted, defaults to ++ . + + + diff --git a/0369-ask-password-when-the-user-types-a-overly-long-passw.patch b/0369-ask-password-when-the-user-types-a-overly-long-passw.patch new file mode 100644 index 0000000..12d4536 --- /dev/null +++ b/0369-ask-password-when-the-user-types-a-overly-long-passw.patch @@ -0,0 +1,33 @@ +From 64ed5d7dde6c6e127f87606996159d52f641a9f4 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 25 Mar 2014 01:27:05 +0100 +Subject: [PATCH] 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/0370-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch b/0370-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch new file mode 100644 index 0000000..8a52525 --- /dev/null +++ b/0370-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch @@ -0,0 +1,37 @@ +From cdb65d497d3126f525ff290e762c2e8bf9ab766f Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 25 Mar 2014 01:46:24 +0100 +Subject: [PATCH] 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/0371-core-do-not-read-system-boot-timestamps-in-systemd-u.patch b/0371-core-do-not-read-system-boot-timestamps-in-systemd-u.patch new file mode 100644 index 0000000..b5392a2 --- /dev/null +++ b/0371-core-do-not-read-system-boot-timestamps-in-systemd-u.patch @@ -0,0 +1,33 @@ +From 9f9ec36552d2ad7700a781e1e84989cded24f416 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Wed, 26 Mar 2014 03:47:03 +0100 +Subject: [PATCH] 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/0372-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0372-hwdb-Update-database-of-Bluetooth-company-identifier.patch new file mode 100644 index 0000000..c57b6ed --- /dev/null +++ b/0372-hwdb-Update-database-of-Bluetooth-company-identifier.patch @@ -0,0 +1,37 @@ +From f024008d52ce1bfc5571c57e7f85a59243d1db64 Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Tue, 25 Mar 2014 20:21:23 -0700 +Subject: [PATCH] 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/0373-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch b/0373-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch new file mode 100644 index 0000000..a7730a2 --- /dev/null +++ b/0373-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch @@ -0,0 +1,30 @@ +From dfaf081b0a8d92b4efc0ce07c0e98f8d29324061 Mon Sep 17 00:00:00 2001 +From: Scott Thrasher +Date: Wed, 26 Mar 2014 18:48:13 -0700 +Subject: [PATCH] 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/0374-udev-do-not-export-static-node-tags-for-non-existing.patch b/0374-udev-do-not-export-static-node-tags-for-non-existing.patch new file mode 100644 index 0000000..8aecd97 --- /dev/null +++ b/0374-udev-do-not-export-static-node-tags-for-non-existing.patch @@ -0,0 +1,44 @@ +From 0312d87f70353a33f305602faef6c9248dfe87d1 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Wed, 2 Apr 2014 15:47:09 +0200 +Subject: [PATCH] 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/0375-journalctl-free-arg_file-on-exit.patch b/0375-journalctl-free-arg_file-on-exit.patch new file mode 100644 index 0000000..c44b086 --- /dev/null +++ b/0375-journalctl-free-arg_file-on-exit.patch @@ -0,0 +1,23 @@ +From d40007c72fd4de573dad54d2376a565a8406774a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 29 Mar 2014 11:58:32 -0400 +Subject: [PATCH] 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/0376-journal-fix-export-of-messages-containing-newlines.patch b/0376-journal-fix-export-of-messages-containing-newlines.patch new file mode 100644 index 0000000..10ec3f7 --- /dev/null +++ b/0376-journal-fix-export-of-messages-containing-newlines.patch @@ -0,0 +1,80 @@ +From 6d51d26faebae113af72d95913e2c864b4cade3f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 31 Mar 2014 08:57:28 -0400 +Subject: [PATCH] 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/0377-tty-ask-password-agent-return-negative-errno.patch b/0377-tty-ask-password-agent-return-negative-errno.patch new file mode 100644 index 0000000..d79d90b --- /dev/null +++ b/0377-tty-ask-password-agent-return-negative-errno.patch @@ -0,0 +1,28 @@ +From 00c99ae5a1709407bc167c47dfb717c656b6280c Mon Sep 17 00:00:00 2001 +From: Florian Albrechtskirchinger +Date: Thu, 3 Apr 2014 21:17:20 +0200 +Subject: [PATCH] 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 +(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/0378-systemd-python-use-.hex-instead-of-.get_hex.patch b/0378-systemd-python-use-.hex-instead-of-.get_hex.patch new file mode 100644 index 0000000..fed44a7 --- /dev/null +++ b/0378-systemd-python-use-.hex-instead-of-.get_hex.patch @@ -0,0 +1,45 @@ +From bae1169dbfc807f7294c5ca18229a59976aa828f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 5 Apr 2014 13:23:25 -0400 +Subject: [PATCH] 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/systemd.spec b/systemd.spec index bacff48..541efdc 100644 --- a/systemd.spec +++ b/systemd.spec @@ -16,7 +16,7 @@ Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd Version: 208 -Release: 15%{?gitcommit:.git%{gitcommit}}%{?dist} +Release: 16%{?gitcommit:.git%{gitcommit}}%{?dist} # For a breakdown of the licensing, see README License: LGPLv2+ and MIT and GPLv2+ Summary: A System and Service Manager @@ -365,6 +365,58 @@ Patch323: 0323-add-bash-completion-for-systemd-cat.patch Patch324: 0324-journal-assume-that-next-entry-is-after-previous-ent.patch Patch325: 0325-journal-forget-file-after-encountering-an-error.patch Patch326: 0326-logind-ignore-failing-close-on-session-devices.patch +Patch327: 0327-core-introduce-new-stop-protocol-for-unit-scopes.patch +Patch328: 0328-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch +Patch329: 0329-logind-rework-session-shutdown-logic.patch +Patch330: 0330-logind-order-all-scopes-after-both-systemd-logind.se.patch +Patch331: 0331-logind-given-that-we-can-now-relatively-safely-shutd.patch +Patch332: 0332-logind-fix-reference-to-systemd-user-sessions.servic.patch +Patch333: 0333-logind-add-forgotten-call-to-user_send_changed.patch +Patch334: 0334-logind-save-session-after-setting-the-stopping-flag.patch +Patch335: 0335-logind-save-user-state-after-stopping-the-session.patch +Patch336: 0336-logind-initialize-timer_fd.patch +Patch337: 0337-logind-pass-pointer-to-User-object-to-user_save.patch +Patch338: 0338-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch +Patch339: 0339-core-correctly-unregister-PIDs-from-PID-hashtables.patch +Patch340: 0340-logind-uninitialized-timer_fd-is-set-to-1.patch +Patch341: 0341-logind-add-forgotten-return-statement.patch +Patch342: 0342-core-fix-detection-of-dead-processes.patch +Patch343: 0343-Fix-prototype-of-get_process_state.patch +Patch344: 0344-core-check-for-return-value-from-get_process_state.patch +Patch345: 0345-man-update-link-to-LSB.patch +Patch346: 0346-man-systemd-bootchart-fix-spacing-in-command.patch +Patch347: 0347-man-add-missing-comma.patch +Patch348: 0348-build-sys-Don-t-distribute-generated-udev-rule.patch +Patch349: 0349-units-Do-not-unescape-instance-name-in-systemd-backl.patch +Patch350: 0350-util-add-timeout-to-generator-execution.patch +Patch351: 0351-input_id-Recognize-buttonless-joystick-types.patch +Patch352: 0352-logind-fix-policykit-checks.patch +Patch353: 0353-nspawn-don-t-try-mknod-of-dev-console-with-the-corre.patch +Patch354: 0354-build-sys-Find-the-tools-for-users-with-no-sbin-usr-.patch +Patch355: 0355-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch +Patch356: 0356-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch +Patch357: 0357-man-fix-description-of-systemctl-after-before.patch +Patch358: 0358-udev-properly-detect-reference-to-unexisting-part-of.patch +Patch359: 0359-hwdb-Update-database-of-Bluetooth-company-identifier.patch +Patch360: 0360-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch +Patch361: 0361-man-improve-wording-of-systemctl-s-after-before.patch +Patch362: 0362-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch +Patch363: 0363-hwdb-update.patch +Patch364: 0364-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch +Patch365: 0365-man-explain-that-the-journal-field-SYSLOG_IDENTIFIER.patch +Patch366: 0366-man-be-more-specific-when-EnvironmentFile-is-read.patch +Patch367: 0367-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch +Patch368: 0368-systemctl-add-more-verbose-explanation-of-kill-who-a.patch +Patch369: 0369-ask-password-when-the-user-types-a-overly-long-passw.patch +Patch370: 0370-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch +Patch371: 0371-core-do-not-read-system-boot-timestamps-in-systemd-u.patch +Patch372: 0372-hwdb-Update-database-of-Bluetooth-company-identifier.patch +Patch373: 0373-Add-hwdb-entry-for-Samsung-Series-7-Ultra.patch +Patch374: 0374-udev-do-not-export-static-node-tags-for-non-existing.patch +Patch375: 0375-journalctl-free-arg_file-on-exit.patch +Patch376: 0376-journal-fix-export-of-messages-containing-newlines.patch +Patch377: 0377-tty-ask-password-agent-return-negative-errno.patch +Patch378: 0378-systemd-python-use-.hex-instead-of-.get_hex.patch # kernel-install patch for grubby, drop if grubby is obsolete @@ -1012,6 +1064,21 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g %{_datadir}/systemd/gatewayd %changelog +* Sun Apr 07 2014 Zbigniew Jędrzejewski-Szmek - 208-16 +- Rework systemd-logind shutdown logic (#1032695) +- Fix saving of logind session state and change notifications +- Enable timeouts for generator execution +- Recognize buttonless joystick types + (https://bugs.freedesktop.org/show_bug.cgi?id=70734) +- Fix policykit check for reboot +- Fix udev behaviour for unconnected loop devices +- Fix overflow on password entry (#1084286) +- Update hardware database +- Consider glusterfs and fuse.glusterfs to be networked filesystems +- Fix journalctl -o export for multiline messages +- Fix get_catalog() in systemd-python for UUID arguments under Python 3 +- Documentation updates + * Sun Feb 23 2014 Zbigniew Jędrzejewski-Szmek - 208-15 - Backport some small patches, mostly completion updates and documentation fixes (#1069393, #1047568, #1047039, #1070970, #1061031)