From 399a2a87d9d9aea041de3bd93d3b355c2d4a2363 Mon Sep 17 00:00:00 2001 From: Zbigniew Jędrzejewski-Szmek Date: Mar 14 2015 16:08:23 +0000 Subject: Backport a bunch of patches --- diff --git a/0027-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch b/0027-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch deleted file mode 100644 index 2db450f..0000000 --- a/0027-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 39addb81b660dd7af7d21be941d8de6497abbdbf Mon Sep 17 00:00:00 2001 -From: Lubomir Rintel -Date: Wed, 18 Feb 2015 21:02:01 +0100 -Subject: [PATCH] hwdb: fix ThinkPad X* Tablet special keys - -ThinkPad tablet firmware has DMI product name and version reversed: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: LENOVO - Product Name: 7762AS1 - Version: ThinkPad X61 Tablet - Serial Number: LKZCDH2 - UUID: 6ADBC681-4FC9-11CB-844F-B47CB9210BE2 - Wake-up Type: Power Switch - SKU Number: Not Specified - Family: ThinkPad X61 Tablet ---- - hwdb/60-keyboard.hwdb | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb -index 1b7d871..2cb9769 100644 ---- a/hwdb/60-keyboard.hwdb -+++ b/hwdb/60-keyboard.hwdb -@@ -586,7 +586,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr* - KEYBOARD_KEY_f3=f21 - - # Thinkpad X200_Tablet --keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr* - keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet* - KEYBOARD_KEY_5d=menu - KEYBOARD_KEY_63=fn -@@ -596,7 +595,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet* - KEYBOARD_KEY_6c=direction # rotate screen - - # ThinkPad X6 Tablet --keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X6*:pvr* -+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X6*Tablet* - KEYBOARD_KEY_6c=direction # rotate - KEYBOARD_KEY_68=leftmeta # toolbox - KEYBOARD_KEY_6b=esc # escape --- -2.1.0 - diff --git a/0027-import-remove-unused-variable.patch b/0027-import-remove-unused-variable.patch new file mode 100644 index 0000000..45b9748 --- /dev/null +++ b/0027-import-remove-unused-variable.patch @@ -0,0 +1,22 @@ +From 4d5f8b0cbdda7f662b85bdf18344d9b83c8789a8 Mon Sep 17 00:00:00 2001 +From: Thomas Hindoe Paaboel Andersen +Date: Tue, 17 Feb 2015 20:06:13 +0100 +Subject: [PATCH] import: remove unused variable + +(cherry picked from commit b89c454b37a23433f8fd6ad7b93f5a6190930aa4) +--- + src/import/import-tar.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/src/import/import-tar.c b/src/import/import-tar.c +index 999aa8ab5e..493252a132 100644 +--- a/src/import/import-tar.c ++++ b/src/import/import-tar.c +@@ -301,7 +301,6 @@ finish: + } + + static int tar_import_job_on_open_disk(ImportJob *j) { +- _cleanup_close_pair_ int pipefd[2] = { -1 , -1 }; + TarImport *i; + int r; + diff --git a/0028-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch b/0028-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch new file mode 100644 index 0000000..fc56093 --- /dev/null +++ b/0028-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch @@ -0,0 +1,44 @@ +From bfc587ff72ad50e290b3f5426edb929b225da53f Mon Sep 17 00:00:00 2001 +From: Lubomir Rintel +Date: Wed, 18 Feb 2015 21:02:01 +0100 +Subject: [PATCH] hwdb: fix ThinkPad X* Tablet special keys + +ThinkPad tablet firmware has DMI product name and version reversed: + +Handle 0x0001, DMI type 1, 27 bytes +System Information + Manufacturer: LENOVO + Product Name: 7762AS1 + Version: ThinkPad X61 Tablet + Serial Number: LKZCDH2 + UUID: 6ADBC681-4FC9-11CB-844F-B47CB9210BE2 + Wake-up Type: Power Switch + SKU Number: Not Specified + Family: ThinkPad X61 Tablet + +(cherry picked from commit 39addb81b660dd7af7d21be941d8de6497abbdbf) +--- + hwdb/60-keyboard.hwdb | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb +index 1b7d87101a..2cb976923d 100644 +--- a/hwdb/60-keyboard.hwdb ++++ b/hwdb/60-keyboard.hwdb +@@ -586,7 +586,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr* + KEYBOARD_KEY_f3=f21 + + # Thinkpad X200_Tablet +-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr* + keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet* + KEYBOARD_KEY_5d=menu + KEYBOARD_KEY_63=fn +@@ -596,7 +595,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet* + KEYBOARD_KEY_6c=direction # rotate screen + + # ThinkPad X6 Tablet +-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X6*:pvr* ++keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X6*Tablet* + KEYBOARD_KEY_6c=direction # rotate + KEYBOARD_KEY_68=leftmeta # toolbox + KEYBOARD_KEY_6b=esc # escape diff --git a/0029-man-add-newlines-to-the-pull-raw-example-in-machinec.patch b/0029-man-add-newlines-to-the-pull-raw-example-in-machinec.patch new file mode 100644 index 0000000..69d815d --- /dev/null +++ b/0029-man-add-newlines-to-the-pull-raw-example-in-machinec.patch @@ -0,0 +1,34 @@ +From 058bc7a903672a01981450a8c21ec03b92498aff Mon Sep 17 00:00:00 2001 +From: Benjamin Franzke +Date: Thu, 19 Feb 2015 13:10:18 +0100 +Subject: [PATCH] man: add newlines to the pull-raw example in machinectl(1) + +They were removed in commit 798d3a52 ("Reindent man pages to 2ch"). + +(cherry picked from commit ac92ced5bb41def1d90f871d6c8cfec2b03c0c7d) +--- + man/machinectl.xml | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/man/machinectl.xml b/man/machinectl.xml +index 9b07af4226..640cb8b7d6 100644 +--- a/man/machinectl.xml ++++ b/man/machinectl.xml +@@ -715,11 +715,12 @@ + Download a Fedora image, set a root password in it, start + it as service + +- # machinectl pull-raw --verify=no +- http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/21/Cloud/Images/x86_64/Fedora-Cloud-Base-20141203-21.x86_64.raw.xz +- # systemd-nspawn -M Fedora-Cloud-Base-20141203-21 # passwd # +- exit # machinectl start Fedora-Cloud-Base-20141203-21 # +- machinectl login Fedora-Cloud-Base-20141203-21 ++ # machinectl pull-raw --verify=no http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/21/Cloud/Images/x86_64/Fedora-Cloud-Base-20141203-21.x86_64.raw.xz ++# systemd-nspawn -M Fedora-Cloud-Base-20141203-21 ++# passwd ++# exit ++# machinectl start Fedora-Cloud-Base-20141203-21 ++# machinectl login Fedora-Cloud-Base-20141203-21 + + This downloads the specified .raw + image with verification disabled. Then a shell is opened in it diff --git a/0030-core-shared-in-deserializing-match-same-files-reache.patch b/0030-core-shared-in-deserializing-match-same-files-reache.patch new file mode 100644 index 0000000..fb182ad --- /dev/null +++ b/0030-core-shared-in-deserializing-match-same-files-reache.patch @@ -0,0 +1,133 @@ +From 25e6978bb35805349c69d610c775cfd3a70058f7 Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Thu, 19 Feb 2015 23:12:38 +0100 +Subject: [PATCH] core, shared: in deserializing, match same files reached via + different paths + +When dbus.socket is updated like this: +-ListenStream=/var/run/dbus/system_bus_socket ++ListenStream=/run/dbus/system_bus_socket +... and daemon-reload is performed, bad things happen. +During deserialization systemd does not recognize that the two paths +refer to the same named socket and replaces the socket file with a new +one. As a result, applications hang when they try talking to dbus. + +Fix this by finding a match not only when the path names are equal, but +also when they point to the same inode. +In socket_address_equal() it is necessary to move the address size +comparison into the abstract sockets branch. For path name sockets the +comparison must not be done and for other families it is redundant +(their sizes are constant and checked by socket_address_verify()). + +FIFOs and special files can also have multiple pathnames, so compare the +inodes for them as well. Note that previously the pathname checks used +streq_ptr(), but the paths cannot be NULL. + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1186018 +(cherry picked from commit c78e47a61fa8d9a21fece01c83e4c26ce0938d27) +--- + src/core/socket.c | 6 +++--- + src/shared/path-util.c | 4 ++++ + src/shared/path-util.h | 1 + + src/shared/socket-util.c | 10 ++++------ + 4 files changed, 12 insertions(+), 9 deletions(-) + +diff --git a/src/core/socket.c b/src/core/socket.c +index 48c43a2880..88aae4815b 100644 +--- a/src/core/socket.c ++++ b/src/core/socket.c +@@ -2100,7 +2100,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, + + LIST_FOREACH(port, p, s->ports) + if (p->type == SOCKET_FIFO && +- streq_ptr(p->path, value+skip)) ++ path_equal_or_files_same(p->path, value+skip)) + break; + + if (p) { +@@ -2119,7 +2119,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, + + LIST_FOREACH(port, p, s->ports) + if (p->type == SOCKET_SPECIAL && +- streq_ptr(p->path, value+skip)) ++ path_equal_or_files_same(p->path, value+skip)) + break; + + if (p) { +@@ -2138,7 +2138,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, + + LIST_FOREACH(port, p, s->ports) + if (p->type == SOCKET_MQUEUE && +- streq_ptr(p->path, value+skip)) ++ streq(p->path, value+skip)) + break; + + if (p) { +diff --git a/src/shared/path-util.c b/src/shared/path-util.c +index b9db7f1047..70bc1caa2a 100644 +--- a/src/shared/path-util.c ++++ b/src/shared/path-util.c +@@ -436,6 +436,10 @@ bool path_equal(const char *a, const char *b) { + } + } + ++bool path_equal_or_files_same(const char *a, const char *b) { ++ return path_equal(a, b) || files_same(a, b) > 0; ++} ++ + char* path_join(const char *root, const char *path, const char *rest) { + assert(path); + +diff --git a/src/shared/path-util.h b/src/shared/path-util.h +index bd0d32473f..bcf116ed3d 100644 +--- a/src/shared/path-util.h ++++ b/src/shared/path-util.h +@@ -45,6 +45,7 @@ int path_make_relative(const char *from_dir, const char *to_path, char **_r); + char* path_kill_slashes(char *path); + char* path_startswith(const char *path, const char *prefix) _pure_; + bool path_equal(const char *a, const char *b) _pure_; ++bool path_equal_or_files_same(const char *a, const char *b); + char* path_join(const char *root, const char *path, const char *rest); + + char** path_strv_make_absolute_cwd(char **l); +diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c +index c6f64876be..c278d6f9d4 100644 +--- a/src/shared/socket-util.c ++++ b/src/shared/socket-util.c +@@ -325,9 +325,6 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) { + if (a->type != b->type) + return false; + +- if (a->size != b->size) +- return false; +- + if (socket_address_family(a) != socket_address_family(b)) + return false; + +@@ -352,14 +349,16 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) { + break; + + case AF_UNIX: +- + if ((a->sockaddr.un.sun_path[0] == 0) != (b->sockaddr.un.sun_path[0] == 0)) + return false; + + if (a->sockaddr.un.sun_path[0]) { +- if (!strneq(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, sizeof(a->sockaddr.un.sun_path))) ++ if (!path_equal_or_files_same(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path)) + return false; + } else { ++ if (a->size != b->size) ++ return false; ++ + if (memcmp(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, a->size) != 0) + return false; + } +@@ -367,7 +366,6 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) { + break; + + case AF_NETLINK: +- + if (a->protocol != b->protocol) + return false; + diff --git a/0031-shared-use-SocketAddress-in-socket_address_matches_f.patch b/0031-shared-use-SocketAddress-in-socket_address_matches_f.patch new file mode 100644 index 0000000..a27e783 --- /dev/null +++ b/0031-shared-use-SocketAddress-in-socket_address_matches_f.patch @@ -0,0 +1,83 @@ +From c3ddd973109320c7f8f06d07438bb9b1f7876866 Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Fri, 20 Feb 2015 02:04:05 +0100 +Subject: [PATCH] shared: use SocketAddress in socket_address_matches_fd() + +Cleanup. No behavior change. + +(cherry picked from commit dbafedacba3ee77098e932222ae7840e7b4040fc) +--- + src/shared/socket-util.c | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c +index c278d6f9d4..c31f60ec7e 100644 +--- a/src/shared/socket-util.c ++++ b/src/shared/socket-util.c +@@ -435,48 +435,48 @@ bool socket_ipv6_is_supported(void) { + } + + bool socket_address_matches_fd(const SocketAddress *a, int fd) { +- union sockaddr_union sa; +- socklen_t salen = sizeof(sa), solen; +- int protocol, type; ++ SocketAddress b; ++ socklen_t solen; + + assert(a); + assert(fd >= 0); + +- if (getsockname(fd, &sa.sa, &salen) < 0) ++ b.size = sizeof(b.sockaddr); ++ if (getsockname(fd, &b.sockaddr.sa, &b.size) < 0) + return false; + +- if (sa.sa.sa_family != a->sockaddr.sa.sa_family) ++ if (b.sockaddr.sa.sa_family != a->sockaddr.sa.sa_family) + return false; + +- solen = sizeof(type); +- if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &type, &solen) < 0) ++ solen = sizeof(b.type); ++ if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &b.type, &solen) < 0) + return false; + +- if (type != a->type) ++ if (b.type != a->type) + return false; + + if (a->protocol != 0) { +- solen = sizeof(protocol); +- if (getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &protocol, &solen) < 0) ++ solen = sizeof(b.protocol); ++ if (getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &b.protocol, &solen) < 0) + return false; + +- if (protocol != a->protocol) ++ if (b.protocol != a->protocol) + return false; + } + +- switch (sa.sa.sa_family) { ++ switch (b.sockaddr.sa.sa_family) { + + case AF_INET: +- return sa.in.sin_port == a->sockaddr.in.sin_port && +- sa.in.sin_addr.s_addr == a->sockaddr.in.sin_addr.s_addr; ++ return b.sockaddr.in.sin_port == a->sockaddr.in.sin_port && ++ b.sockaddr.in.sin_addr.s_addr == a->sockaddr.in.sin_addr.s_addr; + + case AF_INET6: +- return sa.in6.sin6_port == a->sockaddr.in6.sin6_port && +- memcmp(&sa.in6.sin6_addr, &a->sockaddr.in6.sin6_addr, sizeof(struct in6_addr)) == 0; ++ return b.sockaddr.in6.sin6_port == a->sockaddr.in6.sin6_port && ++ memcmp(&b.sockaddr.in6.sin6_addr, &a->sockaddr.in6.sin6_addr, sizeof(struct in6_addr)) == 0; + + case AF_UNIX: +- return salen == a->size && +- memcmp(sa.un.sun_path, a->sockaddr.un.sun_path, salen - offsetof(struct sockaddr_un, sun_path)) == 0; ++ return b.sockaddr.size == a->size && ++ memcmp(b.sockaddr.un.sun_path, a->sockaddr.un.sun_path, b.size - offsetof(struct sockaddr_un, sun_path)) == 0; + + } + diff --git a/0032-shared-avoid-semi-duplicating-socket_address_equal.patch b/0032-shared-avoid-semi-duplicating-socket_address_equal.patch new file mode 100644 index 0000000..d89f105 --- /dev/null +++ b/0032-shared-avoid-semi-duplicating-socket_address_equal.patch @@ -0,0 +1,42 @@ +From 1d23a6c379b429aaf257994d549a93d766b4cce0 Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Fri, 20 Feb 2015 02:13:03 +0100 +Subject: [PATCH] shared: avoid semi-duplicating socket_address_equal() + +Just call socket_address_equal() from socket_address_matches_fd() +instead of implementing similar comparing of addresses. + +(cherry picked from commit 02233928a502e46fc125118dba7234ba3e48dc15) +--- + src/shared/socket-util.c | 18 +----------------- + 1 file changed, 1 insertion(+), 17 deletions(-) + +diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c +index c31f60ec7e..deecce8a80 100644 +--- a/src/shared/socket-util.c ++++ b/src/shared/socket-util.c +@@ -464,23 +464,7 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) { + return false; + } + +- switch (b.sockaddr.sa.sa_family) { +- +- case AF_INET: +- return b.sockaddr.in.sin_port == a->sockaddr.in.sin_port && +- b.sockaddr.in.sin_addr.s_addr == a->sockaddr.in.sin_addr.s_addr; +- +- case AF_INET6: +- return b.sockaddr.in6.sin6_port == a->sockaddr.in6.sin6_port && +- memcmp(&b.sockaddr.in6.sin6_addr, &a->sockaddr.in6.sin6_addr, sizeof(struct in6_addr)) == 0; +- +- case AF_UNIX: +- return b.sockaddr.size == a->size && +- memcmp(b.sockaddr.un.sun_path, a->sockaddr.un.sun_path, b.size - offsetof(struct sockaddr_un, sun_path)) == 0; +- +- } +- +- return false; ++ return socket_address_equal(a, &b); + } + + int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, char **ret) { diff --git a/0033-shared-handle-unnamed-sockets-in-socket_address_equa.patch b/0033-shared-handle-unnamed-sockets-in-socket_address_equa.patch new file mode 100644 index 0000000..8b63403 --- /dev/null +++ b/0033-shared-handle-unnamed-sockets-in-socket_address_equa.patch @@ -0,0 +1,29 @@ +From 04691e6f814b76ea497d8189b9b77d4c0feff794 Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Fri, 20 Feb 2015 02:25:16 +0100 +Subject: [PATCH] shared: handle unnamed sockets in socket_address_equal() + +Make sure we don't inspect sun_path of unnamed sockets. +Since we cannot know if two unnamed sockets' adresses refer to the same +socket, just return false. + +(cherry picked from commit 710708a54ccc48e168ad7d4cd401645ef9e2eb14) +--- + src/shared/socket-util.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c +index deecce8a80..a4e26b1d8c 100644 +--- a/src/shared/socket-util.c ++++ b/src/shared/socket-util.c +@@ -349,6 +349,10 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) { + break; + + case AF_UNIX: ++ if (a->size <= offsetof(struct sockaddr_un, sun_path) || ++ b->size <= offsetof(struct sockaddr_un, sun_path)) ++ return false; ++ + if ((a->sockaddr.un.sun_path[0] == 0) != (b->sockaddr.un.sun_path[0] == 0)) + return false; + diff --git a/0034-man-make-bootup-graph-consistent.patch b/0034-man-make-bootup-graph-consistent.patch new file mode 100644 index 0000000..7e4b3c5 --- /dev/null +++ b/0034-man-make-bootup-graph-consistent.patch @@ -0,0 +1,23 @@ +From 1295853b39d330c6e7c6ea431a8fc7ce8be801b3 Mon Sep 17 00:00:00 2001 +From: Chris Morin +Date: Wed, 4 Feb 2015 14:54:34 -0500 +Subject: [PATCH] man: make bootup graph consistent + +(cherry picked from commit b44787bd437f4051660272b37bd6f75392f17931) +--- + man/bootup.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/bootup.xml b/man/bootup.xml +index d97d550236..b92057af29 100644 +--- a/man/bootup.xml ++++ b/man/bootup.xml +@@ -134,7 +134,7 @@ + v v | v rescue.target + timers.target paths.target | sockets.target + | | | | +- v |_________________ | ___________________/ ++ v \_________________ | ___________________/ + \|/ + v + basic.target diff --git a/0035-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch b/0035-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch new file mode 100644 index 0000000..f738f52 --- /dev/null +++ b/0035-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch @@ -0,0 +1,23 @@ +From 8b92bdb0bd91a1614c0132dc31a35ee6193c26da Mon Sep 17 00:00:00 2001 +From: Jan Synacek +Date: Mon, 23 Feb 2015 15:22:40 +0100 +Subject: [PATCH] nspawn: fix whitespace and typo in partition table blurb + +(cherry picked from commit 4aab5d0cbd979b2cccb88534f118bceaa86466d8) +--- + src/nspawn/nspawn.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index fb672510b4..7724df96bd 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -2676,7 +2676,7 @@ static int setup_image(char **device_path, int *loop_nr) { + + #define PARTITION_TABLE_BLURB \ + "Note that the disk image needs to either contain only a single MBR partition of\n" \ +- "type 0x83 that is marked bootable, or a sinlge GPT partition of type" \ ++ "type 0x83 that is marked bootable, or a single GPT partition of type " \ + "0FC63DAF-8483-4772-8E79-3D69D8477DE4 or follow\n" \ + " http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/\n" \ + "to be bootable with systemd-nspawn." diff --git a/0036-man-explain-time-units-in-tmpfiles.patch b/0036-man-explain-time-units-in-tmpfiles.patch new file mode 100644 index 0000000..cdc9a41 --- /dev/null +++ b/0036-man-explain-time-units-in-tmpfiles.patch @@ -0,0 +1,53 @@ +From 9b09a6df372e9eec7296c42239c8eef8f6edbdc8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 23 Feb 2015 18:59:17 -0500 +Subject: [PATCH] man: explain time units in tmpfiles + +https://bugzilla.redhat.com/show_bug.cgi?id=1195294 +(cherry picked from commit 00c53f4283ca41878a84b370840a84760b00d46e) +--- + man/tmpfiles.d.xml | 29 ++++++++++++++--------------- + 1 file changed, 14 insertions(+), 15 deletions(-) + +diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml +index 8815bf9970..4bd0fcf751 100644 +--- a/man/tmpfiles.d.xml ++++ b/man/tmpfiles.d.xml +@@ -443,23 +443,22 @@ + delete when cleaning. If a file or directory is older than the + current time minus the age field, it is deleted. The field + format is a series of integers each followed by one of the +- following postfixes for the respective time units: +- +- +- +- s +- min +- h +- d +- w +- ms +- m +- us +- ++ following postfixes for the respective time units: ++ s, ++ m or min, ++ h, ++ d, ++ w, ++ ms, ++ us, ++ respectively meaning seconds, minutes, hours, days, weeks, ++ milliseconds, and microseconds. Full names of the time units can ++ be used too. ++ + + If multiple integers and units are specified, the time +- values are summed up. If an integer is given without a unit, +- s is assumed. ++ values are summed. If an integer is given without a unit, ++ s is assumed. + + + When the age is set to zero, the files are cleaned diff --git a/0037-systemctl-check-validity-of-PID-we-received.patch b/0037-systemctl-check-validity-of-PID-we-received.patch new file mode 100644 index 0000000..7ae89c3 --- /dev/null +++ b/0037-systemctl-check-validity-of-PID-we-received.patch @@ -0,0 +1,33 @@ +From 33ff9ced04684fe88e988fe06573ad73c8d9c20a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 7 Feb 2015 11:16:04 -0500 +Subject: [PATCH] systemctl: check validity of PID we received + +(cherry picked from commit d028e01814a405e83c400c60545785d35dba2a17) +--- + src/systemctl/systemctl.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 6b93ec8446..3da4d3d4f1 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -2881,6 +2881,9 @@ static int check_inhibitors(sd_bus *bus, enum action a) { + if (!sv) + return log_oom(); + ++ if ((pid_t) pid < 0) ++ return log_error_errno(ERANGE, "Bad PID %"PRIu32": %m", pid); ++ + if (!strv_contains(sv, + a == ACTION_HALT || + a == ACTION_POWEROFF || +@@ -2892,7 +2895,7 @@ static int check_inhibitors(sd_bus *bus, enum action a) { + user = uid_to_name(uid); + + log_warning("Operation inhibited by \"%s\" (PID "PID_FMT" \"%s\", user %s), reason is \"%s\".", +- who, pid, strna(comm), strna(user), why); ++ who, (pid_t) pid, strna(comm), strna(user), why); + + c++; + } diff --git a/0038-systemctl-support-auditd.service-better.patch b/0038-systemctl-support-auditd.service-better.patch new file mode 100644 index 0000000..8e6c1de --- /dev/null +++ b/0038-systemctl-support-auditd.service-better.patch @@ -0,0 +1,85 @@ +From bddb25b6d9f5b1cf7f7219b3f23e3668f9563d6e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 7 Feb 2015 11:35:37 -0500 +Subject: [PATCH] systemctl: support auditd.service better + +We would print the filename header before trying to open the file. But since +the header was printed to stdout, and the error to stderr, the error would appear +on the terminal before the header. It is cleaner to open the file first, then +and only then print the header. + +Also exit on first error. We shouldn't report success if we were unable to open +a file. + +(cherry picked from commit 8527b07be1c5211b50a1a6496585952857a25c73) +--- + src/systemctl/systemctl.c | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c +index 3da4d3d4f1..4ec0cff21d 100644 +--- a/src/systemctl/systemctl.c ++++ b/src/systemctl/systemctl.c +@@ -4555,6 +4555,23 @@ static int init_home_and_lookup_paths(char **user_home, char **user_runtime, Loo + return 0; + } + ++static int cat_file(const char *filename, bool newline) { ++ _cleanup_close_ int fd; ++ ++ fd = open(filename, O_RDONLY|O_CLOEXEC|O_NOCTTY); ++ if (fd < 0) ++ return -errno; ++ ++ printf("%s%s# %s%s\n", ++ newline ? "\n" : "", ++ ansi_highlight_blue(), ++ filename, ++ ansi_highlight_off()); ++ fflush(stdout); ++ ++ return copy_bytes(fd, STDOUT_FILENO, (off_t) -1, false); ++} ++ + static int cat(sd_bus *bus, char **args) { + _cleanup_free_ char *user_home = NULL; + _cleanup_free_ char *user_runtime = NULL; +@@ -4600,32 +4617,15 @@ static int cat(sd_bus *bus, char **args) { + puts(""); + + if (fragment_path) { +- printf("%s# %s%s\n", +- ansi_highlight_blue(), +- fragment_path, +- ansi_highlight_off()); +- fflush(stdout); +- +- r = copy_file_fd(fragment_path, STDOUT_FILENO, false); +- if (r < 0) { +- log_warning_errno(r, "Failed to cat %s: %m", fragment_path); +- continue; +- } ++ r = cat_file(fragment_path, false); ++ if (r < 0) ++ return log_warning_errno(r, "Failed to cat %s: %m", fragment_path); + } + + STRV_FOREACH(path, dropin_paths) { +- printf("%s%s# %s%s\n", +- isempty(fragment_path) && path == dropin_paths ? "" : "\n", +- ansi_highlight_blue(), +- *path, +- ansi_highlight_off()); +- fflush(stdout); +- +- r = copy_file_fd(*path, STDOUT_FILENO, false); +- if (r < 0) { +- log_warning_errno(r, "Failed to cat %s: %m", *path); +- continue; +- } ++ r = cat_file(*path, path == dropin_paths); ++ if (r < 0) ++ return log_warning_errno(r, "Failed to cat %s: %m", *path); + } + } + diff --git a/0039-shared-unit-name-fix-gcc5-warning.patch b/0039-shared-unit-name-fix-gcc5-warning.patch new file mode 100644 index 0000000..6498a89 --- /dev/null +++ b/0039-shared-unit-name-fix-gcc5-warning.patch @@ -0,0 +1,31 @@ +From c52febcc0314c85d5a0cefc95d7f9ee0d7eb7081 Mon Sep 17 00:00:00 2001 +From: Daniel Mack +Date: Tue, 24 Feb 2015 16:18:43 +0100 +Subject: [PATCH] shared/unit-name: fix gcc5 warning + +Fix the following gcc5 warning: + + CC src/shared/libsystemd_shared_la-unit-name.lo +src/shared/unit-name.c: In function 'unit_name_is_valid': +src/shared/unit-name.c:102:34: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses] + if (!template_ok == TEMPLATE_VALID && at+1 == e) + ^ + +(cherry picked from commit f9bf3e260c480f7b660bec3f78a13f52a46ec34d) +--- + src/shared/unit-name.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c +index 21b66913c9..f728af4a81 100644 +--- a/src/shared/unit-name.c ++++ b/src/shared/unit-name.c +@@ -100,7 +100,7 @@ bool unit_name_is_valid(const char *n, enum template_valid template_ok) { + if (at == n) + return false; + +- if (!template_ok == TEMPLATE_VALID && at+1 == e) ++ if (template_ok != TEMPLATE_VALID && at+1 == e) + return false; + } + diff --git a/0040-test-hashmap-fix-gcc5-warning.patch b/0040-test-hashmap-fix-gcc5-warning.patch new file mode 100644 index 0000000..a6c2019 --- /dev/null +++ b/0040-test-hashmap-fix-gcc5-warning.patch @@ -0,0 +1,32 @@ +From 6af0a4ba45b63072df70ca4d6a8fc5790c66e149 Mon Sep 17 00:00:00 2001 +From: Daniel Mack +Date: Tue, 24 Feb 2015 16:24:14 +0100 +Subject: [PATCH] test-hashmap: fix gcc5 warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +gcc5 spits out a warning about test-hashmap.c: + + CC src/test/test-hashmap.o +src/test/test-hashmap.c: In function ‘test_string_compare_func’: +src/test/test-hashmap.c:76:79: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses] + +(cherry picked from commit 4b3eff61640672bf0b19cb8cdd88ce5e84dcda1c) +--- + src/test/test-hashmap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c +index 6900da9e89..351563b967 100644 +--- a/src/test/test-hashmap.c ++++ b/src/test/test-hashmap.c +@@ -75,7 +75,7 @@ static void test_trivial_compare_func(void) { + } + + static void test_string_compare_func(void) { +- assert_se(!string_compare_func("fred", "wilma") == 0); ++ assert_se(string_compare_func("fred", "wilma") != 0); + assert_se(string_compare_func("fred", "fred") == 0); + } + diff --git a/0041-shared-fix-wrong-assertion-in-barrier_set_role.patch b/0041-shared-fix-wrong-assertion-in-barrier_set_role.patch new file mode 100644 index 0000000..69e63da --- /dev/null +++ b/0041-shared-fix-wrong-assertion-in-barrier_set_role.patch @@ -0,0 +1,29 @@ +From cf0e4940eadeb4636a958e8d7bc243dd03120eb8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= +Date: Fri, 20 Feb 2015 15:14:56 -0300 +Subject: [PATCH] shared: fix wrong assertion in barrier_set_role() + + assert(b->pipe[0] >= 0 && b->pipe[0] >= 0); + +Test the same condition twice, pretty sure we mean + + assert(b->pipe[0] >= 0 && b->pipe[1] >= 0); + +(cherry picked from commit 3f7f1fad7621f584d9ce024abb313ecbc9bd0e62) +--- + src/shared/barrier.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/barrier.c b/src/shared/barrier.c +index f65363a67b..b7dca75097 100644 +--- a/src/shared/barrier.c ++++ b/src/shared/barrier.c +@@ -178,7 +178,7 @@ void barrier_set_role(Barrier *b, unsigned int role) { + assert(b); + assert(role == BARRIER_PARENT || role == BARRIER_CHILD); + /* make sure this is only called once */ +- assert(b->pipe[1] >= 0 && b->pipe[1] >= 0); ++ assert(b->pipe[0] >= 0 && b->pipe[1] >= 0); + + if (role == BARRIER_PARENT) + b->pipe[1] = safe_close(b->pipe[1]); diff --git a/0042-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/0042-hwdb-Update-database-of-Bluetooth-company-identifier.patch new file mode 100644 index 0000000..0ac85f6 --- /dev/null +++ b/0042-hwdb-Update-database-of-Bluetooth-company-identifier.patch @@ -0,0 +1,60 @@ +From d150bc380c90b7ec9fda50f0124e75b12e489ef1 Mon Sep 17 00:00:00 2001 +From: Marcel Holtmann +Date: Wed, 25 Feb 2015 07:27:49 +0100 +Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers + +(cherry picked from commit 3cabeab1197d3e45f16f514f5a396e0fb311e867) +--- + hwdb/20-bluetooth-vendor-product.hwdb | 42 +++++++++++++++++++++++++++++++++++ + 1 file changed, 42 insertions(+) + +diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb +index fb789fd495..4fd951a584 100644 +--- a/hwdb/20-bluetooth-vendor-product.hwdb ++++ b/hwdb/20-bluetooth-vendor-product.hwdb +@@ -1430,3 +1430,45 @@ bluetooth:v01D9* + + bluetooth:v01DA* + ID_VENDOR_FROM_DATABASE=Logitech International SA ++ ++bluetooth:v01DB* ++ ID_VENDOR_FROM_DATABASE=Innblue Consulting ++ ++bluetooth:v01DC* ++ ID_VENDOR_FROM_DATABASE=iParking Ltd. ++ ++bluetooth:v01DD* ++ ID_VENDOR_FROM_DATABASE=Koninklijke Philips Electronics N.V. ++ ++bluetooth:v01DE* ++ ID_VENDOR_FROM_DATABASE=Minelab Electronics Pty Limited ++ ++bluetooth:v01DF* ++ ID_VENDOR_FROM_DATABASE=Bison Group Ltd. ++ ++bluetooth:v01E0* ++ ID_VENDOR_FROM_DATABASE=Widex A/S ++ ++bluetooth:v01E1* ++ ID_VENDOR_FROM_DATABASE=Jolla Ltd ++ ++bluetooth:v01E2* ++ ID_VENDOR_FROM_DATABASE=Lectronix, Inc. ++ ++bluetooth:v01E3* ++ ID_VENDOR_FROM_DATABASE=Caterpillar Inc ++ ++bluetooth:v01E4* ++ ID_VENDOR_FROM_DATABASE=Freedom Innovations ++ ++bluetooth:v01E5* ++ ID_VENDOR_FROM_DATABASE=Dynamic Devices Ltd ++ ++bluetooth:v01E6* ++ ID_VENDOR_FROM_DATABASE=Technology Solutions (UK) Ltd ++ ++bluetooth:v01E7* ++ ID_VENDOR_FROM_DATABASE=IPS Group Inc. ++ ++bluetooth:v01E8* ++ ID_VENDOR_FROM_DATABASE=STIR diff --git a/0043-journal-make-skipping-of-exhausted-journal-files-eff.patch b/0043-journal-make-skipping-of-exhausted-journal-files-eff.patch new file mode 100644 index 0000000..bf4bc28 --- /dev/null +++ b/0043-journal-make-skipping-of-exhausted-journal-files-eff.patch @@ -0,0 +1,114 @@ +From 55c5c56d07d4e1d402ee33dbcf4a04aa20c4279c Mon Sep 17 00:00:00 2001 +From: Michal Schmidt +Date: Tue, 24 Feb 2015 19:45:17 +0100 +Subject: [PATCH] journal: make skipping of exhausted journal files effective + again + +Commit 668c965af "journal: skipping of exhausted journal files is bad if +direction changed" fixed a correctness issue, but it also significantly +limited the cases where the optimization that skips exhausted journal +files could apply. +As a result, some journalctl queries are much slower in v219 than in v218. +(e.g. queries where a "--since" cutoff should have quickly eliminated +older journal files from consideration, but didn't.) + +If already in the initial iteration find_location_with_matches() finds +no entry, the journal file's location is not updated. This is fine, +except that: + - We must update at least f->last_direction. The optimization relies on + it. Let's separate that from journal_file_save_location() and update + it immediately after the direction checks. + - The optimization was conditional on "f->current_offset > 0", but it + would always be 0 in this scenario. This check is unnecessary for the + optimization. + +(cherry picked from commit 950c07d421c04e5aae99973479f4f13131fb45e1) +--- + src/journal/journal-file.c | 3 +-- + src/journal/journal-file.h | 2 +- + src/journal/sd-journal.c | 24 +++++++++++++++--------- + 3 files changed, 17 insertions(+), 12 deletions(-) + +diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c +index 0f28718b0e..24c49b916a 100644 +--- a/src/journal/journal-file.c ++++ b/src/journal/journal-file.c +@@ -2014,8 +2014,7 @@ void journal_file_reset_location(JournalFile *f) { + f->current_xor_hash = 0; + } + +-void journal_file_save_location(JournalFile *f, direction_t direction, Object *o, uint64_t offset) { +- f->last_direction = direction; ++void journal_file_save_location(JournalFile *f, Object *o, uint64_t offset) { + f->location_type = LOCATION_SEEK; + f->current_offset = offset; + f->current_seqnum = le64toh(o->entry.seqnum); +diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h +index 2526e14d65..403c8f760c 100644 +--- a/src/journal/journal-file.h ++++ b/src/journal/journal-file.h +@@ -199,7 +199,7 @@ int journal_file_find_field_object(JournalFile *f, const void *field, uint64_t s + int journal_file_find_field_object_with_hash(JournalFile *f, const void *field, uint64_t size, uint64_t hash, Object **ret, uint64_t *offset); + + void journal_file_reset_location(JournalFile *f); +-void journal_file_save_location(JournalFile *f, direction_t direction, Object *o, uint64_t offset); ++void journal_file_save_location(JournalFile *f, Object *o, uint64_t offset); + int journal_file_compare_locations(JournalFile *af, JournalFile *bf); + int journal_file_next_entry(JournalFile *f, uint64_t p, direction_t direction, Object **ret, uint64_t *offset); + +diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c +index 94891cdf35..9b57e5945d 100644 +--- a/src/journal/sd-journal.c ++++ b/src/journal/sd-journal.c +@@ -723,13 +723,17 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc + assert(j); + assert(f); + +- if (f->last_direction == direction && f->current_offset > 0) { +- /* If we hit EOF before, recheck if any new entries arrived. */ +- n_entries = le64toh(f->header->n_entries); +- if (f->location_type == LOCATION_TAIL && n_entries == f->last_n_entries) +- return 0; +- f->last_n_entries = n_entries; ++ n_entries = le64toh(f->header->n_entries); ++ ++ /* If we hit EOF before, we don't need to look into this file again ++ * unless direction changed or new entries appeared. */ ++ if (f->last_direction == direction && f->location_type == LOCATION_TAIL && ++ n_entries == f->last_n_entries) ++ return 0; + ++ f->last_n_entries = n_entries; ++ ++ if (f->last_direction == direction && f->current_offset > 0) { + /* LOCATION_SEEK here means we did the work in a previous + * iteration and the current location already points to a + * candidate entry. */ +@@ -738,14 +742,16 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc + if (r <= 0) + return r; + +- journal_file_save_location(f, direction, c, cp); ++ journal_file_save_location(f, c, cp); + } + } else { ++ f->last_direction = direction; ++ + r = find_location_with_matches(j, f, direction, &c, &cp); + if (r <= 0) + return r; + +- journal_file_save_location(f, direction, c, cp); ++ journal_file_save_location(f, c, cp); + } + + /* OK, we found the spot, now let's advance until an entry +@@ -773,7 +779,7 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc + if (r <= 0) + return r; + +- journal_file_save_location(f, direction, c, cp); ++ journal_file_save_location(f, c, cp); + } + } + diff --git a/0044-hwdb-add-sdio-identifiers-for-Broadcom-WLAN-cards.patch b/0044-hwdb-add-sdio-identifiers-for-Broadcom-WLAN-cards.patch new file mode 100644 index 0000000..900c624 --- /dev/null +++ b/0044-hwdb-add-sdio-identifiers-for-Broadcom-WLAN-cards.patch @@ -0,0 +1,34 @@ +From c10e229f8222b92117ba38045ddb3e4d7951244a Mon Sep 17 00:00:00 2001 +From: Arend van Spriel +Date: Wed, 25 Feb 2015 11:02:39 +0100 +Subject: [PATCH] hwdb: add sdio identifiers for Broadcom WLAN cards + +This patch adds the sdio identifiers known to be supported by +the brcmfmac open-source driver. + +(cherry picked from commit 0c591b6c92ded66bea5ed615796b0f8c1cd6b422) +--- + hwdb/sdio.ids | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/hwdb/sdio.ids b/hwdb/sdio.ids +index 8a4c7136d2..d61729744e 100644 +--- a/hwdb/sdio.ids ++++ b/hwdb/sdio.ids +@@ -34,6 +34,16 @@ + 5347 GDM72xx WiMAX + 02d0 Broadcom Corp. + 044b Nintendo Wii WLAN daughter card ++ a887 BCM43143 WLAN card ++ 4324 BCM43241 WLAN card ++ 4329 BCM4329 WLAN card ++ 4330 BCM4330 WLAN card ++ 4334 BCM4334 WLAN card ++ a94c BCM43340 WLAN card ++ a94d BCM43341 WLAN card ++ 4335 BCM4335/BCM4339 WLAN card ++ a962 BCM43362 WLAN card ++ 4354 BCM4354 WLAN card + 02db SyChip Inc. + 0002 Pegasus WLAN SDIO Card (6060SD) + 02df Marvell Technology Group Ltd. diff --git a/0045-shared-condition-fix-gcc5-warning.patch b/0045-shared-condition-fix-gcc5-warning.patch new file mode 100644 index 0000000..ec6caaa --- /dev/null +++ b/0045-shared-condition-fix-gcc5-warning.patch @@ -0,0 +1,42 @@ +From 99ed674eb8f9bdaa45d937379c2f00ea684a7fc9 Mon Sep 17 00:00:00 2001 +From: Daniel Mack +Date: Fri, 27 Feb 2015 20:05:26 +0100 +Subject: [PATCH] shared/condition: fix gcc5 warning +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fixes the warning below. + +src/shared/condition.c: In function ‘condition_new’: +src/shared/condition.c:47:27: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses] + assert(!parameter == (type == CONDITION_NULL)); + ^ +src/shared/macro.h:42:44: note: in definition of macro ‘_unlikely_’ + #define _unlikely_(x) (__builtin_expect(!!(x),0)) + ^ +src/shared/macro.h:226:22: note: in expansion of macro ‘assert_se’ + #define assert(expr) assert_se(expr) + ^ +src/shared/condition.c:47:9: note: in expansion of macro ‘assert’ + assert(!parameter == (type == CONDITION_NULL)); + ^ + +(cherry picked from commit 8a9c6071cb7467170010f0287672c987981bdf9c) +--- + src/shared/condition.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shared/condition.c b/src/shared/condition.c +index da7560f05f..796cc520d7 100644 +--- a/src/shared/condition.c ++++ b/src/shared/condition.c +@@ -46,7 +46,7 @@ Condition* condition_new(ConditionType type, const char *parameter, bool trigger + + assert(type >= 0); + assert(type < _CONDITION_TYPE_MAX); +- assert(!parameter == (type == CONDITION_NULL)); ++ assert((!parameter) == (type == CONDITION_NULL)); + + c = new0(Condition, 1); + if (!c) diff --git a/0046-man-correct-description-of-systemd-user-sessions.patch b/0046-man-correct-description-of-systemd-user-sessions.patch new file mode 100644 index 0000000..8ec2fc4 --- /dev/null +++ b/0046-man-correct-description-of-systemd-user-sessions.patch @@ -0,0 +1,34 @@ +From dd416d4c05eb40bc80380978779cfbc67fab7d35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 27 Feb 2015 17:26:42 -0500 +Subject: [PATCH] man: correct description of systemd-user-sessions + +That part of functionality was removed in 7fb3ee51c1b377. + +(cherry picked from commit 3849a2ac8198fedd25e66fe780821fa96eb6396d) +--- + man/systemd-user-sessions.service.xml | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/man/systemd-user-sessions.service.xml b/man/systemd-user-sessions.service.xml +index 9d796b1ae1..e75ef11c4e 100644 +--- a/man/systemd-user-sessions.service.xml ++++ b/man/systemd-user-sessions.service.xml +@@ -55,13 +55,12 @@ + Description + + systemd-user-sessions.service is a +- service that controls user logins. After basic system +- initialization is complete it removes ++ service that controls user logins through ++ pam_nologin8. ++ After basic system initialization is complete it removes + /run/nologin, thus permitting logins. Before + system shutdown it creates /run/nologin, thus +- prohibiting further logins. At the same time it also kills all +- user processes, so that system shutdown may proceed without any +- remaining user processes around. ++ prohibiting further logins. + + + diff --git a/0047-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch b/0047-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch new file mode 100644 index 0000000..bf0b629 --- /dev/null +++ b/0047-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch @@ -0,0 +1,31 @@ +From 86d07870ff23fb3a0d13760d31ff23409ef19523 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 1 Mar 2015 22:46:43 -0500 +Subject: [PATCH] build-sys: allow lto and FORTIFY_SOURCE with -O[sz] + +https://bugs.freedesktop.org/show_bug.cgi?id=89382 +(cherry picked from commit 0289f2fb2a64df53b589b771f69c43126b029590) +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 97a29d63fd..6bc347423b 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -208,13 +208,13 @@ AS_CASE([$CC], [*clang*], + -Wno-gnu-variable-sized-type-not-at-end \ + ])]) + +-AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], ++AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], + [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ + -flto -ffat-lto-objects])], + [AC_MSG_RESULT([skipping -flto, optimization not enabled])]) + AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags") + +-AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], ++AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*], + [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ + -Wp,-D_FORTIFY_SOURCE=2])], + [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])]) diff --git a/0048-man-fix-typo.patch b/0048-man-fix-typo.patch new file mode 100644 index 0000000..0781faf --- /dev/null +++ b/0048-man-fix-typo.patch @@ -0,0 +1,23 @@ +From 33ffe19b7c01fc1f4d32c629d4c6462776d84644 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Tue, 3 Mar 2015 00:11:51 +0100 +Subject: [PATCH] man: fix typo + +(cherry picked from commit a68188812290cb9ec9f3f8a17b65e64549a4fd65) +--- + man/systemd.netdev.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml +index 4480e1999d..ef58887dc8 100644 +--- a/man/systemd.netdev.xml ++++ b/man/systemd.netdev.xml +@@ -108,7 +108,7 @@ + A bond device is an aggregation of all its slave devices. See Linux Ethernet Bonding Driver HOWTO for details.Local configuration + + bridge +- A bridge devcie is a software switch, each of its slave devices and the bridge itself are ports of the switch. ++ A bridge device is a software switch, each of its slave devices and the bridge itself are ports of the switch. + + dummy + A dummy device drops all packets sent to it. diff --git a/0049-bus-proxyd-avoid-logging-oom-twice.patch b/0049-bus-proxyd-avoid-logging-oom-twice.patch new file mode 100644 index 0000000..ed3e1c9 --- /dev/null +++ b/0049-bus-proxyd-avoid-logging-oom-twice.patch @@ -0,0 +1,23 @@ +From f0637f329a5da0680cd7ef79cc05ecdaa0194d82 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 3 Mar 2015 00:05:14 -0500 +Subject: [PATCH] bus-proxyd: avoid logging oom twice + +(cherry picked from commit c29005212dc38d98c707639d1a82ffa5270f2e97) +--- + src/bus-proxyd/bus-proxyd.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c +index b6b0056362..b6550ed3cf 100644 +--- a/src/bus-proxyd/bus-proxyd.c ++++ b/src/bus-proxyd/bus-proxyd.c +@@ -82,7 +82,7 @@ static int client_context_new(ClientContext **out) { + + c = new0(ClientContext, 1); + if (!c) +- return log_oom(); ++ return -ENOMEM; + + c->fd = -1; + diff --git a/0050-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch b/0050-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch new file mode 100644 index 0000000..6860b33 --- /dev/null +++ b/0050-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch @@ -0,0 +1,29 @@ +From 7b95274e6adeec3b7bb44fd7cfe0a50902615151 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 3 Mar 2015 10:36:47 -0500 +Subject: [PATCH] Do not run sysv-generator-test when sysv compat is disabled + +(cherry picked from commit dcf1369057231fbf09e37b5a48483763b4ae6e19) +--- + Makefile.am | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index cc577ced48..aadaad2b8d 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -3786,9 +3786,14 @@ TESTS += \ + if HAVE_PYTHON + TESTS += \ + test/rule-syntax-check.py \ ++ $(NULL) ++ ++if HAVE_SYSV_COMPAT ++TESTS += \ + test/sysv-generator-test.py \ + $(NULL) + endif ++endif + + manual_tests += \ + test-libudev \ diff --git a/0051-README-mention-ACLs-more.patch b/0051-README-mention-ACLs-more.patch new file mode 100644 index 0000000..135db6c --- /dev/null +++ b/0051-README-mention-ACLs-more.patch @@ -0,0 +1,26 @@ +From 83a122de87bc2e5c01c083029d216da4241fe948 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 3 Mar 2015 09:00:39 -0500 +Subject: [PATCH] README: mention ACLs more + +They are now useful for any fs used for journal storage. + +(cherry picked from commit a6cccd8f580fc1e062dba3895e232007acd38781) +--- + README | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/README b/README +index c72209262e..aac255f7f1 100644 +--- a/README ++++ b/README +@@ -77,8 +77,8 @@ REQUIREMENTS: + Optional but strongly recommended: + CONFIG_IPV6 + CONFIG_AUTOFS4_FS +- CONFIG_TMPFS_POSIX_ACL + CONFIG_TMPFS_XATTR ++ CONFIG_{TMPFS,EXT4,XFS,BTRFS_FS,...}_POSIX_ACL + CONFIG_SECCOMP + + Required for CPUShares in resource control unit settings diff --git a/0052-Do-not-advertise-.d-snippets-over-main-config-file.patch b/0052-Do-not-advertise-.d-snippets-over-main-config-file.patch new file mode 100644 index 0000000..d82b8bc --- /dev/null +++ b/0052-Do-not-advertise-.d-snippets-over-main-config-file.patch @@ -0,0 +1,333 @@ +From fdf1ec82999b343bedaeb48bca55f2dc53d2646d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Tue, 3 Mar 2015 19:10:21 -0500 +Subject: [PATCH] Do not advertise .d snippets over main config file + +For daemons which have a main configuration file, there's +little reason for the administrator to use configuration snippets. +They are useful for packagers which need to override settings, but +we shouldn't advertise that as the main way of configuring those +services. + +https://bugs.freedesktop.org/show_bug.cgi?id=89397 +(cherry picked from commit e93549ef29c4123d9ee45acb5815048390201e49) +--- + man/bootchart.conf.xml | 3 +-- + man/coredump.conf.xml | 3 +-- + man/journald.conf.xml | 3 +-- + man/logind.conf.xml | 8 +++++--- + man/resolved.conf.xml | 3 +-- + man/standard-conf.xml | 42 ++++++++++++++++++++++++++++++++++-------- + man/systemd-sleep.conf.xml | 3 +-- + man/systemd-system.conf.xml | 3 +-- + man/timesyncd.conf.xml | 3 +-- + src/bootchart/bootchart.conf | 7 ++++--- + src/core/system.conf | 7 ++++--- + src/journal/coredump.conf | 7 ++++--- + src/journal/journald.conf | 7 ++++--- + src/login/logind.conf | 7 ++++--- + src/resolve/resolved.conf.in | 5 +++-- + src/timesync/timesyncd.conf.in | 7 ++++--- + 16 files changed, 73 insertions(+), 45 deletions(-) + +diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml +index 8d9700d300..bf6ca0bf9e 100644 +--- a/man/bootchart.conf.xml ++++ b/man/bootchart.conf.xml +@@ -68,8 +68,7 @@ + parameters and graph output. + + +- +- ++ + + + Options +diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml +index 3d325e6ad7..0b7329bf55 100644 +--- a/man/coredump.conf.xml ++++ b/man/coredump.conf.xml +@@ -63,8 +63,7 @@ + a handler for core dumps invoked by the kernel. + + +- +- ++ + + + Options +diff --git a/man/journald.conf.xml b/man/journald.conf.xml +index 364b58f07e..85146b0d82 100644 +--- a/man/journald.conf.xml ++++ b/man/journald.conf.xml +@@ -64,8 +64,7 @@ + + + +- +- ++ + + + Options +diff --git a/man/logind.conf.xml b/man/logind.conf.xml +index ffaec50351..ca2b18783c 100644 +--- a/man/logind.conf.xml ++++ b/man/logind.conf.xml +@@ -58,11 +58,13 @@ + + Description + +- These files configure various parameters of the systemd login manager, systemd-logind.service8. ++ These files configure various parameters of the systemd ++ login manager, ++ systemd-logind.service8. ++ + + +- +- ++ + + + Options +diff --git a/man/resolved.conf.xml b/man/resolved.conf.xml +index 36cae2706c..8047a4ea75 100644 +--- a/man/resolved.conf.xml ++++ b/man/resolved.conf.xml +@@ -63,8 +63,7 @@ + + + +- +- ++ + + + Options +diff --git a/man/standard-conf.xml b/man/standard-conf.xml +index b87d7e955b..36af45927d 100644 +--- a/man/standard-conf.xml ++++ b/man/standard-conf.xml +@@ -33,13 +33,39 @@ + configuration file. + + +- +- Configuration File +- +- Configuration is also read from a single configuration file in +- /etc/. This file is read before any of the +- configuration directories, and has the lowest precedence; entries in a file +- in any configuration directory override entries in the single configuration +- file. ++ ++ Configuration Directories and Precedence ++ ++ Default configuration is defined during compilation, so a ++ configuration file is only needed when it is necessary to deviate ++ from those defaults. By default the configuration file in ++ /etc/systemd/ contains commented out entries ++ showing the defaults as a guide to the administrator. This file ++ can be edited to create local overrides. ++ ++ ++ When packages need to customize the configuration, they can ++ install configuration snippets in ++ /usr/lib/systemd/*.conf.d/. Files in ++ /etc/ are reserved for the local ++ administrator, who may use this logic to override the ++ configuration files installed by vendor packages. The main ++ configuration file is read before any of the configuration ++ directories, and has the lowest precedence; entries in a file in ++ any configuration directory override entries in the single ++ configuration file. Files in the ++ logind.conf.d/ configuration subdirectories ++ are sorted by their filename in lexicographic order, regardless of ++ which of the subdirectories they reside in. If multiple files ++ specify the same option, the entry in the file with the ++ lexicographically latest name takes precedence. It is recommended ++ to prefix all filenames in those subdirectories with a two-digit ++ number and a dash, to simplify the ordering of the files. ++ ++ To disable a configuration file supplied by the vendor, the ++ recommended way is to place a symlink to ++ /dev/null in the configuration directory in ++ /etc/, with the same filename as the vendor ++ configuration file. + + +diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml +index 433f2f83a0..bb17ec8669 100644 +--- a/man/systemd-sleep.conf.xml ++++ b/man/systemd-sleep.conf.xml +@@ -112,8 +112,7 @@ along with systemd; If not, see . + attempts to suspend or hibernate the machine. + + +- +- ++ + + + Options +diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml +index 7c3f237567..c7bcfaee4d 100644 +--- a/man/systemd-system.conf.xml ++++ b/man/systemd-system.conf.xml +@@ -74,8 +74,7 @@ + operations. + + +- +- ++ + + + Options +diff --git a/man/timesyncd.conf.xml b/man/timesyncd.conf.xml +index 1127970a18..89a651c662 100644 +--- a/man/timesyncd.conf.xml ++++ b/man/timesyncd.conf.xml +@@ -63,8 +63,7 @@ + + + +- +- ++ + + + Options +diff --git a/src/bootchart/bootchart.conf b/src/bootchart/bootchart.conf +index 2d7cb61217..4f5e50936e 100644 +--- a/src/bootchart/bootchart.conf ++++ b/src/bootchart/bootchart.conf +@@ -5,10 +5,11 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/bootchart.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # +-# See bootchart.conf(5) for details ++# See bootchart.conf(5) for details. + + [Bootchart] + #Samples=500 +diff --git a/src/core/system.conf b/src/core/system.conf +index a3727200df..231609033b 100644 +--- a/src/core/system.conf ++++ b/src/core/system.conf +@@ -5,10 +5,11 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/system.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # +-# See systemd-system.conf(5) for details ++# See systemd-system.conf(5) for details. + + [Manager] + #LogLevel=info +diff --git a/src/journal/coredump.conf b/src/journal/coredump.conf +index 0fe9fe801a..c2f0643e03 100644 +--- a/src/journal/coredump.conf ++++ b/src/journal/coredump.conf +@@ -5,10 +5,11 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/coredump.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # +-# See coredump.conf(5) for details ++# See coredump.conf(5) for details. + + [Coredump] + #Storage=external +diff --git a/src/journal/journald.conf b/src/journal/journald.conf +index 29bdf8f183..47eefe91c1 100644 +--- a/src/journal/journald.conf ++++ b/src/journal/journald.conf +@@ -5,10 +5,11 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/journald.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # +-# See journald.conf(5) for details ++# See journald.conf(5) for details. + + [Journal] + #Storage=auto +diff --git a/src/login/logind.conf b/src/login/logind.conf +index 6b1943a2d1..834c4c2ebf 100644 +--- a/src/login/logind.conf ++++ b/src/login/logind.conf +@@ -5,10 +5,11 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/logind.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # +-# See logind.conf(5) for details ++# See logind.conf(5) for details. + + [Login] + #NAutoVTs=6 +diff --git a/src/resolve/resolved.conf.in b/src/resolve/resolved.conf.in +index e5a19ee474..3eb19e42b7 100644 +--- a/src/resolve/resolved.conf.in ++++ b/src/resolve/resolved.conf.in +@@ -5,8 +5,9 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/resolved.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # + # See resolved.conf(5) for details + +diff --git a/src/timesync/timesyncd.conf.in b/src/timesync/timesyncd.conf.in +index fc3c6c49cf..b6a2ada273 100644 +--- a/src/timesync/timesyncd.conf.in ++++ b/src/timesync/timesyncd.conf.in +@@ -5,10 +5,11 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + # +-# You can override the directives in this file by creating files in +-# /etc/systemd/timesyncd.conf.d/*.conf. ++# Entries in this file show the compile time defaults. ++# You can change settings by editing this file. ++# Defaults can be restored by simply deleting this file. + # +-# See timesyncd.conf(5) for details ++# See timesyncd.conf(5) for details. + + [Time] + #NTP= diff --git a/0053-hwdb-add-pnpid-for-the-T450s-touchpad.patch b/0053-hwdb-add-pnpid-for-the-T450s-touchpad.patch new file mode 100644 index 0000000..1b7ef18 --- /dev/null +++ b/0053-hwdb-add-pnpid-for-the-T450s-touchpad.patch @@ -0,0 +1,22 @@ +From 0e1497b9c44688f5a038dbcc7d69090d55e2701a Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Wed, 4 Mar 2015 13:24:45 +1000 +Subject: [PATCH] hwdb: add pnpid for the T450s touchpad + +https://bugs.freedesktop.org/show_bug.cgi?id=89411 +(cherry picked from commit c26c1d86b3e466e073577e27ad839a0c112cd17b) +--- + hwdb/70-touchpad.hwdb | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/hwdb/70-touchpad.hwdb b/hwdb/70-touchpad.hwdb +index bbf44db778..9fcb5fdb9b 100644 +--- a/hwdb/70-touchpad.hwdb ++++ b/hwdb/70-touchpad.hwdb +@@ -36,4 +36,6 @@ + + # Lenovo X1 Carbon 3rd + touchpad:pnpid:*LEN0048*: ++# Lenovo T450s ++touchpad:pnpid:*LEN200f*: + TOUCHPAD_HAS_TRACKPOINT_BUTTONS=1 diff --git a/0054-networkd-netdev-inform-when-we-take-over-an-existing.patch b/0054-networkd-netdev-inform-when-we-take-over-an-existing.patch new file mode 100644 index 0000000..8492f69 --- /dev/null +++ b/0054-networkd-netdev-inform-when-we-take-over-an-existing.patch @@ -0,0 +1,30 @@ +From 67ec035b3c192e71fb040959fe8d311d9c89edaa Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Wed, 4 Mar 2015 10:33:50 +0100 +Subject: [PATCH] networkd: netdev - inform when we take over an existing + netdev + +The crucial point here is that we will not change the settings of a netdev created by someone else +we simply use it as is and trust it was set up as intended. + +This is confusing in the case of the pre-created netdev's (bond0 etc.), the solution should probably +be to simply make the kernel stop creating these devices as they are pretty useless. + +(cherry picked from commit ff88a301e93cf1bddbaa7faa981f390a2a81a4bb) +--- + src/network/networkd-netdev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c +index 8119205dde..7d193d088e 100644 +--- a/src/network/networkd-netdev.c ++++ b/src/network/networkd-netdev.c +@@ -261,7 +261,7 @@ static int netdev_create_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userda + + r = sd_rtnl_message_get_errno(m); + if (r == -EEXIST) +- log_netdev_debug(netdev, "netdev exists, using existing"); ++ log_info_netdev(netdev, "netdev exists, using existing without changing its parameters"); + else if (r < 0) { + log_warning_netdev(netdev, "netdev could not be created: %s", strerror(-r)); + netdev_drop(netdev); diff --git a/0055-man-replace-obsolete-wiki-link-with-man-page.patch b/0055-man-replace-obsolete-wiki-link-with-man-page.patch new file mode 100644 index 0000000..6cfd146 --- /dev/null +++ b/0055-man-replace-obsolete-wiki-link-with-man-page.patch @@ -0,0 +1,181 @@ +From 4015611680b1ee7ba43dbaf405fefb7ddb137797 Mon Sep 17 00:00:00 2001 +From: Zachary Cook +Date: Wed, 4 Mar 2015 18:43:20 -0500 +Subject: [PATCH] man: replace obsolete wiki link with man page + +(cherry picked from commit b1c1a51944e8e11545ae2a230d674f5145595192) +--- + man/systemd-cryptsetup-generator.xml | 6 ++---- + man/systemd-debug-generator.xml | 6 ++---- + man/systemd-efi-boot-generator.xml | 4 +--- + man/systemd-fstab-generator.xml | 6 ++---- + man/systemd-getty-generator.xml | 5 ++--- + man/systemd-gpt-auto-generator.xml | 4 +--- + man/systemd-system-update-generator.xml | 6 ++---- + man/systemd-sysv-generator.xml | 6 ++---- + man/systemd.unit.xml | 4 ++-- + man/systemd.xml | 5 ++--- + 10 files changed, 18 insertions(+), 34 deletions(-) + +diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml +index 0e48e79346..1974cd7a2d 100644 +--- a/man/systemd-cryptsetup-generator.xml ++++ b/man/systemd-cryptsetup-generator.xml +@@ -59,10 +59,8 @@ + systemd-cryptsetup@.service8 + units as necessary. + +- systemd-cryptsetup-generator +- implements the generator +- specification. ++ systemd-cryptsetup-generator implements ++ systemd.generator7. + + + +diff --git a/man/systemd-debug-generator.xml b/man/systemd-debug-generator.xml +index 74c3b2620e..5c5e9fc4a1 100644 +--- a/man/systemd-debug-generator.xml ++++ b/man/systemd-debug-generator.xml +@@ -79,10 +79,8 @@ + systemctl1's + enable command. + +- systemd-debug-generator implements the +- generator +- specification. ++ systemd-debug-generator implements ++ systemd.generator7. + + + +diff --git a/man/systemd-efi-boot-generator.xml b/man/systemd-efi-boot-generator.xml +index b2d8d65e3d..fd7ba79837 100644 +--- a/man/systemd-efi-boot-generator.xml ++++ b/man/systemd-efi-boot-generator.xml +@@ -68,9 +68,7 @@ + only be activated on-demand, when accessed. + + systemd-efi-boot-generator implements +- the generator +- specification. ++ systemd.generator7. + + + +diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml +index 8f82e33304..022efb4130 100644 +--- a/man/systemd-fstab-generator.xml ++++ b/man/systemd-fstab-generator.xml +@@ -71,10 +71,8 @@ + for more information about special /etc/fstab + mount options this generator understands. + +- systemd-fstab-generator implements the +- generator +- specification. ++ systemd-fstab-generator implements ++ systemd.generator7. + + + +diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml +index 0b5b2f2a71..338925964d 100644 +--- a/man/systemd-getty-generator.xml ++++ b/man/systemd-getty-generator.xml +@@ -75,9 +75,8 @@ + for more information on the console= kernel + parameter. + +- systemd-getty-generator implements the +- generator +- specification. ++ systemd-getty-generator implements ++ systemd.generator7. + + Further information about configuration of gettys you may + find in +diff --git a/man/systemd-gpt-auto-generator.xml b/man/systemd-gpt-auto-generator.xml +index 9c706df246..8d2eaca4f6 100644 +--- a/man/systemd-gpt-auto-generator.xml ++++ b/man/systemd-gpt-auto-generator.xml +@@ -157,9 +157,7 @@ + using btrfs subvolume set-default. + + systemd-gpt-auto-generator implements +- the +- Generator +- Specification. ++ systemd.generator7. + + + +diff --git a/man/systemd-system-update-generator.xml b/man/systemd-system-update-generator.xml +index 3eec1d7b93..e7fc95c742 100644 +--- a/man/systemd-system-update-generator.xml ++++ b/man/systemd-system-update-generator.xml +@@ -61,10 +61,8 @@ + Updates Specification. + + +- systemd-system-update-generator +- implements the +- generator +- specification. ++ systemd-system-update-generator implements ++ systemd.generator7. + + + +diff --git a/man/systemd-sysv-generator.xml b/man/systemd-sysv-generator.xml +index e619b1bc2e..f2d56cbcd2 100644 +--- a/man/systemd-sysv-generator.xml ++++ b/man/systemd-sysv-generator.xml +@@ -81,10 +81,8 @@ + part of early boot, so all wrapper units are ordered after + basic.target. + +- systemd-sysv-generator +- implements the generator +- specification. ++ systemd-sysv-generator implements ++ systemd.generator7. + + + +diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml +index 09e11b4711..a452f87baf 100644 +--- a/man/systemd.unit.xml ++++ b/man/systemd.unit.xml +@@ -357,8 +357,8 @@ + from directories not on the unit load path. See the + link command for + systemctl1. +- Also, some units are dynamically created via generators Generators. ++ Also, some units are dynamically created via a ++ systemd.generator7. + + + +diff --git a/man/systemd.xml b/man/systemd.xml +index 80591dc732..9b92140e6b 100644 +--- a/man/systemd.xml ++++ b/man/systemd.xml +@@ -415,9 +415,8 @@ + + Units may be generated dynamically at boot and system + manager reload time, for example based on other configuration +- files or parameters passed on the kernel command line. For details +- see the +- Generators Specification. ++ files or parameters passed on the kernel command line. For details see ++ systemd.generator7. + + Systems which invoke systemd in a container or initrd + environment should implement the diff --git a/0056-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch b/0056-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch new file mode 100644 index 0000000..11c9607 --- /dev/null +++ b/0056-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch @@ -0,0 +1,31 @@ +From 9b6d1109707911b63b76b1c7a26e89a21cef9011 Mon Sep 17 00:00:00 2001 +From: John Paul Adrian Glaubitz +Date: Thu, 5 Mar 2015 00:07:33 +0100 +Subject: [PATCH] Use correct uname identifiers in arch_map for SuperH + architecture + +https://bugs.freedesktop.org/show_bug.cgi?id=89421 +(cherry picked from commit 3a867c6a2361c8af943d3ed452da6e8623a3f65d) +--- + src/shared/architecture.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/src/shared/architecture.c b/src/shared/architecture.c +index 34c5a53fa9..884abdd3ea 100644 +--- a/src/shared/architecture.c ++++ b/src/shared/architecture.c +@@ -108,8 +108,12 @@ int uname_architecture(void) { + { "armv8l", ARCHITECTURE_ARM }, + { "armv8b", ARCHITECTURE_ARM_BE }, + #elif defined(__sh__) || defined(__sh64__) +- { "sh64", ARCHITECTURE_SH64 }, +- { "sh", ARCHITECTURE_SH }, ++ { "sh5", ARCHITECTURE_SH64 }, ++ { "sh2", ARCHITECTURE_SH }, ++ { "sh2a", ARCHITECTURE_SH }, ++ { "sh3", ARCHITECTURE_SH }, ++ { "sh4", ARCHITECTURE_SH }, ++ { "sh4a", ARCHITECTURE_SH }, + #elif defined(__m68k__) + { "m68k", ARCHITECTURE_M68K }, + #elif defined(__tilegx__) diff --git a/0057-hwdb-fix-Dell-XPS12-9Q33-key-name.patch b/0057-hwdb-fix-Dell-XPS12-9Q33-key-name.patch new file mode 100644 index 0000000..f780ecc --- /dev/null +++ b/0057-hwdb-fix-Dell-XPS12-9Q33-key-name.patch @@ -0,0 +1,24 @@ +From cc32b9d93a797ce30b139e839432c49ec228271f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Wed, 4 Mar 2015 20:25:04 -0500 +Subject: [PATCH] hwdb: fix Dell XPS12 9Q33 key name + +https://bugs.freedesktop.org/show_bug.cgi?id=84437 +(cherry picked from commit 4f70555d76c90ffdc5a5e4f75bbc08b38022c911) +--- + hwdb/60-keyboard.hwdb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb +index 2cb976923d..88906655ef 100644 +--- a/hwdb/60-keyboard.hwdb ++++ b/hwdb/60-keyboard.hwdb +@@ -259,7 +259,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS*:pvr* + # Dell XPS12 9Q33 + keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:pvr* + KEYBOARD_KEY_88=wlan +- KEYBOARD_KEY_65=switchvideomode # Screen Rotate ++ KEYBOARD_KEY_65=direction # Screen Rotate + + # Dell Latitude microphone mute + keyboard:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude* diff --git a/0058-Remove-the-cap-on-epoll-events.patch b/0058-Remove-the-cap-on-epoll-events.patch new file mode 100644 index 0000000..46f34c6 --- /dev/null +++ b/0058-Remove-the-cap-on-epoll-events.patch @@ -0,0 +1,36 @@ +From c2695a243c2741939080ef92e06f0dfddb59d2af Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 4 Mar 2015 16:32:16 +0100 +Subject: [PATCH] Remove the cap on epoll events + +Currently the code will silently blank out events if there are more +then 512 epoll events, causing them never to be handled at all. This +patch removes the cap on the number of events for epoll_wait, thereby +avoiding this issue. + +(cherry picked from commit 1c724e9e0ec5bc4bf791a3d7b1cf5b955cdb98b2) +--- + src/libsystemd/sd-event/sd-event.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c +index 25089a0335..c6350be9f4 100644 +--- a/src/libsystemd/sd-event/sd-event.c ++++ b/src/libsystemd/sd-event/sd-event.c +@@ -37,7 +37,6 @@ + + #include "sd-event.h" + +-#define EPOLL_QUEUE_MAX 512U + #define DEFAULT_ACCURACY_USEC (250 * USEC_PER_MSEC) + + typedef enum EventSourceType { +@@ -2367,7 +2366,7 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) { + return 1; + } + +- ev_queue_max = CLAMP(e->n_sources, 1U, EPOLL_QUEUE_MAX); ++ ev_queue_max = MAX(e->n_sources, 1u); + ev_queue = newa(struct epoll_event, ev_queue_max); + + m = epoll_wait(e->epoll_fd, ev_queue, ev_queue_max, diff --git a/0059-Allow-up-to-4096-simultaneous-connections.patch b/0059-Allow-up-to-4096-simultaneous-connections.patch new file mode 100644 index 0000000..b1d116b --- /dev/null +++ b/0059-Allow-up-to-4096-simultaneous-connections.patch @@ -0,0 +1,30 @@ +From 7eaa810935ff190e039f465a06663b4d92aea794 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 4 Mar 2015 16:32:17 +0100 +Subject: [PATCH] Allow up to 4096 simultaneous connections + +On large system we hit the limit on 512 simultaneous dbus +connections, resulting in tons of annoying messages: + +Too many concurrent connections, refusing + +This patch raises the limit to 4096. + +(cherry picked from commit cbecf9bf929318533fea798c57c10efcf6b2b447) +--- + src/core/dbus.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/core/dbus.c b/src/core/dbus.c +index 260775cd85..85b5174868 100644 +--- a/src/core/dbus.c ++++ b/src/core/dbus.c +@@ -44,7 +44,7 @@ + #include "bus-internal.h" + #include "selinux-access.h" + +-#define CONNECTIONS_MAX 512 ++#define CONNECTIONS_MAX 4096 + + static void destroy_bus(Manager *m, sd_bus **bus); + diff --git a/0060-hwdb-add-Logitech-G5-Laser-Mouse.patch b/0060-hwdb-add-Logitech-G5-Laser-Mouse.patch new file mode 100644 index 0000000..e8e0c8e --- /dev/null +++ b/0060-hwdb-add-Logitech-G5-Laser-Mouse.patch @@ -0,0 +1,23 @@ +From 09787b60a3876972b9194fe403a9ad9282f5dd86 Mon Sep 17 00:00:00 2001 +From: Jonathon Gilbert +Date: Thu, 5 Mar 2015 20:29:56 +1000 +Subject: [PATCH] hwdb: add Logitech G5 Laser Mouse + +(cherry picked from commit 6437edbebe80e68b782f178c7a76e870a53811d7) +--- + hwdb/70-mouse.hwdb | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb +index a62ebc497d..93ee4d9fa6 100644 +--- a/hwdb/70-mouse.hwdb ++++ b/hwdb/70-mouse.hwdb +@@ -196,6 +196,8 @@ mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4008: + mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101b: + MOUSE_DPI=800@166 + ++# Logitech G5 Laser Mouse ++mouse:usb:v046dpc049:name:Logitech USB Gaming Mouse: + # Logitech G500s Laser Gaming Mouse + mouse:usb:v046dpc24e:name:Logitech G500s Laser Gaming Mouse: + MOUSE_DPI=400@500 *800@500 2000@500 diff --git a/0061-tmpfiles-Fix-handling-of-duplicate-lines.patch b/0061-tmpfiles-Fix-handling-of-duplicate-lines.patch new file mode 100644 index 0000000..a38a61b --- /dev/null +++ b/0061-tmpfiles-Fix-handling-of-duplicate-lines.patch @@ -0,0 +1,32 @@ +From 71265e69fa8a26d8a9669824eeb3ea9d2fe7c923 Mon Sep 17 00:00:00 2001 +From: Martin Pitt +Date: Thu, 5 Mar 2015 14:58:56 +0100 +Subject: [PATCH] tmpfiles: Fix handling of duplicate lines + +Commit 3f93da987 accidentally dropped the "return 0" after detection of a +duplicate line. Put it back, to get back the documented and intended "first +match wins" behaviour. + +https://launchpad.net/bugs/1428540 +(cherry picked from commit 6487ada88d63e4998113f4c57fa10b7c865f8026) +--- + src/tmpfiles/tmpfiles.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c +index 187997e1f4..1e10968164 100644 +--- a/src/tmpfiles/tmpfiles.c ++++ b/src/tmpfiles/tmpfiles.c +@@ -1750,9 +1750,11 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { + unsigned n; + + for (n = 0; n < existing->count; n++) { +- if (!item_compatible(existing->items + n, &i)) ++ if (!item_compatible(existing->items + n, &i)) { + log_warning("[%s:%u] Duplicate line for path \"%s\", ignoring.", + fname, line, i.path); ++ return 0; ++ } + } + } else { + existing = new0(ItemArray, 1); diff --git a/0062-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch b/0062-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch new file mode 100644 index 0000000..79187a7 --- /dev/null +++ b/0062-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch @@ -0,0 +1,23 @@ +From 9e28311ad66214528c4644ca593bcb5259462341 Mon Sep 17 00:00:00 2001 +From: Peter Hutterer +Date: Fri, 6 Mar 2015 11:02:04 +1000 +Subject: [PATCH] hwdb: add Lenovo W451 to TOUCHPAD_HAS_TRACKPOINT_BUTTONS list + +(cherry picked from commit 9638ee90862e4a24f5796e87beebc4c47e2728c2) +--- + hwdb/70-touchpad.hwdb | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/hwdb/70-touchpad.hwdb b/hwdb/70-touchpad.hwdb +index 9fcb5fdb9b..8a324466b3 100644 +--- a/hwdb/70-touchpad.hwdb ++++ b/hwdb/70-touchpad.hwdb +@@ -36,6 +36,8 @@ + + # Lenovo X1 Carbon 3rd + touchpad:pnpid:*LEN0048*: ++# Lenovo W541 ++touchpad:pnpid:*LEN004a*: + # Lenovo T450s + touchpad:pnpid:*LEN200f*: + TOUCHPAD_HAS_TRACKPOINT_BUTTONS=1 diff --git a/0063-vconsole-match-on-vtcon-events-not-fbcon-ones.patch b/0063-vconsole-match-on-vtcon-events-not-fbcon-ones.patch new file mode 100644 index 0000000..b4617c9 --- /dev/null +++ b/0063-vconsole-match-on-vtcon-events-not-fbcon-ones.patch @@ -0,0 +1,39 @@ +From b83da13fffc79b5f4c1edaba3764f4d9be6993ff Mon Sep 17 00:00:00 2001 +From: Jan Engelhardt +Date: Tue, 24 Feb 2015 17:49:02 +0100 +Subject: [PATCH] vconsole: match on vtcon events, not fbcon ones + +I observe that upon loading of framebuffer drivers, I do not get the +desired system font, but the kernel-level defaults (usually +lib/fonts/font_8x16.c, but your mileage may vary depending on kernel +config and boot options). + +The fbcon driver may be loaded at a time way before the first +framebuffer device is active, such that the vconsole setup helper +runs too early. + +The existing rule is non-fitting. The going live of the fbcon kernel +component does not indicate the proper time at which to load the +visuals, which really ought to be done when a new vtcon object comes +into existence. (The font table is a per-vtcon property.) + +(cherry picked from commit a52750d1483ff139df33149afc0b675531e9cd79) +--- + src/vconsole/90-vconsole.rules.in | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/src/vconsole/90-vconsole.rules.in b/src/vconsole/90-vconsole.rules.in +index 062009640c..35b9ad5151 100644 +--- a/src/vconsole/90-vconsole.rules.in ++++ b/src/vconsole/90-vconsole.rules.in +@@ -5,7 +5,6 @@ + # the Free Software Foundation; either version 2.1 of the License, or + # (at your option) any later version. + +-# Kernel resets vconsole state when changing console drivers so run +-# systemd-vconsole-setup when fbcon loads +- +-ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fbcon", RUN+="@rootlibexecdir@/systemd-vconsole-setup" ++# Each vtcon keeps its own state of fonts. ++# ++ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="@rootlibexecdir@/systemd-vconsole-setup" diff --git a/0064-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch b/0064-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch new file mode 100644 index 0000000..8793226 --- /dev/null +++ b/0064-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch @@ -0,0 +1,375 @@ +From 3ef091125ceb159374d2d0d4dbad84d90b252852 Mon Sep 17 00:00:00 2001 +From: Ivan Shapovalov +Date: Sat, 7 Mar 2015 08:44:52 -0500 +Subject: [PATCH] core: do not spawn jobs or touch other units during + coldplugging + +Because the order of coldplugging is not defined, we can reference a +not-yet-coldplugged unit and read its state while it has not yet been +set to a meaningful value. + +This way, already active units may get started again. + +We fix this by deferring such actions until all units have been at +least somehow coldplugged. + +Fixes https://bugs.freedesktop.org/show_bug.cgi?id=88401 + +(cherry picked from commit 6e392c9c45643d106673c6643ac8bf4e65da13c1) +--- + src/core/automount.c | 2 +- + src/core/busname.c | 2 +- + src/core/device.c | 2 +- + src/core/manager.c | 35 +++++++++++++++++++++++++++++++++-- + src/core/mount.c | 2 +- + src/core/path.c | 14 ++++++++++---- + src/core/scope.c | 2 +- + src/core/service.c | 2 +- + src/core/slice.c | 2 +- + src/core/snapshot.c | 2 +- + src/core/socket.c | 2 +- + src/core/swap.c | 2 +- + src/core/target.c | 2 +- + src/core/timer.c | 14 ++++++++++---- + src/core/unit.c | 25 ++++++++++++++++--------- + src/core/unit.h | 12 +++++++++--- + 16 files changed, 89 insertions(+), 33 deletions(-) + +diff --git a/src/core/automount.c b/src/core/automount.c +index 9f6bd84b21..e4c79415d1 100644 +--- a/src/core/automount.c ++++ b/src/core/automount.c +@@ -235,7 +235,7 @@ static void automount_set_state(Automount *a, AutomountState state) { + unit_notify(UNIT(a), state_translation_table[old_state], state_translation_table[state], true); + } + +-static int automount_coldplug(Unit *u) { ++static int automount_coldplug(Unit *u, Hashmap *deferred_work) { + Automount *a = AUTOMOUNT(u); + int r; + +diff --git a/src/core/busname.c b/src/core/busname.c +index 1d77292f9b..43d7607a30 100644 +--- a/src/core/busname.c ++++ b/src/core/busname.c +@@ -335,7 +335,7 @@ static void busname_set_state(BusName *n, BusNameState state) { + unit_notify(UNIT(n), state_translation_table[old_state], state_translation_table[state], true); + } + +-static int busname_coldplug(Unit *u) { ++static int busname_coldplug(Unit *u, Hashmap *deferred_work) { + BusName *n = BUSNAME(u); + int r; + +diff --git a/src/core/device.c b/src/core/device.c +index 1cc103c290..4ff8827219 100644 +--- a/src/core/device.c ++++ b/src/core/device.c +@@ -142,7 +142,7 @@ static void device_set_state(Device *d, DeviceState state) { + unit_notify(UNIT(d), state_translation_table[old_state], state_translation_table[state], true); + } + +-static int device_coldplug(Unit *u) { ++static int device_coldplug(Unit *u, Hashmap *deferred_work) { + Device *d = DEVICE(u); + + assert(d); +diff --git a/src/core/manager.c b/src/core/manager.c +index bc9b7ec620..203a6a0a1a 100644 +--- a/src/core/manager.c ++++ b/src/core/manager.c +@@ -983,7 +983,28 @@ static int manager_coldplug(Manager *m) { + Unit *u; + char *k; + +- assert(m); ++ /* ++ * Some unit types tend to spawn jobs or check other units' state ++ * during coldplug. This is wrong because it is undefined whether the ++ * units in question have been already coldplugged (i. e. their state ++ * restored). This way, we can easily re-start an already started unit ++ * or otherwise make a wrong decision based on the unit's state. ++ * ++ * Solve this by providing a way for coldplug functions to defer ++ * such actions until after all units have been coldplugged. ++ * ++ * We store Unit* -> int(*)(Unit*). ++ * ++ * https://bugs.freedesktop.org/show_bug.cgi?id=88401 ++ */ ++ _cleanup_hashmap_free_ Hashmap *deferred_work = NULL; ++ int(*proc)(Unit*); ++ ++ assert(m); ++ ++ deferred_work = hashmap_new(&trivial_hash_ops); ++ if (!deferred_work) ++ return -ENOMEM; + + /* Then, let's set up their initial state. */ + HASHMAP_FOREACH_KEY(u, k, m->units, i) { +@@ -993,7 +1014,17 @@ static int manager_coldplug(Manager *m) { + if (u->id != k) + continue; + +- q = unit_coldplug(u); ++ q = unit_coldplug(u, deferred_work); ++ if (q < 0) ++ r = q; ++ } ++ ++ /* After coldplugging and setting up initial state of the units, ++ * let's perform operations which spawn jobs or query units' state. */ ++ HASHMAP_FOREACH_KEY(proc, u, deferred_work, i) { ++ int q; ++ ++ q = proc(u); + if (q < 0) + r = q; + } +diff --git a/src/core/mount.c b/src/core/mount.c +index c971330af2..3ae0eb4621 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -617,7 +617,7 @@ static void mount_set_state(Mount *m, MountState state) { + m->reload_result = MOUNT_SUCCESS; + } + +-static int mount_coldplug(Unit *u) { ++static int mount_coldplug(Unit *u, Hashmap *deferred_work) { + Mount *m = MOUNT(u); + MountState new_state = MOUNT_DEAD; + int r; +diff --git a/src/core/path.c b/src/core/path.c +index e5ea79fec7..51e36fa8be 100644 +--- a/src/core/path.c ++++ b/src/core/path.c +@@ -440,7 +440,12 @@ static void path_set_state(Path *p, PathState state) { + + static void path_enter_waiting(Path *p, bool initial, bool recheck); + +-static int path_coldplug(Unit *u) { ++static int path_enter_waiting_coldplug(Unit *u) { ++ path_enter_waiting(PATH(u), true, true); ++ return 0; ++} ++ ++static int path_coldplug(Unit *u, Hashmap *deferred_work) { + Path *p = PATH(u); + + assert(p); +@@ -449,9 +454,10 @@ static int path_coldplug(Unit *u) { + if (p->deserialized_state != p->state) { + + if (p->deserialized_state == PATH_WAITING || +- p->deserialized_state == PATH_RUNNING) +- path_enter_waiting(p, true, true); +- else ++ p->deserialized_state == PATH_RUNNING) { ++ hashmap_put(deferred_work, u, &path_enter_waiting_coldplug); ++ path_set_state(p, PATH_WAITING); ++ } else + path_set_state(p, p->deserialized_state); + } + +diff --git a/src/core/scope.c b/src/core/scope.c +index b41db7872c..ae6614fbf0 100644 +--- a/src/core/scope.c ++++ b/src/core/scope.c +@@ -173,7 +173,7 @@ static int scope_load(Unit *u) { + return scope_verify(s); + } + +-static int scope_coldplug(Unit *u) { ++static int scope_coldplug(Unit *u, Hashmap *deferred_work) { + Scope *s = SCOPE(u); + int r; + +diff --git a/src/core/service.c b/src/core/service.c +index 15e29be149..7781b4e626 100644 +--- a/src/core/service.c ++++ b/src/core/service.c +@@ -879,7 +879,7 @@ static void service_set_state(Service *s, ServiceState state) { + s->reload_result = SERVICE_SUCCESS; + } + +-static int service_coldplug(Unit *u) { ++static int service_coldplug(Unit *u, Hashmap *deferred_work) { + Service *s = SERVICE(u); + int r; + +diff --git a/src/core/slice.c b/src/core/slice.c +index ae9819d015..61ff9d3314 100644 +--- a/src/core/slice.c ++++ b/src/core/slice.c +@@ -153,7 +153,7 @@ static int slice_load(Unit *u) { + return slice_verify(s); + } + +-static int slice_coldplug(Unit *u) { ++static int slice_coldplug(Unit *u, Hashmap *deferred_work) { + Slice *t = SLICE(u); + + assert(t); +diff --git a/src/core/snapshot.c b/src/core/snapshot.c +index b70c3beb60..b1d8448771 100644 +--- a/src/core/snapshot.c ++++ b/src/core/snapshot.c +@@ -75,7 +75,7 @@ static int snapshot_load(Unit *u) { + return 0; + } + +-static int snapshot_coldplug(Unit *u) { ++static int snapshot_coldplug(Unit *u, Hashmap *deferred_work) { + Snapshot *s = SNAPSHOT(u); + + assert(s); +diff --git a/src/core/socket.c b/src/core/socket.c +index 88aae4815b..760de0203d 100644 +--- a/src/core/socket.c ++++ b/src/core/socket.c +@@ -1326,7 +1326,7 @@ static void socket_set_state(Socket *s, SocketState state) { + unit_notify(UNIT(s), state_translation_table[old_state], state_translation_table[state], true); + } + +-static int socket_coldplug(Unit *u) { ++static int socket_coldplug(Unit *u, Hashmap *deferred_work) { + Socket *s = SOCKET(u); + int r; + +diff --git a/src/core/swap.c b/src/core/swap.c +index 5c19af5d91..369abf0f53 100644 +--- a/src/core/swap.c ++++ b/src/core/swap.c +@@ -513,7 +513,7 @@ static void swap_set_state(Swap *s, SwapState state) { + job_add_to_run_queue(UNIT(other)->job); + } + +-static int swap_coldplug(Unit *u) { ++static int swap_coldplug(Unit *u, Hashmap *deferred_work) { + Swap *s = SWAP(u); + SwapState new_state = SWAP_DEAD; + int r; +diff --git a/src/core/target.c b/src/core/target.c +index 33fb66bc3f..2411a8e758 100644 +--- a/src/core/target.c ++++ b/src/core/target.c +@@ -107,7 +107,7 @@ static int target_load(Unit *u) { + return 0; + } + +-static int target_coldplug(Unit *u) { ++static int target_coldplug(Unit *u, Hashmap *deferred_work) { + Target *t = TARGET(u); + + assert(t); +diff --git a/src/core/timer.c b/src/core/timer.c +index 45744c7de5..48cf9c16a8 100644 +--- a/src/core/timer.c ++++ b/src/core/timer.c +@@ -268,7 +268,12 @@ static void timer_set_state(Timer *t, TimerState state) { + + static void timer_enter_waiting(Timer *t, bool initial); + +-static int timer_coldplug(Unit *u) { ++static int timer_enter_waiting_coldplug(Unit *u) { ++ timer_enter_waiting(TIMER(u), false); ++ return 0; ++} ++ ++static int timer_coldplug(Unit *u, Hashmap *deferred_work) { + Timer *t = TIMER(u); + + assert(t); +@@ -276,9 +281,10 @@ static int timer_coldplug(Unit *u) { + + if (t->deserialized_state != t->state) { + +- if (t->deserialized_state == TIMER_WAITING) +- timer_enter_waiting(t, false); +- else ++ if (t->deserialized_state == TIMER_WAITING) { ++ hashmap_put(deferred_work, u, &timer_enter_waiting_coldplug); ++ timer_set_state(t, TIMER_WAITING); ++ } else + timer_set_state(t, t->deserialized_state); + } + +diff --git a/src/core/unit.c b/src/core/unit.c +index a6558ee23b..565455bd63 100644 +--- a/src/core/unit.c ++++ b/src/core/unit.c +@@ -2859,27 +2859,34 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) { + return 0; + } + +-int unit_coldplug(Unit *u) { ++static int unit_add_deserialized_job_coldplug(Unit *u) { ++ int r; ++ ++ r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL); ++ if (r < 0) ++ return r; ++ ++ u->deserialized_job = _JOB_TYPE_INVALID; ++ ++ return 0; ++} ++ ++int unit_coldplug(Unit *u, Hashmap *deferred_work) { + int r; + + assert(u); + + if (UNIT_VTABLE(u)->coldplug) +- if ((r = UNIT_VTABLE(u)->coldplug(u)) < 0) ++ if ((r = UNIT_VTABLE(u)->coldplug(u, deferred_work)) < 0) + return r; + + if (u->job) { + r = job_coldplug(u->job); + if (r < 0) + return r; +- } else if (u->deserialized_job >= 0) { ++ } else if (u->deserialized_job >= 0) + /* legacy */ +- r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL); +- if (r < 0) +- return r; +- +- u->deserialized_job = _JOB_TYPE_INVALID; +- } ++ hashmap_put(deferred_work, u, &unit_add_deserialized_job_coldplug); + + return 0; + } +diff --git a/src/core/unit.h b/src/core/unit.h +index 291bc77a76..7ebc489c80 100644 +--- a/src/core/unit.h ++++ b/src/core/unit.h +@@ -307,8 +307,14 @@ struct UnitVTable { + int (*load)(Unit *u); + + /* If a lot of units got created via enumerate(), this is +- * where to actually set the state and call unit_notify(). */ +- int (*coldplug)(Unit *u); ++ * where to actually set the state and call unit_notify(). ++ * ++ * This must not reference other units (maybe implicitly through spawning ++ * jobs), because it is possible that they are not yet coldplugged. ++ * Such actions must be deferred until the end of coldplug bу adding ++ * a "Unit* -> int(*)(Unit*)" entry into the hashmap. ++ */ ++ int (*coldplug)(Unit *u, Hashmap *deferred_work); + + void (*dump)(Unit *u, FILE *f, const char *prefix); + +@@ -544,7 +550,7 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds); + + int unit_add_node_link(Unit *u, const char *what, bool wants); + +-int unit_coldplug(Unit *u); ++int unit_coldplug(Unit *u, Hashmap *deferred_work); + + void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format) _printf_(3, 0); + diff --git a/0065-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch b/0065-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch new file mode 100644 index 0000000..dc35c94 --- /dev/null +++ b/0065-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch @@ -0,0 +1,28 @@ +From 646308cdc78e95caa311d6d140379ce24954c068 Mon Sep 17 00:00:00 2001 +From: Ivan Shapovalov +Date: Thu, 26 Feb 2015 02:46:24 +0300 +Subject: [PATCH] firstboot: set all spwd fields to -1 for consistency with + sysusers + +(cherry picked from commit ad525df851a1bef7369fe21b5cde382941e7b073) +--- + src/firstboot/firstboot.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c +index a765d6d219..a37ca170fb 100644 +--- a/src/firstboot/firstboot.c ++++ b/src/firstboot/firstboot.c +@@ -525,9 +525,9 @@ static int process_root_password(void) { + + struct spwd item = { + .sp_namp = (char*) "root", +- .sp_min = 0, +- .sp_max = 99999, +- .sp_warn = 7, ++ .sp_min = -1, ++ .sp_max = -1, ++ .sp_warn = -1, + .sp_inact = -1, + .sp_expire = -1, + .sp_flag = (unsigned long) -1, /* this appears to be what everybody does ... */ diff --git a/0066-sysusers-do-not-reject-users-with-already-present-et.patch b/0066-sysusers-do-not-reject-users-with-already-present-et.patch new file mode 100644 index 0000000..e92da59 --- /dev/null +++ b/0066-sysusers-do-not-reject-users-with-already-present-et.patch @@ -0,0 +1,77 @@ +From 3f25df7d013a98f7a60b216f1687e95ff6a6cbbb Mon Sep 17 00:00:00 2001 +From: Ivan Shapovalov +Date: Sat, 7 Mar 2015 18:11:32 +0300 +Subject: [PATCH] sysusers: do not reject users with already present + /etc/shadow entries + +This is needed to interoperate firstboot and sysusers. The former one is started +first, and it writes only /etc/shadow when it is told to set the root password. +It's better to relax checks here than to duplicate functionality in firstboot. + +(cherry picked from commit c5abf22514b3925aa6f0d4a3f36f76799bf1911b) +--- + src/sysusers/sysusers.c | 23 +++++++++-------------- + 1 file changed, 9 insertions(+), 14 deletions(-) + +diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c +index e47bcb4dca..76b5962c51 100644 +--- a/src/sysusers/sysusers.c ++++ b/src/sysusers/sysusers.c +@@ -605,6 +605,8 @@ static int write_files(void) { + if (r < 0) + goto finish; + ++ lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY); ++ + original = fopen(shadow_path, "re"); + if (original) { + struct spwd *sp; +@@ -618,8 +620,13 @@ static int write_files(void) { + + i = hashmap_get(users, sp->sp_namp); + if (i && i->todo_user) { +- r = -EEXIST; +- goto finish; ++ /* we will update the existing entry */ ++ sp->sp_lstchg = lstchg; ++ ++ /* only the /etc/shadow stage is left, so we can ++ * safely remove the item from the todo set */ ++ i->todo_user = false; ++ hashmap_remove(todo_uids, UID_TO_PTR(i->uid)); + } + + errno = 0; +@@ -642,7 +649,6 @@ static int write_files(void) { + goto finish; + } + +- lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY); + HASHMAP_FOREACH(i, todo_uids, iterator) { + struct spwd n = { + .sp_namp = i->name, +@@ -879,7 +885,6 @@ static int add_user(Item *i) { + + if (!arg_root) { + struct passwd *p; +- struct spwd *sp; + + /* Also check NSS */ + errno = 0; +@@ -895,16 +900,6 @@ static int add_user(Item *i) { + } + if (!IN_SET(errno, 0, ENOENT)) + return log_error_errno(errno, "Failed to check if user %s already exists: %m", i->name); +- +- /* And shadow too, just to be sure */ +- errno = 0; +- sp = getspnam(i->name); +- if (sp) { +- log_error("User %s already exists in shadow database, but not in user database.", i->name); +- return -EBADMSG; +- } +- if (!IN_SET(errno, 0, ENOENT)) +- return log_error_errno(errno, "Failed to check if user %s already exists in shadow database: %m", i->name); + } + + /* Try to use the suggested numeric uid */ diff --git a/0067-nspawn-fix-use-after-free-and-leak-in-error-paths.patch b/0067-nspawn-fix-use-after-free-and-leak-in-error-paths.patch new file mode 100644 index 0000000..dc0a610 --- /dev/null +++ b/0067-nspawn-fix-use-after-free-and-leak-in-error-paths.patch @@ -0,0 +1,40 @@ +From fa09f5c3ceef08947225a9c39edb09411f3929d4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 7 Mar 2015 14:19:20 -0500 +Subject: [PATCH] nspawn: fix use-after-free and leak in error paths + +CID #1257765. + +(cherry picked from commit 8a16a7b4e7f6702a7e6edaead80ecf04be7d3ba2) +--- + src/nspawn/nspawn.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c +index 7724df96bd..78bd584834 100644 +--- a/src/nspawn/nspawn.c ++++ b/src/nspawn/nspawn.c +@@ -3627,7 +3627,7 @@ int main(int argc, char *argv[]) { + } + + if (arg_ephemeral) { +- char *np; ++ _cleanup_free_ char *np = NULL; + + /* If the specified path is a mount point we + * generate the new snapshot immediately +@@ -3657,13 +3657,13 @@ int main(int argc, char *argv[]) { + + r = btrfs_subvol_snapshot(arg_directory, np, arg_read_only, true); + if (r < 0) { +- free(np); + log_error_errno(r, "Failed to create snapshot %s from %s: %m", np, arg_directory); + goto finish; + } + + free(arg_directory); + arg_directory = np; ++ np = NULL; + + remove_subvol = true; + diff --git a/0068-login-fix-copy-pasto-in-error-path.patch b/0068-login-fix-copy-pasto-in-error-path.patch new file mode 100644 index 0000000..567c12d --- /dev/null +++ b/0068-login-fix-copy-pasto-in-error-path.patch @@ -0,0 +1,25 @@ +From c29a899e634e5b16c7afcce1ac7c28514988a9f6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sat, 7 Mar 2015 14:23:38 -0500 +Subject: [PATCH] login: fix copy-pasto in error path + +CID #1256583. + +(cherry picked from commit dcee01125dde502bd8108c36ddf2026c1348865f) +--- + src/login/inhibit.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/login/inhibit.c b/src/login/inhibit.c +index 44bda34aff..88af23e35c 100644 +--- a/src/login/inhibit.c ++++ b/src/login/inhibit.c +@@ -260,7 +260,7 @@ int main(int argc, char *argv[]) { + + fd = inhibit(bus, &error); + if (fd < 0) { +- log_error("Failed to inhibit: %s", bus_error_message(&error, -r)); ++ log_error("Failed to inhibit: %s", bus_error_message(&error, fd)); + return EXIT_FAILURE; + } + diff --git a/0069-journalctl-update-hint-now-that-we-set-ACL-everywher.patch b/0069-journalctl-update-hint-now-that-we-set-ACL-everywher.patch new file mode 100644 index 0000000..8538c76 --- /dev/null +++ b/0069-journalctl-update-hint-now-that-we-set-ACL-everywher.patch @@ -0,0 +1,63 @@ +From e8d55cb62e0c12b09d3fa02f4fc1a1e0b197020b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 8 Mar 2015 11:04:59 -0400 +Subject: [PATCH] journalctl: update hint now that we set ACL everywhere + +(cherry picked from commit 05c1853093d8c4e4aa16876b5129b65dac5abd01) +--- + src/journal/journalctl.c | 25 +++++++++++-------------- + 1 file changed, 11 insertions(+), 14 deletions(-) + +diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c +index 55c7786331..12c869f5af 100644 +--- a/src/journal/journalctl.c ++++ b/src/journal/journalctl.c +@@ -1542,10 +1542,17 @@ static int access_check_var_log_journal(sd_journal *j) { + have_access = in_group("systemd-journal") > 0; + + if (!have_access) { ++ const char* dir; ++ ++ if (access("/run/log/journal", F_OK) >= 0) ++ dir = "/run/log/journal"; ++ else ++ dir = "/var/log/journal"; ++ + /* Let's enumerate all groups from the default ACL of + * the directory, which generally should allow access + * to most journal files too */ +- r = search_acl_groups(&g, "/var/log/journal/", &have_access); ++ r = search_acl_groups(&g, dir, &have_access); + if (r < 0) + return r; + } +@@ -1571,7 +1578,7 @@ static int access_check_var_log_journal(sd_journal *j) { + return log_oom(); + + log_notice("Hint: You are currently not seeing messages from other users and the system.\n" +- " Users in the groups '%s' can see all messages.\n" ++ " Users in groups '%s' can see all messages.\n" + " Pass -q to turn off this notice.", s); + } + } +@@ -1595,18 +1602,8 @@ static int access_check(sd_journal *j) { + + if (set_contains(j->errors, INT_TO_PTR(-EACCES))) { + #ifdef HAVE_ACL +- /* If /var/log/journal doesn't even exist, +- * unprivileged users have no access at all */ +- if (access("/var/log/journal", F_OK) < 0 && +- geteuid() != 0 && +- in_group("systemd-journal") <= 0) { +- log_error("Unprivileged users cannot access messages, unless persistent log storage is\n" +- "enabled. Users in the 'systemd-journal' group may always access messages."); +- return -EACCES; +- } +- +- /* If /var/log/journal exists, try to pring a nice +- notice if the user lacks access to it */ ++ /* If /run/log/journal or /var/log/journal exist, try ++ to pring a nice notice if the user lacks access to it. */ + if (!arg_quiet && geteuid() != 0) { + r = access_check_var_log_journal(j); + if (r < 0) diff --git a/0070-sd-journal-return-error-when-we-cannot-open-a-file.patch b/0070-sd-journal-return-error-when-we-cannot-open-a-file.patch new file mode 100644 index 0000000..42beb07 --- /dev/null +++ b/0070-sd-journal-return-error-when-we-cannot-open-a-file.patch @@ -0,0 +1,26 @@ +From 67c29191b0d4880decb771f2ed5cd155a4de09db Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Sun, 8 Mar 2015 11:11:50 -0400 +Subject: [PATCH] sd-journal: return error when we cannot open a file + +Lack of this caused journalctl not to display a hint about missing groups +properly when the user lacks permissions. + +(cherry picked from commit 7b300be75e6d5755778dd7da63e7147866f21351) +--- + src/journal/sd-journal.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c +index 9b57e5945d..9b9e8ac859 100644 +--- a/src/journal/sd-journal.c ++++ b/src/journal/sd-journal.c +@@ -1248,7 +1248,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { + r = add_any_file(j, path); + if (r == -ENOENT) + return 0; +- return 0; ++ return r; + } + + static int remove_file(sd_journal *j, const char *prefix, const char *filename) { diff --git a/0071-missing.h-add-NDA_.patch b/0071-missing.h-add-NDA_.patch new file mode 100644 index 0000000..093e8d7 --- /dev/null +++ b/0071-missing.h-add-NDA_.patch @@ -0,0 +1,70 @@ +From e1deb661ba31023c77aaac6656da514654df3393 Mon Sep 17 00:00:00 2001 +From: Michael Olbrich +Date: Mon, 9 Mar 2015 12:27:25 +0100 +Subject: [PATCH] missing.h: add NDA_* + +This is necessary to build with older kernel headers. NDA_VLAN was +introduced in v3.9 and NDA_PORT, NDA_VNI and NDA_IFINDEX in v3.10 + +(cherry picked from commit cf1755bac0426132c21fdca519a336ce7d920277) +--- + configure.ac | 4 +++- + src/shared/missing.h | 16 ++++++++++++++++ + 2 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 6bc347423b..14a7736a9e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -333,7 +333,8 @@ AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE, + IFLA_VXLAN_LOCAL6, + IFLA_IPTUN_6RD_RELAY_PREFIXLEN, + IFLA_BRIDGE_VLAN_INFO, +- IFLA_BRPORT_UNICAST_FLOOD], ++ IFLA_BRPORT_UNICAST_FLOOD, ++ NDA_IFINDEX], + [], [], [[ + #include + #include +@@ -344,6 +345,7 @@ AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE, + #include + #include + #include ++#include + ]]) + + # This makes sure pkg.m4 is available. +diff --git a/src/shared/missing.h b/src/shared/missing.h +index e72631e130..802b4957e0 100644 +--- a/src/shared/missing.h ++++ b/src/shared/missing.h +@@ -35,6 +35,7 @@ + #include + #include + #include ++#include + + #ifdef HAVE_AUDIT + #include +@@ -623,6 +624,21 @@ static inline int setns(int fd, int nstype) { + #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) + #endif + ++#if !HAVE_DECL_NDA_IFINDEX ++#define NDA_UNSPEC 0 ++#define NDA_DST 1 ++#define NDA_LLADDR 2 ++#define NDA_CACHEINFO 3 ++#define NDA_PROBES 4 ++#define NDA_VLAN 5 ++#define NDA_PORT 6 ++#define NDA_VNI 7 ++#define NDA_IFINDEX 8 ++#define __NDA_MAX 9 ++ ++#define NDA_MAX (__NDA_MAX - 1) ++#endif ++ + #ifndef IPV6_UNICAST_IF + #define IPV6_UNICAST_IF 76 + #endif diff --git a/0072-udevd-close-race-in-udev-settle.patch b/0072-udevd-close-race-in-udev-settle.patch new file mode 100644 index 0000000..925baba --- /dev/null +++ b/0072-udevd-close-race-in-udev-settle.patch @@ -0,0 +1,85 @@ +From 0c9591e78e2dde262865e3c683d2fbd80692d4ff Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Mon, 9 Mar 2015 16:16:23 +0100 +Subject: [PATCH] udevd: close race in udev settle + +The udev-settle guarantees that udevd is no longer processing any of the +events casued by udev-trigger. The way this works is that it sends a +synchronous PING to udevd after udev-trigger has ran, and when that returns +it knows that udevd has started processing the events from udev-trigger. +udev-settle will then wait for the event queue to empty before returning. + +However, there was a race here, as we would only update the /run state at +the beginning of the event loop, before reading out new events and before +processing the ping. + +That means that if the first uevent arrived in the same event-loop iteration +as the PING, we would return the ping before updating the queue state in /run +(which would happen on the next iteration). + +The race window here is tiny (as the /run state would probably get updated +before udev-settle got a chance to read /run), but still a possibility. + +Fix the problem by updating the /run state as the last step before returning +the PING. + +We must still update it at the beginning of the loop as well, otherwise we +risk being stuck in poll() with a stale state in /run. + +Reported-by: Daniel Drake +(cherry picked from commit db93e063bdffe0a8b95fcc522aeacddf62d1a9f9) +--- + src/udev/udevd.c | 26 +++++++++++++++++--------- + 1 file changed, 17 insertions(+), 9 deletions(-) + +diff --git a/src/udev/udevd.c b/src/udev/udevd.c +index 99d4c8983a..e98c1fd6da 100644 +--- a/src/udev/udevd.c ++++ b/src/udev/udevd.c +@@ -909,6 +909,17 @@ static void handle_signal(struct udev *udev, int signo) { + } + } + ++static void event_queue_update(void) { ++ if (!udev_list_node_is_empty(&event_list)) { ++ int fd; ++ ++ fd = open("/run/udev/queue", O_WRONLY|O_CREAT|O_CLOEXEC|O_TRUNC|O_NOFOLLOW, 0444); ++ if (fd >= 0) ++ close(fd); ++ } else ++ unlink("/run/udev/queue"); ++} ++ + static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink) { + int ctrl = -1, netlink = -1; + int fd, n; +@@ -1369,15 +1380,7 @@ int main(int argc, char *argv[]) { + } + + /* tell settle that we are busy or idle */ +- if (!udev_list_node_is_empty(&event_list)) { +- int fd; +- +- fd = open("/run/udev/queue", O_WRONLY|O_CREAT|O_CLOEXEC|O_TRUNC|O_NOFOLLOW, 0444); +- if (fd >= 0) +- close(fd); +- } else { +- unlink("/run/udev/queue"); +- } ++ event_queue_update(); + + fdcount = epoll_wait(fd_ep, ev, ELEMENTSOF(ev), timeout); + if (fdcount < 0) +@@ -1502,6 +1505,11 @@ int main(int argc, char *argv[]) { + if (is_inotify) + handle_inotify(udev); + ++ /* tell settle that we are busy or idle, this needs to be before the ++ * PING handling ++ */ ++ event_queue_update(); ++ + /* + * This needs to be after the inotify handling, to make sure, + * that the ping is send back after the possibly generated diff --git a/0073-man-document-that-ExecStartPre-is-not-the-place-to-s.patch b/0073-man-document-that-ExecStartPre-is-not-the-place-to-s.patch new file mode 100644 index 0000000..c045c4b --- /dev/null +++ b/0073-man-document-that-ExecStartPre-is-not-the-place-to-s.patch @@ -0,0 +1,27 @@ +From 5180cbe32605e4ae5d1b8870a845d6bde73af168 Mon Sep 17 00:00:00 2001 +From: Lennart Poettering +Date: Mon, 9 Mar 2015 18:01:47 +0100 +Subject: [PATCH] man: document that ExecStartPre= is not the place to start + long-running processes + +(cherry picked from commit b481de3b22fcd838a8f059aed8745375afdb9eca) +--- + man/systemd.service.xml | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/man/systemd.service.xml b/man/systemd.service.xml +index c03b4e8a54..f598705633 100644 +--- a/man/systemd.service.xml ++++ b/man/systemd.service.xml +@@ -334,6 +334,11 @@ + If any of those commands (not prefixed with + -) fail, the rest are not executed and the + unit is considered failed. ++ ++ Note that ExecStartPre= may not be ++ used to start long-running processes. All processes forked ++ off by processes invoked via ExecStartPre= will ++ be killed before the next service process is run. + + + diff --git a/0074-journal-fix-return-code.patch b/0074-journal-fix-return-code.patch new file mode 100644 index 0000000..caff010 --- /dev/null +++ b/0074-journal-fix-return-code.patch @@ -0,0 +1,31 @@ +From c59d61522d87fdaca015f51466d7357288a95110 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Mon, 9 Mar 2015 17:46:30 -0400 +Subject: [PATCH] journal: fix return code + +Introduced in fa6ac76083b8ff. + +Might be related to CID #1261724, but I don't know if coverity can +recurse this deep. + +(cherry picked from commit 977eaa1eae53af7f418d87fcb42f4a4d34aad739) +--- + src/journal/journal-file.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c +index 24c49b916a..f500568fec 100644 +--- a/src/journal/journal-file.c ++++ b/src/journal/journal-file.c +@@ -2652,10 +2652,8 @@ int journal_file_open( + } + + r = mmap_cache_get(f->mmap, f->fd, f->prot, CONTEXT_HEADER, true, 0, PAGE_ALIGN(sizeof(Header)), &f->last_stat, &h); +- if (r < 0) { +- r = -errno; ++ if (r < 0) + goto fail; +- } + + f->header = h; + diff --git a/0075-console-fix-error-code-inversion.patch b/0075-console-fix-error-code-inversion.patch new file mode 100644 index 0000000..9e4ce33 --- /dev/null +++ b/0075-console-fix-error-code-inversion.patch @@ -0,0 +1,27 @@ +From c04228cbd9373f2e5242e871ef1cb8878559f27e Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Tue, 16 Dec 2014 16:14:48 +0100 +Subject: [PATCH] console: fix error-code inversion + +The error-code propagated via sysview is always negative. Avoid +multiplying by -1 before returning it. Otherwise, we will return >0 +instead of <0, which will not be detected as error by sysview-core. + +(cherry picked from commit 84c3561c58dd992b339afe5bb4c41971a2ebc486) +--- + src/console/consoled-manager.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/console/consoled-manager.c b/src/console/consoled-manager.c +index 9dd62f04a0..25de0a218f 100644 +--- a/src/console/consoled-manager.c ++++ b/src/console/consoled-manager.c +@@ -228,7 +228,7 @@ static int manager_sysview_session_control(Manager *m, sysview_event *event) { + sysview_session_get_name(session)); + session_free(s); + sysview_session_set_userdata(session, NULL); +- return -error; ++ return error; + } + + return 0; diff --git a/0076-bus-proxy-complain-only-once-about-queue-overflows.patch b/0076-bus-proxy-complain-only-once-about-queue-overflows.patch new file mode 100644 index 0000000..de8e8d9 --- /dev/null +++ b/0076-bus-proxy-complain-only-once-about-queue-overflows.patch @@ -0,0 +1,72 @@ +From c98114c5e5c5b9d1e8fea75a0bfb37f0d329fd36 Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Wed, 11 Mar 2015 13:53:21 +0100 +Subject: [PATCH] bus-proxy: complain only once about queue overflows + +If the local peer does not dispatch its incoming queue, the bus-proxy will +slowly fill its outgoing queue. Once its full, it will continously +complain that it cannot forward its messages. + +As it turns out, pulseaudio does have an idle background dbus connection +that is not integrated into any mainloop (and given that gdbus and +libdbus1 both support background shared connections, PA is probably not +the only example), therefore, the bus-proxy will loudly complain if it +cannot forward NameOwnerChanged events once the queue is full. + +This commit makes the proxy track queue-state and complain only once the +queue runs full, not if it is already full. + +A PA bug-report (and patch) has been filed, and other applications should +be fixed similarly. Hence, lets keep the error message, instead of +dropping it. It's unused resources we really want to get rid of, so +silencing the message does not really help (which is actually what +dbus-daemon does). + +(cherry picked from commit ec2c7b56599981a7d9e76b15c75af3e1af3e6f81) +--- + src/bus-proxyd/proxy.c | 16 ++++++++++++---- + src/bus-proxyd/proxy.h | 1 + + 2 files changed, 13 insertions(+), 4 deletions(-) + +diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c +index 3dea908f5b..e13cf5e2ea 100644 +--- a/src/bus-proxyd/proxy.c ++++ b/src/bus-proxyd/proxy.c +@@ -729,13 +729,21 @@ static int proxy_process_destination_to_local(Proxy *p) { + + /* Return the error to the client, if we can */ + synthetic_reply_method_errnof(m, r, "Failed to forward message we got from destination: %m"); +- log_error_errno(r, +- "Failed to forward message we got from destination: uid=" UID_FMT " gid=" GID_FMT" message=%s destination=%s path=%s interface=%s member=%s: %m", +- p->local_creds.uid, p->local_creds.gid, bus_message_type_to_string(m->header->type), +- strna(m->destination), strna(m->path), strna(m->interface), strna(m->member)); ++ if (r == -ENOBUFS) { ++ /* if local dbus1 peer does not dispatch its queue, warn only once */ ++ if (!p->queue_overflow) ++ log_error("Dropped messages due to queue overflow of local peer (pid: "PID_FMT" uid: "UID_FMT")", p->local_creds.pid, p->local_creds.uid); ++ p->queue_overflow = true; ++ } else ++ log_error_errno(r, ++ "Failed to forward message we got from destination: uid=" UID_FMT " gid=" GID_FMT" message=%s destination=%s path=%s interface=%s member=%s: %m", ++ p->local_creds.uid, p->local_creds.gid, bus_message_type_to_string(m->header->type), ++ strna(m->destination), strna(m->path), strna(m->interface), strna(m->member)); ++ + return 1; + } + ++ p->queue_overflow = false; + return 1; + } + +diff --git a/src/bus-proxyd/proxy.h b/src/bus-proxyd/proxy.h +index 913d47071b..782c4e60b3 100644 +--- a/src/bus-proxyd/proxy.h ++++ b/src/bus-proxyd/proxy.h +@@ -40,6 +40,7 @@ struct Proxy { + SharedPolicy *policy; + + bool got_hello : 1; ++ bool queue_overflow : 1; + }; + + int proxy_new(Proxy **out, int in_fd, int out_fd, const char *dest); diff --git a/0077-cgtop-fix-assert-when-not-on-tty.patch b/0077-cgtop-fix-assert-when-not-on-tty.patch new file mode 100644 index 0000000..ef993b7 --- /dev/null +++ b/0077-cgtop-fix-assert-when-not-on-tty.patch @@ -0,0 +1,31 @@ +From b964d7b5736871e9bc7e07df209006d5da86cbe6 Mon Sep 17 00:00:00 2001 +From: Umut Tezduyar Lindskog +Date: Wed, 11 Mar 2015 11:24:18 +0100 +Subject: [PATCH] cgtop: fix assert when not on tty + +systemd-cgtop --dept=1 -b -n 10 -d 0.1 | cat + +Assertion 'new_length >= 3' failed at src/shared/util.c:3 \ +595, function ellipsize_mem(). Aborting. +Aborted (core dumped) + +(David: add comment) + +(cherry picked from commit 510c4a0f1e7e7efe2897d2fbb9067f121467b103) +--- + src/cgtop/cgtop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c +index 3c7ad40605..f951c37cbc 100644 +--- a/src/cgtop/cgtop.c ++++ b/src/cgtop/cgtop.c +@@ -447,7 +447,7 @@ static int display(Hashmap *a) { + Group *g; + Group **array; + signed path_columns; +- unsigned rows, n = 0, j, maxtcpu = 0, maxtpath = 0; ++ unsigned rows, n = 0, j, maxtcpu = 0, maxtpath = 3; /* 3 for ellipsize() to work properly */ + char buffer[MAX3(21, FORMAT_BYTES_MAX, FORMAT_TIMESPAN_MAX)]; + + assert(a); diff --git a/0078-man-split-paragraph.patch b/0078-man-split-paragraph.patch new file mode 100644 index 0000000..94fd8db --- /dev/null +++ b/0078-man-split-paragraph.patch @@ -0,0 +1,28 @@ +From f6aeb4c2de958ed625edacb6b14a5e4cca6d726c Mon Sep 17 00:00:00 2001 +From: David Herrmann +Date: Thu, 12 Mar 2015 12:46:46 +0100 +Subject: [PATCH] man: split paragraph + +Explicitly put the "multiple EnvironmentFile=" description into its own +paragraph to make it much easier to find. + +(cherry picked from commit f407824d751a9cb31abfdf0343fe179e0efef259) +--- + man/systemd.exec.xml | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml +index 11b160e58f..fdb1578641 100644 +--- a/man/systemd.exec.xml ++++ b/man/systemd.exec.xml +@@ -283,7 +283,9 @@ + shortly before the process is executed (more specifically, + 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 ++ 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 the order diff --git a/0079-hwdb-update.patch b/0079-hwdb-update.patch new file mode 100644 index 0000000..8a940c6 --- /dev/null +++ b/0079-hwdb-update.patch @@ -0,0 +1,3156 @@ +From 9ac622b00ca23f9d01e0ff0c944130be8dc3a0e9 Mon Sep 17 00:00:00 2001 +From: Kay Sievers +Date: Thu, 12 Mar 2015 18:34:23 +0100 +Subject: [PATCH] hwdb: update + +(cherry picked from commit b83cbcb7d95482baa588706227f01bbbe44b9d12) +--- + hwdb/20-OUI.hwdb | 247 ++++++++++- + hwdb/20-pci-vendor-model.hwdb | 936 +++++++++++++++++++++++++++-------------- + hwdb/20-sdio-vendor-model.hwdb | 30 ++ + hwdb/20-usb-vendor-model.hwdb | 181 +++++++- + 4 files changed, 1060 insertions(+), 334 deletions(-) + +diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb +index 6976bdf649..deb323d34c 100644 +--- a/hwdb/20-OUI.hwdb ++++ b/hwdb/20-OUI.hwdb +@@ -28829,7 +28829,7 @@ OUI:0013EB* + ID_OUI_FROM_DATABASE=Sysmaster Corporation + + OUI:0013EC* +- ID_OUI_FROM_DATABASE=Sunbay Software AG ++ ID_OUI_FROM_DATABASE=Netsnapper Technologies SARL + + OUI:0013ED* + ID_OUI_FROM_DATABASE=PSIA +@@ -44296,6 +44296,9 @@ OUI:0030FE* + OUI:0030FF* + ID_OUI_FROM_DATABASE=DATAFAB SYSTEMS, INC. + ++OUI:00323A* ++ ID_OUI_FROM_DATABASE=so-logic ++ + OUI:00336C* + ID_OUI_FROM_DATABASE=SynapSense Corporation + +@@ -44513,7 +44516,7 @@ OUI:004035* + ID_OUI_FROM_DATABASE=OPCOM + + OUI:004036* +- ID_OUI_FROM_DATABASE=TRIBE COMPUTER WORKS, INC. ++ ID_OUI_FROM_DATABASE=Zoom Telephonics, Inc + + OUI:004037* + ID_OUI_FROM_DATABASE=SEA-ILAN, INC. +@@ -50456,7 +50459,7 @@ OUI:00D093* + ID_OUI_FROM_DATABASE=TQ - COMPONENTS GMBH + + OUI:00D094* +- ID_OUI_FROM_DATABASE=TIMELINE VISTA, INC. ++ ID_OUI_FROM_DATABASE=Seeion Control LLC + + OUI:00D095* + ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group +@@ -52561,6 +52564,9 @@ OUI:082719* + OUI:082AD0* + ID_OUI_FROM_DATABASE=SRD Innovations Inc. + ++OUI:082CB0* ++ ID_OUI_FROM_DATABASE=Network Instruments ++ + OUI:082E5F* + ID_OUI_FROM_DATABASE=Hewlett Packard + +@@ -52699,6 +52705,9 @@ OUI:088E4F* + OUI:088F2C* + ID_OUI_FROM_DATABASE=Hills Sound Vision & Lighting + ++OUI:08952A* ++ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc ++ + OUI:0896D7* + ID_OUI_FROM_DATABASE=AVM GmbH + +@@ -52804,6 +52813,9 @@ OUI:08EB74* + OUI:08EBED* + ID_OUI_FROM_DATABASE=World Elite Technology Co.,LTD + ++OUI:08ECA9* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:08EDB9* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + +@@ -53320,6 +53332,9 @@ OUI:103DEA* + OUI:1040F3* + ID_OUI_FROM_DATABASE=Apple + ++OUI:10417F* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:104369* + ID_OUI_FROM_DATABASE=Soundmax Electronic Limited + +@@ -53611,6 +53626,9 @@ OUI:141330* + OUI:14144B* + ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD + ++OUI:14157C* ++ ID_OUI_FROM_DATABASE=TOKYO COSMOS ELECTRIC CO.,LTD. ++ + OUI:141A51* + ID_OUI_FROM_DATABASE=Treetech Sistemas Digitais + +@@ -53656,6 +53674,9 @@ OUI:14307A* + OUI:1430C6* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC + ++OUI:1432D1* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:14358B* + ID_OUI_FROM_DATABASE=Mediabridge Products, LLC. + +@@ -53716,6 +53737,9 @@ OUI:1458D0* + OUI:145A05* + ID_OUI_FROM_DATABASE=Apple + ++OUI:145A83* ++ ID_OUI_FROM_DATABASE=Logi-D inc ++ + OUI:145BD1* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + +@@ -53929,6 +53953,9 @@ OUI:181420* + OUI:181456* + ID_OUI_FROM_DATABASE=Nokia Corporation + ++OUI:1816C9* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:181714* + ID_OUI_FROM_DATABASE=DAEWOOIS + +@@ -54049,6 +54076,9 @@ OUI:185936* + OUI:185AE8* + ID_OUI_FROM_DATABASE=Zenotech.Co.,Ltd + ++OUI:185D9A* ++ ID_OUI_FROM_DATABASE=BobjGear LLC ++ + OUI:18622C* + ID_OUI_FROM_DATABASE=SAGEMCOM SAS + +@@ -54532,6 +54562,9 @@ OUI:1CAB01* + OUI:1CABA7* + ID_OUI_FROM_DATABASE=Apple + ++OUI:1CADD1* ++ ID_OUI_FROM_DATABASE=Bosung Electronics Co., Ltd. ++ + OUI:1CAF05* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + +@@ -54937,6 +54970,9 @@ OUI:20DCE6* + OUI:20DF3F* + ID_OUI_FROM_DATABASE=Nanjing SAC Power Grid Automation Co., Ltd. + ++OUI:20E407* ++ ID_OUI_FROM_DATABASE=Spark srl ++ + OUI:20E52A* + ID_OUI_FROM_DATABASE=NETGEAR INC., + +@@ -55252,6 +55288,9 @@ OUI:24E271* + OUI:24E314* + ID_OUI_FROM_DATABASE=Apple + ++OUI:24E5AA* ++ ID_OUI_FROM_DATABASE=Philips Oral Healthcare, Inc. ++ + OUI:24E6BA* + ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky + +@@ -56185,6 +56224,9 @@ OUI:308730* + OUI:308999* + ID_OUI_FROM_DATABASE=Guangdong East Power Co., + ++OUI:3089D3* ++ ID_OUI_FROM_DATABASE=Shenzhen ucloudlink new technology co.,LTD ++ + OUI:308CFB* + ID_OUI_FROM_DATABASE=Dropcam + +@@ -56461,6 +56503,9 @@ OUI:3476C5* + OUI:347877* + ID_OUI_FROM_DATABASE=O-NET Communications(Shenzhen) Limited + ++OUI:347A60* ++ ID_OUI_FROM_DATABASE=Pace plc ++ + OUI:347E39* + ID_OUI_FROM_DATABASE=Nokia Danmark A/S + +@@ -56506,6 +56551,9 @@ OUI:3499D7* + OUI:349A0D* + ID_OUI_FROM_DATABASE=ZBD Displays Ltd + ++OUI:349B5B* ++ ID_OUI_FROM_DATABASE=Maquet GmbH ++ + OUI:349D90* + ID_OUI_FROM_DATABASE=Heinzmann GmbH & CO. KG + +@@ -57256,6 +57304,9 @@ OUI:3CA10D* + OUI:3CA315* + ID_OUI_FROM_DATABASE=Bless Information & Communications Co., Ltd + ++OUI:3CA31A* ++ ID_OUI_FROM_DATABASE=Oilfind International LLC ++ + OUI:3CA72B* + ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD + +@@ -57343,6 +57394,9 @@ OUI:3CD92B* + OUI:3CD9CE* + ID_OUI_FROM_DATABASE=Eclipse WiFi + ++OUI:3CDA2A* ++ ID_OUI_FROM_DATABASE=zte corporation ++ + OUI:3CDF1E* + ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. + +@@ -57592,6 +57646,9 @@ OUI:408B07* + OUI:408BF6* + ID_OUI_FROM_DATABASE=Shenzhen TCL New Technology Co; Ltd. + ++OUI:408D5C* ++ ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. ++ + OUI:409558* + ID_OUI_FROM_DATABASE=Aisino Corporation + +@@ -58093,6 +58150,9 @@ OUI:44ED57* + OUI:44EE30* + ID_OUI_FROM_DATABASE=Budelmann Elektronik GmbH + ++OUI:44F436* ++ ID_OUI_FROM_DATABASE=zte corporation ++ + OUI:44F459* + ID_OUI_FROM_DATABASE=Samsung Electronics + +@@ -58117,6 +58177,9 @@ OUI:48066A* + OUI:480C49* + ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC + ++OUI:480FCF* ++ ID_OUI_FROM_DATABASE=Hewlett Packard ++ + OUI:481249* + ID_OUI_FROM_DATABASE=Luxcom Technologies Inc. + +@@ -58171,6 +58234,9 @@ OUI:4846F1* + OUI:4846FB* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + ++OUI:485073* ++ ID_OUI_FROM_DATABASE=Microsoft Corporation ++ + OUI:4851B7* + ID_OUI_FROM_DATABASE=Intel Corporate + +@@ -58636,6 +58702,9 @@ OUI:4CB199* + OUI:4CB4EA* + ID_OUI_FROM_DATABASE=HRD (S) PTE., LTD. + ++OUI:4CB76D* ++ ID_OUI_FROM_DATABASE=Novi Security ++ + OUI:4CB81C* + ID_OUI_FROM_DATABASE=SAM Electronics GmbH + +@@ -58705,6 +58774,9 @@ OUI:4CEB42* + OUI:4CEDDE* + ID_OUI_FROM_DATABASE=Askey Computer Corp + ++OUI:4CEEB0* ++ ID_OUI_FROM_DATABASE=SHC Netzwerktechnik GmbH ++ + OUI:4CF02E* + ID_OUI_FROM_DATABASE=Vifa Denmark A/S + +@@ -59032,6 +59104,9 @@ OUI:50ED94* + OUI:50F003* + ID_OUI_FROM_DATABASE=Open Stack, Inc. + ++OUI:50F0D3* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:50F43C* + ID_OUI_FROM_DATABASE=Leeo Inc + +@@ -59137,6 +59212,9 @@ OUI:5439DF* + OUI:543D37* + ID_OUI_FROM_DATABASE=Ruckus Wireless + ++OUI:5440AD* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:544249* + ID_OUI_FROM_DATABASE=Sony Corporation + +@@ -59170,6 +59248,9 @@ OUI:545EBD* + OUI:545FA9* + ID_OUI_FROM_DATABASE=Teracom Limited + ++OUI:546172* ++ ID_OUI_FROM_DATABASE=ZODIAC AEROSPACE SAS ++ + OUI:5461EA* + ID_OUI_FROM_DATABASE=Zaplox AB + +@@ -59284,6 +59365,9 @@ OUI:54BEF7* + OUI:54C80F* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + ++OUI:54CD10* ++ ID_OUI_FROM_DATABASE=Panasonic Mobile Communications Co.,Ltd. ++ + OUI:54CDA7* + ID_OUI_FROM_DATABASE=Fujian Shenzhou Electronic Co.,Ltd + +@@ -59794,6 +59878,9 @@ OUI:5C41E7* + OUI:5C43D2* + ID_OUI_FROM_DATABASE=HAZEMEYER + ++OUI:5C4527* ++ ID_OUI_FROM_DATABASE=Juniper Networks ++ + OUI:5C4A26* + ID_OUI_FROM_DATABASE=Enguity Technology Corp + +@@ -59911,6 +59998,9 @@ OUI:5CAAFD* + OUI:5CAC4C* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + ++OUI:5CB395* ++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD ++ + OUI:5CB43E* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + +@@ -60859,6 +60949,9 @@ OUI:64F970* + OUI:64F987* + ID_OUI_FROM_DATABASE=Avvasi Inc. + ++OUI:64FB81* ++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY - Please see MAM public listing for more information. ++ + OUI:64FC8C* + ID_OUI_FROM_DATABASE=Zonar Systems + +@@ -61417,6 +61510,9 @@ OUI:6C9CE9* + OUI:6C9CED* + ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. + ++OUI:6CA100* ++ ID_OUI_FROM_DATABASE=Intel Corporate ++ + OUI:6CA682* + ID_OUI_FROM_DATABASE=EDAM information & communications + +@@ -61507,6 +61603,9 @@ OUI:6CD68A* + OUI:6CDC6A* + ID_OUI_FROM_DATABASE=Promethean Limited + ++OUI:6CE01E* ++ ID_OUI_FROM_DATABASE=Modcam AB ++ + OUI:6CE0B0* + ID_OUI_FROM_DATABASE=SOUND4 + +@@ -62119,6 +62218,9 @@ OUI:747E2D* + OUI:748114* + ID_OUI_FROM_DATABASE=Apple + ++OUI:74852A* ++ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION ++ + OUI:74867A* + ID_OUI_FROM_DATABASE=Dell Inc + +@@ -62548,6 +62650,9 @@ OUI:789ED0* + OUI:789F4C* + ID_OUI_FROM_DATABASE=HOERBIGER Elektronik GmbH + ++OUI:789F70* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:789F87* + ID_OUI_FROM_DATABASE=Siemens AG I IA PP PRM + +@@ -62620,6 +62725,12 @@ OUI:78B81A* + OUI:78BAD0* + ID_OUI_FROM_DATABASE=Shinybow Technology Co. Ltd. + ++OUI:78BAF9* ++ ID_OUI_FROM_DATABASE=Cisco ++ ++OUI:78BDBC* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:78BEB6* + ID_OUI_FROM_DATABASE=Enhanced Vision + +@@ -63002,7 +63113,7 @@ OUI:7CB21B* + ID_OUI_FROM_DATABASE=Cisco SPVTG + + OUI:7CB232* +- ID_OUI_FROM_DATABASE=TCL King High Frequency EI,Co.,LTD ++ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD + + OUI:7CB542* + ID_OUI_FROM_DATABASE=ACES Technology +@@ -63133,6 +63244,9 @@ OUI:7CF429* + OUI:7CF854* + ID_OUI_FROM_DATABASE=Samsung Electronics + ++OUI:7CF90E* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:7CFADF* + ID_OUI_FROM_DATABASE=Apple + +@@ -63235,6 +63349,9 @@ OUI:8038FD* + OUI:8039E5* + ID_OUI_FROM_DATABASE=PATLITE CORPORATION + ++OUI:803B2A* ++ ID_OUI_FROM_DATABASE=ABB Xiamen Low Voltage Equipment Co.,Ltd. ++ + OUI:803B9A* + ID_OUI_FROM_DATABASE=ghe-ces electronic ag + +@@ -63262,6 +63379,9 @@ OUI:804971* + OUI:804B20* + ID_OUI_FROM_DATABASE=Ventilation Control + ++OUI:804E81* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:804F58* + ID_OUI_FROM_DATABASE=ThinkEco, Inc. + +@@ -63514,6 +63634,9 @@ OUI:840B2D* + OUI:840F45* + ID_OUI_FROM_DATABASE=Shanghai GMT Digital Technologies Co., Ltd + ++OUI:84119E* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:841715* + ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd. + +@@ -63580,6 +63703,9 @@ OUI:842B50* + OUI:842BBC* + ID_OUI_FROM_DATABASE=Modelleisenbahn GmbH + ++OUI:842E27* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:842F75* + ID_OUI_FROM_DATABASE=Innokas Group + +@@ -63943,6 +64069,9 @@ OUI:883612* + OUI:883B8B* + ID_OUI_FROM_DATABASE=Cheering Connection Co. Ltd. + ++OUI:884157* ++ ID_OUI_FROM_DATABASE=Shenzhen Atsmart Technology Co.,Ltd. ++ + OUI:8841C1* + ID_OUI_FROM_DATABASE=ORBISAT DA AMAZONIA IND E AEROL SA + +@@ -64006,6 +64135,9 @@ OUI:88708C* + OUI:8870EF* + ID_OUI_FROM_DATABASE=SC Professional Trading Co., Ltd. + ++OUI:887384* ++ ID_OUI_FROM_DATABASE=Toshiba ++ + OUI:887398* + ID_OUI_FROM_DATABASE=K2E Tekpoint + +@@ -64039,6 +64171,9 @@ OUI:888B5D* + OUI:888C19* + ID_OUI_FROM_DATABASE=Brady Corp Asia Pacific Ltd + ++OUI:88908D* ++ ID_OUI_FROM_DATABASE=Cisco ++ + OUI:889166* + ID_OUI_FROM_DATABASE=Viewcooper Corp. + +@@ -64075,6 +64210,9 @@ OUI:889FFA* + OUI:88A25E* + ID_OUI_FROM_DATABASE=juniper networks + ++OUI:88A2D7* ++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD ++ + OUI:88A3CC* + ID_OUI_FROM_DATABASE=Amatis Controls + +@@ -64591,6 +64729,9 @@ OUI:90203A* + OUI:902083* + ID_OUI_FROM_DATABASE=General Engine Management Systems Ltd. + ++OUI:902106* ++ ID_OUI_FROM_DATABASE=BSkyB Ltd ++ + OUI:902155* + ID_OUI_FROM_DATABASE=HTC Corporation + +@@ -64711,6 +64852,9 @@ OUI:9067F3* + OUI:9068C3* + ID_OUI_FROM_DATABASE=Motorola Mobility LLC + ++OUI:906CAC* ++ ID_OUI_FROM_DATABASE=Fortinet, Inc. ++ + OUI:906DC8* + ID_OUI_FROM_DATABASE=DLG Automação Industrial Ltda + +@@ -65254,6 +65398,9 @@ OUI:94E711* + OUI:94E848* + ID_OUI_FROM_DATABASE=FYLDE MICRO LTD + ++OUI:94E96A* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:94E98C* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + +@@ -65935,6 +66082,9 @@ OUI:9CF938* + OUI:9CFBF1* + ID_OUI_FROM_DATABASE=MESOMATIC GmbH & Co.KG + ++OUI:9CFC01* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:9CFFBE* + ID_OUI_FROM_DATABASE=OTSL Inc. + +@@ -65977,6 +66127,9 @@ OUI:A0143D* + OUI:A0165C* + ID_OUI_FROM_DATABASE=Triteka LTD + ++OUI:A01828* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:A01859* + ID_OUI_FROM_DATABASE=Shenzhen Yidashi Electronics Co Ltd + +@@ -66178,6 +66331,9 @@ OUI:A0A23C* + OUI:A0A3E2* + ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc + ++OUI:A0A65C* ++ ID_OUI_FROM_DATABASE=Supercomputing Systems AG ++ + OUI:A0A763* + ID_OUI_FROM_DATABASE=Polytron Vertrieb GmbH + +@@ -66382,6 +66538,9 @@ OUI:A42305* + OUI:A424B3* + ID_OUI_FROM_DATABASE=FlatFrog Laboratories AB + ++OUI:A424DD* ++ ID_OUI_FROM_DATABASE=Cambrionix Ltd ++ + OUI:A4251B* + ID_OUI_FROM_DATABASE=Avaya, Inc + +@@ -66397,6 +66556,9 @@ OUI:A42B8C* + OUI:A42C08* + ID_OUI_FROM_DATABASE=Masterwork Automodules + ++OUI:A43135* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:A433D1* + ID_OUI_FROM_DATABASE=Fibrlink Communications Co.,Ltd. + +@@ -66475,6 +66637,9 @@ OUI:A46032* + OUI:A46706* + ID_OUI_FROM_DATABASE=Apple + ++OUI:A46C2A* ++ ID_OUI_FROM_DATABASE=Cisco ++ + OUI:A46CC1* + ID_OUI_FROM_DATABASE=LTi REEnergy GmbH + +@@ -67066,6 +67231,9 @@ OUI:AC20AA* + OUI:AC220B* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + ++OUI:AC293A* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:AC2DA3* + ID_OUI_FROM_DATABASE=TXTR GmbH + +@@ -67144,6 +67312,9 @@ OUI:AC562C* + OUI:AC583B* + ID_OUI_FROM_DATABASE=Human Assembler, Inc. + ++OUI:AC5A14* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:AC5D10* + ID_OUI_FROM_DATABASE=Pace Americas + +@@ -67153,6 +67324,9 @@ OUI:AC5E8C* + OUI:AC6123* + ID_OUI_FROM_DATABASE=Drivven, Inc. + ++OUI:AC620D* ++ ID_OUI_FROM_DATABASE=Jabil Circuit (Wuxi) Co. LTD ++ + OUI:AC6706* + ID_OUI_FROM_DATABASE=Ruckus Wireless + +@@ -67180,6 +67354,9 @@ OUI:AC7289* + OUI:AC7A42* + ID_OUI_FROM_DATABASE=iConnectivity + ++OUI:AC7A4D* ++ ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD. ++ + OUI:AC7BA1* + ID_OUI_FROM_DATABASE=Intel Corporate + +@@ -67402,6 +67579,9 @@ OUI:ACF7F3* + OUI:ACF97E* + ID_OUI_FROM_DATABASE=ELESYS INC. + ++OUI:ACFD93* ++ ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd. ++ + OUI:ACFDCE* + ID_OUI_FROM_DATABASE=Intel Corporate + +@@ -67688,7 +67868,7 @@ OUI:B0D59D* + ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd + + OUI:B0D7C5* +- ID_OUI_FROM_DATABASE=STP KFT ++ ID_OUI_FROM_DATABASE=Logipix Ltd + + OUI:B0DA00* + ID_OUI_FROM_DATABASE=CERA ELECTRONIQUE +@@ -67891,6 +68071,9 @@ OUI:B467E9* + OUI:B46D35* + ID_OUI_FROM_DATABASE=Dalian Seasky Automation Co;Ltd + ++OUI:B46D83* ++ ID_OUI_FROM_DATABASE=Intel Corporate ++ + OUI:B47356* + ID_OUI_FROM_DATABASE=Hangzhou Treebear Networking Co., Ltd. + +@@ -68569,6 +68752,9 @@ OUI:BC38D2* + OUI:BC39A6* + ID_OUI_FROM_DATABASE=CSUN System Technology Co.,LTD + ++OUI:BC3AEA* ++ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD. ++ + OUI:BC3BAF* + ID_OUI_FROM_DATABASE=Apple + +@@ -69211,6 +69397,9 @@ OUI:C40F09* + OUI:C4108A* + ID_OUI_FROM_DATABASE=Ruckus Wireless + ++OUI:C412F5* ++ ID_OUI_FROM_DATABASE=D-Link International ++ + OUI:C413E2* + ID_OUI_FROM_DATABASE=Aerohive Networks Inc. + +@@ -69520,6 +69709,9 @@ OUI:C4E92F* + OUI:C4E984* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + ++OUI:C4EA1D* ++ ID_OUI_FROM_DATABASE=Technicolor ++ + OUI:C4EBE3* + ID_OUI_FROM_DATABASE=RRCN SAS + +@@ -69586,6 +69778,9 @@ OUI:C81B6B* + OUI:C81E8E* + ID_OUI_FROM_DATABASE=ADV Security (S) Pte Ltd + ++OUI:C81EE7* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:C81F66* + ID_OUI_FROM_DATABASE=Dell Inc + +@@ -69610,6 +69805,9 @@ OUI:C83232* + OUI:C8334B* + ID_OUI_FROM_DATABASE=Apple + ++OUI:C8348E* ++ ID_OUI_FROM_DATABASE=Intel Corporate ++ + OUI:C835B8* + ID_OUI_FROM_DATABASE=Ericsson, EAB/RWI/K + +@@ -70018,6 +70216,9 @@ OUI:CC4BFB* + OUI:CC4E24* + ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. + ++OUI:CC4EEC* ++ ID_OUI_FROM_DATABASE=HUMAX Co., Ltd. ++ + OUI:CC501C* + ID_OUI_FROM_DATABASE=KVH Industries, Inc. + +@@ -70279,6 +70480,9 @@ OUI:CCFCB1* + OUI:CCFE3C* + ID_OUI_FROM_DATABASE=Samsung Electronics + ++OUI:D0034B* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:D00790* + ID_OUI_FROM_DATABASE=Texas Instruments + +@@ -70321,6 +70525,9 @@ OUI:D023DB* + OUI:D02516* + ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD. + ++OUI:D02598* ++ ID_OUI_FROM_DATABASE=Apple Inc ++ + OUI:D02788* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd + +@@ -70342,6 +70549,9 @@ OUI:D03972* + OUI:D039B3* + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. + ++OUI:D0431E* ++ ID_OUI_FROM_DATABASE=Dell Inc. ++ + OUI:D046DC* + ID_OUI_FROM_DATABASE=Southwest Research Institute + +@@ -70501,6 +70711,9 @@ OUI:D09C30* + OUI:D09D0A* + ID_OUI_FROM_DATABASE=LINKCOM + ++OUI:D09DAB* ++ ID_OUI_FROM_DATABASE=TCT mobile ltd ++ + OUI:D0A0D6* + ID_OUI_FROM_DATABASE=Chengdu TD Tech Ltd. + +@@ -71266,6 +71479,9 @@ OUI:D8977C* + OUI:D897BA* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + ++OUI:D89A34* ++ ID_OUI_FROM_DATABASE=Beijing SHENQI Technology Co., Ltd. ++ + OUI:D89D67* + ID_OUI_FROM_DATABASE=Hewlett Packard + +@@ -72028,6 +72244,9 @@ OUI:E0D9A2* + OUI:E0DADC* + ID_OUI_FROM_DATABASE=JVC KENWOOD Corporation + ++OUI:E0DB10* ++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd ++ + OUI:E0DB55* + ID_OUI_FROM_DATABASE=Dell Inc + +@@ -72367,6 +72586,9 @@ OUI:E4F4C6* + OUI:E4F7A1* + ID_OUI_FROM_DATABASE=Datafox GmbH + ++OUI:E4F89C* ++ ID_OUI_FROM_DATABASE=Intel Corporate ++ + OUI:E4F8EF* + ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd + +@@ -72376,6 +72598,9 @@ OUI:E4F939* + OUI:E4FA1D* + ID_OUI_FROM_DATABASE=PAD Peripheral Advanced Design Inc. + ++OUI:E4FAFD* ++ ID_OUI_FROM_DATABASE=Intel Corporate ++ + OUI:E4FED9* + ID_OUI_FROM_DATABASE=EDMI Europe Ltd + +@@ -72739,6 +72964,9 @@ OUI:E8F1B0* + OUI:E8F226* + ID_OUI_FROM_DATABASE=MILLSON CUSTOM SOLUTIONS INC. + ++OUI:E8F2E3* ++ ID_OUI_FROM_DATABASE=Starcor Beijing Co.,Limited ++ + OUI:E8F928* + ID_OUI_FROM_DATABASE=RFTECH SRL + +@@ -72874,6 +73102,9 @@ OUI:EC5A86* + OUI:EC5C69* + ID_OUI_FROM_DATABASE=MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD. + ++OUI:EC60E0* ++ ID_OUI_FROM_DATABASE=AVI-ON LABS ++ + OUI:EC6264* + ID_OUI_FROM_DATABASE=Global411 Internet Services, LLC + +@@ -73213,6 +73444,9 @@ OUI:F07765* + OUI:F077D0* + ID_OUI_FROM_DATABASE=Xcellen + ++OUI:F07816* ++ ID_OUI_FROM_DATABASE=Cisco ++ + OUI:F07959* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + +@@ -73279,6 +73513,9 @@ OUI:F09FC2* + OUI:F0A764* + ID_OUI_FROM_DATABASE=GST Co., Ltd. + ++OUI:F0AB54* ++ ID_OUI_FROM_DATABASE=MITSUMI ELECTRIC CO.,LTD. ++ + OUI:F0ACA4* + ID_OUI_FROM_DATABASE=HBC-radiomatic + +diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb +index 6c22088873..3b35b26e59 100644 +--- a/hwdb/20-pci-vendor-model.hwdb ++++ b/hwdb/20-pci-vendor-model.hwdb +@@ -4361,6 +4361,9 @@ pci:v00001002d0000665Csv00001787sd00002329* + pci:v00001002d0000665D* + ID_MODEL_FROM_DATABASE=Bonaire [Radeon R7 200 Series] + ++pci:v00001002d0000665F* ++ ID_MODEL_FROM_DATABASE=Tobago [Radeon R7 300 Series] ++ + pci:v00001002d00006660* + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M] + +@@ -5984,6 +5987,63 @@ pci:v00001002d000067AA* + pci:v00001002d000067B0* + ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] + ++pci:v00001002d000067B0sv00001043sd0000046A* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X DirectCU II) ++ ++pci:v00001002d000067B0sv00001043sd0000046C* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X DirectCU II OC) ++ ++pci:v00001002d000067B0sv00001043sd00000474* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Matrix R9 290X Platinum) ++ ++pci:v00001002d000067B0sv00001043sd00000476* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (ARES III) ++ ++pci:v00001002d000067B0sv00001458sd0000227C* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X OC) ++ ++pci:v00001002d000067B0sv00001458sd00002281* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X OC) ++ ++pci:v00001002d000067B0sv00001458sd0000228C* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X) ++ ++pci:v00001002d000067B0sv00001458sd0000228D* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X OC) ++ ++pci:v00001002d000067B0sv00001458sd00002290* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X) ++ ++pci:v00001002d000067B0sv00001462sd00003070* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Lightning) ++ ++pci:v00001002d000067B0sv00001462sd00003071* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Lightning) ++ ++pci:v00001002d000067B0sv00001462sd00003072* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Lightning LE) ++ ++pci:v00001002d000067B0sv00001462sd00003080* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Gaming) ++ ++pci:v00001002d000067B0sv00001462sd00003082* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Gaming OC) ++ ++pci:v00001002d000067B0sv0000148Csd00002347* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Devil 13 Dual Core R9 290X) ++ ++pci:v00001002d000067B0sv00001682sd00009290* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Double Dissipation R9 290X) ++ ++pci:v00001002d000067B0sv0000174Bsd0000E282* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Vapor-X R9 290X Tri-X OC) ++ ++pci:v00001002d000067B0sv0000174Bsd0000E285* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Tri-X OC) ++ ++pci:v00001002d000067B0sv00001787sd00002020* ++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X IceQ X² Turbo) ++ + pci:v00001002d000067B1* + ID_MODEL_FROM_DATABASE=Hawaii PRO [Radeon R9 290] + +@@ -9092,6 +9152,9 @@ pci:v00001002d0000985E* + pci:v00001002d0000985F* + ID_MODEL_FROM_DATABASE=Mullins + ++pci:v00001002d00009874* ++ ID_MODEL_FROM_DATABASE=Carrizo ++ + pci:v00001002d00009900* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7660G] + +@@ -10272,10 +10335,10 @@ pci:v00001014d000000A6* + ID_MODEL_FROM_DATABASE=ATM 155MBPS MM Controller (1410a600) + + pci:v00001014d000000B7* +- ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1] ++ ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter + + pci:v00001014d000000B7sv00001092sd000000B8* +- ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1] (FireGL1 AGP 32Mb) ++ ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter (FireGL1 AGP 32Mb) + + pci:v00001014d000000B8* + ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter +@@ -10325,6 +10388,15 @@ pci:v00001014d00000170* + pci:v00001014d00000170sv00001092sd00000172* + ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL2) + ++pci:v00001014d00000170sv00001092sd00000173* ++ ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL3) ++ ++pci:v00001014d00000170sv00001092sd00000174* ++ ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL4) ++ ++pci:v00001014d00000170sv00001092sd00000184* ++ ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL4s) ++ + pci:v00001014d0000017D* + ID_MODEL_FROM_DATABASE=GXT300P Graphics Adapter + +@@ -28542,913 +28614,934 @@ pci:v000010DEd000010D8* + ID_MODEL_FROM_DATABASE=GT218 [NVS 300] + + pci:v000010DEd00001140* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] + + pci:v000010DEd00001140sv00001019sd0000999F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000600* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000606* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd0000064A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd0000064C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd0000067A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000680* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000686* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000689* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000068B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000068D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000068E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000691* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000692* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000694* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000702* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000719* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000725* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000728* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd0000072B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd0000072E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000732* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001025sd00000763* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000773* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000774* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000776* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd0000077A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000077B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000077C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000077D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000077E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd0000077F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000781* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000798* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000799* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd0000079B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd0000079C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000807* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000821* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000823* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000830* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000833* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd00000837* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001025sd0000083E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000841* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001025sd00000854* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000855* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000856* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000857* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000858* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000868* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000869* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 810M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M) + + pci:v000010DEd00001140sv00001025sd00000873* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000878* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000087B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000087C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 810M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M) + + pci:v000010DEd00001140sv00001025sd00000881* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000088A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000089B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000090F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000921* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000092E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 810M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M) + + pci:v000010DEd00001140sv00001025sd0000092F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000093A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000093C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd0000093F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000941* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000945* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000954* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001025sd00000965* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd0000054D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd0000054E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd00000554* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001028sd00000557* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001028sd00000562* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd00000565* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd00000568* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd00000590* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd00000592* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd00000594* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd00000595* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd000005A2* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd000005B1* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd000005B3* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M) + + pci:v000010DEd00001140sv00001028sd000005DA* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd000005DE* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001028sd000005E0* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001028sd000005E8* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv00001028sd000005F4* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001028sd0000060F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001028sd0000064E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd00000652* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd00000653* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd00000655* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd0000065E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd00000662* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001028sd0000068D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000103Csd000018EF* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000103Csd000018F9* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000103Csd000018FB* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000103Csd000018FD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000103Csd000018FF* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000103Csd00002335* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000103Csd00002337* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000103Csd00002AEF* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A) + + pci:v000010DEd00001140sv0000103Csd00002AF9* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710A) + + pci:v000010DEd00001140sv00001043sd000010DD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv00001043sd000010ED* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv00001043sd000011FD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd0000124D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd0000126D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd0000131D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd000013FD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd000014C7* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd00001507* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001043sd000015AD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd000015ED* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000160D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000163D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000166D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd000016CD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd000016DD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000170D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000176D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000178D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000179D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd000017DD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd00002132* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001043sd00002136* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv00001043sd000021BA* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd000021FA* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd0000220A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd0000221A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd0000223A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M) + + pci:v000010DEd00001140sv00001043sd0000224A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M) + + pci:v000010DEd00001140sv00001043sd0000227A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000228A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000232A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000233A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000236A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000238A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd00008595* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd000085EA* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd000085EB* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd000085EC* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd000085EE* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001043sd000085F3* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000860E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000861A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000861B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd00008628* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd00008643* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd0000864C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001043sd00008652* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000105Bsd00000DAC* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv0000105Bsd00000DAD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv0000105Bsd00000EF3* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001072sd0000152D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000010CFsd000017F5* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001179sd0000FA01* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA02* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA03* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA05* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA11* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA13* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA18* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA19* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA21* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA23* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA2A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA32* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA33* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA36* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA38* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA42* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA43* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA45* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA47* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA49* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA58* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA59* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA88* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001179sd0000FA89* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000144Dsd0000B092* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv0000144Dsd0000C0D5* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000144Dsd0000C0D7* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv0000144Dsd0000C0E2* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv0000144Dsd0000C0E3* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv0000144Dsd0000C0E4* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv0000144Dsd0000C10D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000144Dsd0000C652* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv0000144Dsd0000C709* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000144Dsd0000C711* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000144Dsd0000C736* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000144Dsd0000C737* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000144Dsd0000C745* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000144Dsd0000C750* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001462sd000010B8* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M) + + pci:v000010DEd00001140sv00001462sd000010E9* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001462sd00001116* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001462sd0000AA33* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M) + + pci:v000010DEd00001140sv00001462sd0000AAA2* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001462sd0000AAA3* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001462sd0000ACB2* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001462sd0000ACC1* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001462sd0000AE61* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M) + + pci:v000010DEd00001140sv00001462sd0000AE65* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001462sd0000AE6A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001462sd0000AE71* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000014C0sd00000083* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000152Dsd00000926* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 620M) + + pci:v000010DEd00001140sv0000152Dsd00000982* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000152Dsd00000983* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000152Dsd00001005* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 820M) + + pci:v000010DEd00001140sv0000152Dsd00001012* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000152Dsd00001019* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000152Dsd00001030* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M) + + pci:v000010DEd00001140sv0000152Dsd00001055* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv0000152Dsd00001067* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv0000152Dsd00001072* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv0000152Dsd00001086* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv0000152Dsd00001092* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00002200* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M) + + pci:v000010DEd00001140sv000017AAsd00002213* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00002220* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd0000309C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A) + + pci:v000010DEd00001140sv000017AAsd000030B4* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ++pci:v000010DEd00001140sv000017AAsd000030B7* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720A) ++ ++pci:v000010DEd00001140sv000017AAsd0000361B* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ++pci:v000010DEd00001140sv000017AAsd0000361C* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd00003656* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv000017AAsd0000365A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M) + + pci:v000010DEd00001140sv000017AAsd0000365E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M) ++ ++pci:v000010DEd00001140sv000017AAsd00003661* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd0000366C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M) + + pci:v000010DEd00001140sv000017AAsd00003685* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M) + + pci:v000010DEd00001140sv000017AAsd00003686* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M) + + pci:v000010DEd00001140sv000017AAsd00003687* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705A) + + pci:v000010DEd00001140sv000017AAsd00003696* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd0000369B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd0000369C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd0000369D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd0000369E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd000036A9* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ++pci:v000010DEd00001140sv000017AAsd000036AF* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ++pci:v000010DEd00001140sv000017AAsd000036B0* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) ++ ++pci:v000010DEd00001140sv000017AAsd000036B6* ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A) + + pci:v000010DEd00001140sv000017AAsd00003800* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003801* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003802* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003803* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003804* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003806* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003808* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd0000380D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd0000380E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd0000380F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003811* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003812* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003813* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003816* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003818* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd0000381A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd0000381C* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003901* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M / GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M / GT 620M) + + pci:v000010DEd00001140sv000017AAsd00003902* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd00003903* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M/710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M/710M) + + pci:v000010DEd00001140sv000017AAsd00003904* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M/625M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M/625M) + + pci:v000010DEd00001140sv000017AAsd00003905* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003907* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003910* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M) + + pci:v000010DEd00001140sv000017AAsd00003912* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M) + + pci:v000010DEd00001140sv000017AAsd00003913* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003915* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00003977* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00003983* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M) + + pci:v000010DEd00001140sv000017AAsd00005001* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M) + + pci:v000010DEd00001140sv000017AAsd00005003* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00005005* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M) + + pci:v000010DEd00001140sv000017AAsd0000500D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv000017AAsd00005014* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd00005017* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd00005019* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd0000501A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd0000501F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00005025* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd00005027* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd0000502A* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd0000502B* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd0000502D* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd0000502E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd0000502F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv000017AAsd00005030* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M) + + pci:v000010DEd00001140sv000017AAsd00005031* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M) + + pci:v000010DEd00001140sv000017AAsd00005032* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00005033* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd0000503E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv000017AAsd0000503F* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv000017AAsd00005040* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001854sd00000177* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001854sd00000180* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M) + + pci:v000010DEd00001140sv00001854sd00000190* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001854sd00000192* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001B0Asd000020DD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001B0Asd000020DF* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M) + + pci:v000010DEd00001140sv00001B0Asd0000210E* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001B0Asd00002202* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M) + + pci:v000010DEd00001140sv00001B0Asd000090D7* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001140sv00001B0Asd000090DD* +- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M) ++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M) + + pci:v000010DEd00001180* + ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] +@@ -29654,6 +29747,9 @@ pci:v000010DEd000011E3* + pci:v000010DEd000011E3sv000017AAsd00003683* + ID_MODEL_FROM_DATABASE=GK106M [GeForce GTX 760M] (GeForce GTX 760A) + ++pci:v000010DEd000011E7* ++ ID_MODEL_FROM_DATABASE=GK106M ++ + pci:v000010DEd000011FA* + ID_MODEL_FROM_DATABASE=GK106GL [Quadro K4000] + +@@ -30014,6 +30110,9 @@ pci:v000010DFd00000720sv000017AAsd00001057* + pci:v000010DFd00000720sv000017AAsd00001059* + ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14104-UT-L AnyFabric) + ++pci:v000010DFd00000720sv000017AAsd00004014* ++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14102-NX-L AnyFabric) ++ + pci:v000010DFd00000722* + ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk) + +@@ -30755,6 +30854,9 @@ pci:v000010ECd00008168sv00001775sd000011CC* + pci:v000010ECd00008168sv00001849sd00008168* + ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Motherboard (one of many)) + ++pci:v000010ECd00008168sv00007470sd00003468* ++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (TG-3468 Gigabit PCI Express Network Adapter) ++ + pci:v000010ECd00008168sv00008086sd0000D615* + ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Desktop Board D510MO/D525MW) + +@@ -31278,7 +31380,7 @@ pci:v00001102d00007005sv00001102sd00001002* + ID_MODEL_FROM_DATABASE=SB Audigy LS Game Port (SB0312 Audigy LS MIDI/Game port) + + pci:v00001102d00007006* +- ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCI to PCIe Bridge ++ ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCIe to PCI Bridge + + pci:v00001102d00008938* + ID_MODEL_FROM_DATABASE=Ectiva EV1938 +@@ -33896,6 +33998,9 @@ pci:v0000111Dd00008088sv00001093sd00007600* + pci:v0000111Dd00008088sv00001093sd00007602* + ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8384) + ++pci:v0000111Dd0000808F* ++ ID_MODEL_FROM_DATABASE=PES32NT8AG2 ++ + pci:v0000111E* + ID_VENDOR_FROM_DATABASE=Eldec + +@@ -34664,9 +34769,12 @@ pci:v00001131d00007164sv00000070sd000089A0* + pci:v00001131d00007164sv00000070sd000089A1* + ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200) + +-pci:v00001131d00007164sv00000070sd0000F123* ++pci:v00001131d00007164sv00000070sd0000F120* + ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2205) + ++pci:v00001131d00007164sv00000070sd0000F123* ++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2215) ++ + pci:v00001131d00007231* + ID_MODEL_FROM_DATABASE=SAA7231 + +@@ -39923,6 +40031,15 @@ pci:v0000125E* + pci:v0000125F* + ID_VENDOR_FROM_DATABASE=Concurrent Technologies, Inc. + ++pci:v0000125Fd00002071* ++ ID_MODEL_FROM_DATABASE=CC PMC/232 ++ ++pci:v0000125Fd00002084* ++ ID_MODEL_FROM_DATABASE=CC PMC/23P ++ ++pci:v0000125Fd00002091* ++ ID_MODEL_FROM_DATABASE=CC PMC/422 ++ + pci:v00001260* + ID_VENDOR_FROM_DATABASE=Intersil Corporation + +@@ -43145,17 +43262,56 @@ pci:v00001397* + pci:v00001397d000008B4* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] + ++pci:v00001397d000008B4sv00001397sd000008B4* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Cologne Chip HFC-4S Eval. Board]) ++ ++pci:v00001397d000008B4sv00001397sd0000B51A* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Allo.com BRI card]) ++ + pci:v00001397d000008B4sv00001397sd0000B520* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [IOB4ST]) + + pci:v00001397d000008B4sv00001397sd0000B540* +- ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Swyx 4xS0 SX2 QuadBri]) ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Swyx SX2 QuadBri]) + + pci:v00001397d000008B4sv00001397sd0000B550* +- ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns quadBRI]) ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET quadBRI]) + + pci:v00001397d000008B4sv00001397sd0000B556* +- ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns DuoDBRI]) ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET duoBRI]) ++ ++pci:v00001397d000008B4sv00001397sd0000B559* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET duoBRI miniPCI]) ++ ++pci:v00001397d000008B4sv00001397sd0000B560* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN4S0]) ++ ++pci:v00001397d000008B4sv00001397sd0000B566* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN2S0]) ++ ++pci:v00001397d000008B4sv00001397sd0000B567* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN1S0 miniPCI]) ++ ++pci:v00001397d000008B4sv00001397sd0000B568* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN4S0 miniPCI]) ++ ++pci:v00001397d000008B4sv00001397sd0000B569* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN2S0 miniPCI]) ++ ++pci:v00001397d000008B4sv00001397sd0000B620* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S) ++ ++pci:v00001397d000008B4sv00001397sd0000B752* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET quadBRI PCIe]) ++ ++pci:v00001397d000008B4sv00001397sd0000B761* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN2S0 PCIe]) ++ ++pci:v00001397d000008B4sv00001397sd0000B762* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN4S0 PCIe]) ++ ++pci:v00001397d000008B4sv00001397sd0000E884* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [OpenVox B200P]) + + pci:v00001397d000008B4sv00001397sd0000E888* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [OpenVox B200P / B400P]) +@@ -43163,9 +43319,33 @@ pci:v00001397d000008B4sv00001397sd0000E888* + pci:v00001397d000016B8* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] + +-pci:v00001397d000016B8sv00001397sd0000B562* ++pci:v00001397d000016B8sv00001397sd000016B8* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [Cologne Chip HFC-8S Eval. Board]) ++ ++pci:v00001397d000016B8sv00001397sd0000B521* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [IOB4ST Recording]) ++ ++pci:v00001397d000016B8sv00001397sd0000B522* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [IOB8ST]) + ++pci:v00001397d000016B8sv00001397sd0000B552* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [Junghanns.NET octoBRI]) ++ ++pci:v00001397d000016B8sv00001397sd0000B55B* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [Junghanns.NET octoBRI]) ++ ++pci:v00001397d000016B8sv00001397sd0000B562* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [BeroNet BN8S0]) ++ ++pci:v00001397d000016B8sv00001397sd0000B56B* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [BeroNet BN8S0+]) ++ ++pci:v00001397d000016B8sv00001397sd0000B622* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S) ++ ++pci:v00001397d000016B8sv00001397sd0000E998* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [OpenVox B800P]) ++ + pci:v00001397d00002BD0* + ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI] + +@@ -43184,6 +43364,42 @@ pci:v00001397d00002BD0sv0000E4BFsd00001000* + pci:v00001397d000030B1* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] + ++pci:v00001397d000030B1sv00001397sd000030B1* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Cologne Chip HFC-E1 Eval. Board]) ++ ++pci:v00001397d000030B1sv00001397sd0000B523* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [IOB1E1]) ++ ++pci:v00001397d000030B1sv00001397sd0000B543* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Swyx SX2 SinglePRI V2]) ++ ++pci:v00001397d000030B1sv00001397sd0000B544* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Swyx SX2 DualPRI V2]) ++ ++pci:v00001397d000030B1sv00001397sd0000B553* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET singleE1]) ++ ++pci:v00001397d000030B1sv00001397sd0000B554* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET doubleE1]) ++ ++pci:v00001397d000030B1sv00001397sd0000B555* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET doubleE1 2.0]) ++ ++pci:v00001397d000030B1sv00001397sd0000B55A* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET singleE1 miniPCI]) ++ ++pci:v00001397d000030B1sv00001397sd0000B563* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN1E1]) ++ ++pci:v00001397d000030B1sv00001397sd0000B564* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN2E1]) ++ ++pci:v00001397d000030B1sv00001397sd0000B565* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN2E1+]) ++ ++pci:v00001397d000030B1sv00001397sd0000B56A* ++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN1E1 miniPCI]) ++ + pci:v00001397d0000B700* + ID_MODEL_FROM_DATABASE=ISDN network controller PrimuX S0 [HFC-PCI] + +@@ -45206,6 +45422,9 @@ pci:v00001425d00005088* + pci:v00001425d00005089* + ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller + ++pci:v00001425d00005090* ++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller ++ + pci:v00001425d00005401* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +@@ -45299,6 +45518,9 @@ pci:v00001425d00005488* + pci:v00001425d00005489* + ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller + ++pci:v00001425d00005490* ++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller ++ + pci:v00001425d00005501* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller + +@@ -45392,6 +45614,9 @@ pci:v00001425d00005588* + pci:v00001425d00005589* + ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Storage Controller + ++pci:v00001425d00005590* ++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Storage Controller ++ + pci:v00001425d00005601* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller + +@@ -45485,6 +45710,9 @@ pci:v00001425d00005688* + pci:v00001425d00005689* + ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Storage Controller + ++pci:v00001425d00005690* ++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Storage Controller ++ + pci:v00001425d00005701* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +@@ -45578,6 +45806,9 @@ pci:v00001425d00005788* + pci:v00001425d00005789* + ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller + ++pci:v00001425d00005790* ++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller ++ + pci:v00001425d00005801* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller [VF] + +@@ -45671,6 +45902,9 @@ pci:v00001425d00005888* + pci:v00001425d00005889* + ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller [VF] + ++pci:v00001425d00005890* ++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller [VF] ++ + pci:v00001425d0000A000* + ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller + +@@ -51930,7 +52164,10 @@ pci:v0000168Cd0000003C* + ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter + + pci:v0000168Cd0000003E* +- ID_MODEL_FROM_DATABASE=Killer N1525 Wireless-AC ++ ID_MODEL_FROM_DATABASE=QCA6174 802.11ac Wireless Network Adapter ++ ++pci:v0000168Cd0000003Esv00001A56sd00001525* ++ ID_MODEL_FROM_DATABASE=QCA6174 802.11ac Wireless Network Adapter (Killer N1525 Wireless-AC) + + pci:v0000168Cd00000207* + ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] +@@ -54326,6 +54563,12 @@ pci:v00001924d00000903sv00001924sd00008009* + pci:v00001924d00000903sv00001924sd0000800A* + ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R2 Flareon 7000 Series 10G Adapter) + ++pci:v00001924d00000903sv00001924sd0000800B* ++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter) ++ ++pci:v00001924d00000903sv00001924sd0000800C* ++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R3 Flareon 7000 Series 10G Adapter) ++ + pci:v00001924d00000923* + ID_MODEL_FROM_DATABASE=SFC9140 + +@@ -55940,6 +56183,27 @@ pci:v00001BB0d00000002* + pci:v00001BB0d00000010* + ID_MODEL_FROM_DATABASE=OmniCube Accelerator OA-3000-2 + ++pci:v00001BB1* ++ ID_VENDOR_FROM_DATABASE=Seagate Technology PLC ++ ++pci:v00001BB1d0000005D* ++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage ++ ++pci:v00001BB1d0000005Dsv00001BB1sd00006501* ++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XP6500-8A1536 1.5TB) ++ ++pci:v00001BB1d0000005Dsv00001BB1sd00006502* ++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XP6500-8A2048) ++ ++pci:v00001BB1d0000005Dsv00001BB1sd00006503* ++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XP6500-8A4096) ++ ++pci:v00001BB1d0000005Dsv00001BB1sd00006511* ++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XH6550-2GB DRAM) ++ ++pci:v00001BB1d0000005Dsv00001BB1sd00006512* ++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XH6550-8GB DRAM) ++ + pci:v00001BB3* + ID_VENDOR_FROM_DATABASE=Bluecherry + +@@ -57905,6 +58169,9 @@ pci:v00007401* + pci:v00007401d0000E100* + ID_MODEL_FROM_DATABASE=PTP3100 PCIe PTP Slave Clock + ++pci:v00007470* ++ ID_VENDOR_FROM_DATABASE=TP-LINK Technologies Co., Ltd. ++ + pci:v00007604* + ID_VENDOR_FROM_DATABASE=O.N. Electronic Co Ltd. + +@@ -58434,13 +58701,13 @@ pci:v00008086d00000341* + ID_MODEL_FROM_DATABASE=41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) + + pci:v00008086d00000370* +- ID_MODEL_FROM_DATABASE=80333 Segment-A PCI Express-to-PCI Express Bridge ++ ID_MODEL_FROM_DATABASE=80333 Segment-A PCIe Express to PCI-X bridge + + pci:v00008086d00000371* + ID_MODEL_FROM_DATABASE=80333 A-Bus IOAPIC + + pci:v00008086d00000372* +- ID_MODEL_FROM_DATABASE=80333 Segment-B PCI Express-to-PCI Express Bridge ++ ID_MODEL_FROM_DATABASE=80333 Segment-B PCIe Express to PCI-X bridge + + pci:v00008086d00000373* + ID_MODEL_FROM_DATABASE=80333 B-Bus IOAPIC +@@ -62285,6 +62552,9 @@ pci:v00008086d00001521sv0000103Csd00003380* + pci:v00008086d00001521sv0000103Csd0000339E* + ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 2-port 361T Adapter) + ++pci:v00008086d00001521sv0000103Csd00008157* ++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 4-port 366T Adapter) ++ + pci:v00008086d00001521sv0000108Esd00007B16* + ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Quad Port GbE PCIe 2.0 ExpressModule, UTP) + +@@ -62588,6 +62858,12 @@ pci:v00008086d00001572* + pci:v00008086d00001572sv00001028sd00001F99* + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10G 4P X710/I350 rNDC) + ++pci:v00008086d00001572sv00001137sd00000000* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4) ++ ++pci:v00008086d00001572sv00001137sd0000013B* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4) ++ + pci:v00008086d00001572sv000017AAsd00000000* + ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (ThinkServer XL710 AnyFabric) + +@@ -62636,6 +62912,18 @@ pci:v00008086d00001581sv00001028sd00001F98* + pci:v00008086d00001583* + ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ + ++pci:v00008086d00001583sv0000108Esd00000000* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Oracle 10 Gb and 40 Gb Ethernet Adapter) ++ ++pci:v00008086d00001583sv0000108Esd00007B1B* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Oracle 10 Gb and 40 Gb Ethernet Adapter) ++ ++pci:v00008086d00001583sv00001137sd00000000* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged NIC XL710-Q2) ++ ++pci:v00008086d00001583sv00001137sd0000013C* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged NIC XL710-Q2) ++ + pci:v00008086d00001583sv00008086sd00000000* + ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2) + +@@ -62664,7 +62952,16 @@ pci:v00008086d00001584sv00008086sd00000003* + ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet I/O Module XL710-Q1) + + pci:v00008086d00001585* +- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 10GbE QSFP+ ++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE QSFP+ ++ ++pci:v00008086d00001586* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T ++ ++pci:v00008086d00001586sv0000108Esd00000000* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T ++ ++pci:v00008086d00001586sv0000108Esd00004857* ++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T + + pci:v00008086d000015A0* + ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM +@@ -77396,6 +77693,15 @@ pci:v00009412* + pci:v00009412d00006565* + ID_MODEL_FROM_DATABASE=6565 + ++pci:v00009413* ++ ID_VENDOR_FROM_DATABASE=Softlogic Co., Ltd. ++ ++pci:v00009413d00006010* ++ ID_MODEL_FROM_DATABASE=SOLO6010 MPEG-4 Video encoder/decoder ++ ++pci:v00009413d00006110* ++ ID_MODEL_FROM_DATABASE=SOLO6110 H.264 Video encoder/decoder ++ + pci:v00009618* + ID_VENDOR_FROM_DATABASE=JusonTech Corporation + +diff --git a/hwdb/20-sdio-vendor-model.hwdb b/hwdb/20-sdio-vendor-model.hwdb +index 626d673c4d..9cf34b2a39 100644 +--- a/hwdb/20-sdio-vendor-model.hwdb ++++ b/hwdb/20-sdio-vendor-model.hwdb +@@ -80,6 +80,36 @@ sdio:c*v02D0* + sdio:c*v02D0d044B* + ID_MODEL_FROM_DATABASE=Nintendo Wii WLAN daughter card + ++sdio:c*v02D0dA887* ++ ID_MODEL_FROM_DATABASE=BCM43143 WLAN card ++ ++sdio:c*v02D0d4324* ++ ID_MODEL_FROM_DATABASE=BCM43241 WLAN card ++ ++sdio:c*v02D0d4329* ++ ID_MODEL_FROM_DATABASE=BCM4329 WLAN card ++ ++sdio:c*v02D0d4330* ++ ID_MODEL_FROM_DATABASE=BCM4330 WLAN card ++ ++sdio:c*v02D0d4334* ++ ID_MODEL_FROM_DATABASE=BCM4334 WLAN card ++ ++sdio:c*v02D0dA94C* ++ ID_MODEL_FROM_DATABASE=BCM43340 WLAN card ++ ++sdio:c*v02D0dA94D* ++ ID_MODEL_FROM_DATABASE=BCM43341 WLAN card ++ ++sdio:c*v02D0d4335* ++ ID_MODEL_FROM_DATABASE=BCM4335/BCM4339 WLAN card ++ ++sdio:c*v02D0dA962* ++ ID_MODEL_FROM_DATABASE=BCM43362 WLAN card ++ ++sdio:c*v02D0d4354* ++ ID_MODEL_FROM_DATABASE=BCM4354 WLAN card ++ + sdio:c*v02DB* + ID_VENDOR_FROM_DATABASE=SyChip Inc. + +diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb +index 94e0269ce7..8867531a31 100644 +--- a/hwdb/20-usb-vendor-model.hwdb ++++ b/hwdb/20-usb-vendor-model.hwdb +@@ -503,6 +503,9 @@ usb:v03F0p0217* + usb:v03F0p0218* + ID_MODEL_FROM_DATABASE=APOLLO P2500/2600 + ++usb:v03F0p022A* ++ ID_MODEL_FROM_DATABASE=Laserjet CP1525nw ++ + usb:v03F0p0241* + ID_MODEL_FROM_DATABASE=Link-5 micro dongle + +@@ -1320,7 +1323,7 @@ usb:v03F0p4002* + ID_MODEL_FROM_DATABASE=PhotoSmart 635/715/720/735/935 (storage) + + usb:v03F0p4004* +- ID_MODEL_FROM_DATABASE=cp1160 ++ ID_MODEL_FROM_DATABASE=CP1160 + + usb:v03F0p4102* + ID_MODEL_FROM_DATABASE=PhotoSmart 618 +@@ -2075,6 +2078,9 @@ usb:v0403p1060* + usb:v0403p1234* + ID_MODEL_FROM_DATABASE=IronLogic RFID Adapter [Z-2 USB] + ++usb:v0403p1235* ++ ID_MODEL_FROM_DATABASE=Iron Logic Z-397 RS-485/422 converter ++ + usb:v0403p6001* + ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC + +@@ -2147,6 +2153,9 @@ usb:v0403p8B2B* + usb:v0403p8B2C* + ID_MODEL_FROM_DATABASE=Alpermann+Velte TCC70 + ++usb:v0403p9090* ++ ID_MODEL_FROM_DATABASE=SNAP Stick 200 ++ + usb:v0403p9132* + ID_MODEL_FROM_DATABASE=LCD and Temperature Interface + +@@ -3311,6 +3320,9 @@ usb:v0411p00E8* + usb:v0411p0105* + ID_MODEL_FROM_DATABASE=External Hard Drive HD-CEU2 [Drive Station] + ++usb:v0411p012C* ++ ID_MODEL_FROM_DATABASE=SATA Bridge ++ + usb:v0411p012E* + ID_MODEL_FROM_DATABASE=WLI-UC-AG300N Wireless LAN Adapter + +@@ -5378,6 +5390,12 @@ usb:v0451p625F* + usb:v0451p8042* + ID_MODEL_FROM_DATABASE=Hub + ++usb:v0451p8142* ++ ID_MODEL_FROM_DATABASE=TUSB8041 4-Port Hub ++ ++usb:v0451p926B* ++ ID_MODEL_FROM_DATABASE=TUSB9260 Boot Loader ++ + usb:v0451pDBC0* + ID_MODEL_FROM_DATABASE=Device Bay Controller + +@@ -7364,6 +7382,9 @@ usb:v046Dp0A1F* + usb:v046Dp0A29* + ID_MODEL_FROM_DATABASE=H600 [Wireless Headset] + ++usb:v046Dp0A37* ++ ID_MODEL_FROM_DATABASE=USB Headset H540 ++ + usb:v046Dp0A38* + ID_MODEL_FROM_DATABASE=Headset H340 + +@@ -7608,7 +7629,7 @@ usb:v046DpC122* + ID_MODEL_FROM_DATABASE=Harmony 650/700 Remote + + usb:v046DpC124* +- ID_MODEL_FROM_DATABASE=Harmony 300 Remote ++ ID_MODEL_FROM_DATABASE=Harmony 300/350 Remote + + usb:v046DpC125* + ID_MODEL_FROM_DATABASE=Harmony 200 Remote +@@ -8432,6 +8453,9 @@ usb:v0471p20E3* + usb:v0471p20E4* + ID_MODEL_FROM_DATABASE=GoGear ViBE 8GB + ++usb:v0471p2160* ++ ID_MODEL_FROM_DATABASE=Mio LINK Heart Rate Monitor ++ + usb:v0471p262C* + ID_MODEL_FROM_DATABASE=SPC230NC Webcam + +@@ -8948,6 +8972,9 @@ usb:v0483p2018* + usb:v0483p2302* + ID_MODEL_FROM_DATABASE=Portable Flash Device (PFD) + ++usb:v0483p347B* ++ ID_MODEL_FROM_DATABASE=ST-LINK/V2-1 ++ + usb:v0483p3744* + ID_MODEL_FROM_DATABASE=STLINK Pseudo disk + +@@ -9044,6 +9071,9 @@ usb:v0489pE016* + usb:v0489pE02C* + ID_MODEL_FROM_DATABASE=Atheros AR5BBU12 Bluetooth Device + ++usb:v0489pE04D* ++ ID_MODEL_FROM_DATABASE=Atheros AR3012 Bluetooth ++ + usb:v048A* + ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc. + +@@ -13277,6 +13307,9 @@ usb:v04D8pF4B5* + usb:v04D8pF8DA* + ID_MODEL_FROM_DATABASE=Hughski Ltd. ColorHug + ++usb:v04D8pF8E8* ++ ID_MODEL_FROM_DATABASE=Harmony 300/350 Remote ++ + usb:v04D8pF91C* + ID_MODEL_FROM_DATABASE=SPROG IIv3 + +@@ -14376,7 +14409,7 @@ usb:v04E8p6632* + ID_MODEL_FROM_DATABASE=MITs Sync + + usb:v04E8p663E* +- ID_MODEL_FROM_DATABASE=D900e Phone ++ ID_MODEL_FROM_DATABASE=D900e/B2100 Phone + + usb:v04E8p663F* + ID_MODEL_FROM_DATABASE=SGH-E720/SGH-E840 +@@ -14400,10 +14433,10 @@ usb:v04E8p6734* + ID_MODEL_FROM_DATABASE=Juke + + usb:v04E8p6759* +- ID_MODEL_FROM_DATABASE=D900e Media Player ++ ID_MODEL_FROM_DATABASE=D900e/B2100 Media Player + + usb:v04E8p675A* +- ID_MODEL_FROM_DATABASE=D900e Mass Storage ++ ID_MODEL_FROM_DATABASE=D900e/B2100 Mass Storage + + usb:v04E8p675B* + ID_MODEL_FROM_DATABASE=D900e Camera +@@ -17153,6 +17186,9 @@ usb:v054Cp04CB* + usb:v054Cp0541* + ID_MODEL_FROM_DATABASE=DSC-HX100V [Cybershot Digital Still Camera] + ++usb:v054Cp05C4* ++ ID_MODEL_FROM_DATABASE=DualShock 4 ++ + usb:v054Cp0689* + ID_MODEL_FROM_DATABASE=Walkman NWZ-B173F + +@@ -17870,6 +17906,9 @@ usb:v056Ap00F6* + usb:v056Ap00F8* + ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) tablet + ++usb:v056Ap0302* ++ ID_MODEL_FROM_DATABASE=Intuos CTH480S2 [Manga] ++ + usb:v056Ap0307* + ID_MODEL_FROM_DATABASE=Cintiq Companion Hybrid 13HD (DTH-A1300) tablet + +@@ -20511,7 +20550,7 @@ usb:v05B4p4857* + ID_MODEL_FROM_DATABASE=M-Any DAH-210 + + usb:v05B4p6001* +- ID_MODEL_FROM_DATABASE=Digisette DUO-MP3 AR-100 ++ ID_MODEL_FROM_DATABASE=HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller + + usb:v05B5* + ID_VENDOR_FROM_DATABASE=Dialogic Corp. +@@ -20618,6 +20657,9 @@ usb:v05C6p9001* + usb:v05C6p9002* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + ++usb:v05C6p9003* ++ ID_MODEL_FROM_DATABASE=Quectel UC20 ++ + usb:v05C6p9008* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +@@ -21548,6 +21590,9 @@ usb:v05DCpA813* + usb:v05DCpA815* + ID_MODEL_FROM_DATABASE=JumpDrive V10 + ++usb:v05DCpA833* ++ ID_MODEL_FROM_DATABASE=JumpDrive S23 64GB ++ + usb:v05DCpB002* + ID_MODEL_FROM_DATABASE=USB CF Reader + +@@ -22589,6 +22634,9 @@ usb:v064EpA219* + usb:v064EpC107* + ID_MODEL_FROM_DATABASE=HP webcam [dv6-1190en] + ++usb:v064EpC335* ++ ID_MODEL_FROM_DATABASE=HP TrueVision HD ++ + usb:v064EpD101* + ID_MODEL_FROM_DATABASE=Acer CrystalEye Webcam + +@@ -25850,6 +25898,9 @@ usb:v0764p0005* + usb:v0764p0501* + ID_MODEL_FROM_DATABASE=CP1500 AVR UPS + ++usb:v0764p0601* ++ ID_MODEL_FROM_DATABASE=PR1500LCDRT2U UPS ++ + usb:v0765* + ID_VENDOR_FROM_DATABASE=X-Rite, Inc. + +@@ -26900,6 +26951,9 @@ usb:v07B3p0A06* + usb:v07B3p0B00* + ID_MODEL_FROM_DATABASE=SmartPhoto F50 + ++usb:v07B3p0C00* ++ ID_MODEL_FROM_DATABASE=OpticPro ST64 Scanner ++ + usb:v07B3p0C03* + ID_MODEL_FROM_DATABASE=OpticPro ST64+ Scanner + +@@ -26946,7 +27000,7 @@ usb:v07B4p0112* + ID_MODEL_FROM_DATABASE=MAUSB-100 xD Card Reader + + usb:v07B4p0113* +- ID_MODEL_FROM_DATABASE=Mju 500 ++ ID_MODEL_FROM_DATABASE=Mju 500 / Stylus Digital Camera (PTP) + + usb:v07B4p0114* + ID_MODEL_FROM_DATABASE=C-350Z Camera +@@ -28589,6 +28643,9 @@ usb:v0846p9041* + usb:v0846p9042* + ID_MODEL_FROM_DATABASE=On Networks N150MA 802.11bgn [Realtek RTL8188CUS] + ++usb:v0846p9043* ++ ID_MODEL_FROM_DATABASE=WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?] ++ + usb:v0846p9050* + ID_MODEL_FROM_DATABASE=A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526] + +@@ -29432,6 +29489,9 @@ usb:v08E3p0301* + usb:v08E4* + ID_VENDOR_FROM_DATABASE=Pioneer Corp. + ++usb:v08E4p0184* ++ ID_MODEL_FROM_DATABASE=DDJ-WeGO ++ + usb:v08E4p0185* + ID_MODEL_FROM_DATABASE=DDJ-WeGO2 + +@@ -29990,6 +30050,9 @@ usb:v090Cp037A* + usb:v090Cp037B* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + ++usb:v090Cp037C* ++ ID_MODEL_FROM_DATABASE=300k Pixel Camera ++ + usb:v090Cp1000* + ID_MODEL_FROM_DATABASE=Flash Drive + +@@ -30032,6 +30095,9 @@ usb:v090CpB370* + usb:v090CpB371* + ID_MODEL_FROM_DATABASE=Silicon Motion SM371 Camera + ++usb:v090CpF37D* ++ ID_MODEL_FROM_DATABASE=Endoscope camera ++ + usb:v090D* + ID_VENDOR_FROM_DATABASE=Multiport Computer Vertriebs GmbH + +@@ -30323,6 +30389,9 @@ usb:v0928* + usb:v0928p8000* + ID_MODEL_FROM_DATABASE=Firmware uploader + ++usb:v0928pFFFF* ++ ID_MODEL_FROM_DATABASE=Blank Oxford Device ++ + usb:v0929* + ID_VENDOR_FROM_DATABASE=American Biometric Co. + +@@ -35774,6 +35843,15 @@ usb:v0C4Bp0500* + usb:v0C4Bp0501* + ID_MODEL_FROM_DATABASE=cyberJack RFID comfort dual interface smartcard reader + ++usb:v0C4Bp0502* ++ ID_MODEL_FROM_DATABASE=cyberJack compact ++ ++usb:v0C4Bp0504* ++ ID_MODEL_FROM_DATABASE=cyberJack go / go plus ++ ++usb:v0C4Bp0505* ++ ID_MODEL_FROM_DATABASE=cyberJack wave ++ + usb:v0C4Bp9102* + ID_MODEL_FROM_DATABASE=cyberJack RFID basis contactless smartcard reader + +@@ -35981,6 +36059,36 @@ usb:v0C5E* + usb:v0C60* + ID_VENDOR_FROM_DATABASE=Apogee Electronics Corp. + ++usb:v0C60p0001* ++ ID_MODEL_FROM_DATABASE=MiniMe ++ ++usb:v0C60p0002* ++ ID_MODEL_FROM_DATABASE=MiniDAC ++ ++usb:v0C60p0003* ++ ID_MODEL_FROM_DATABASE=ONE ++ ++usb:v0C60p0004* ++ ID_MODEL_FROM_DATABASE=GiO ++ ++usb:v0C60p0007* ++ ID_MODEL_FROM_DATABASE=Duet ++ ++usb:v0C60p0009* ++ ID_MODEL_FROM_DATABASE=Jam ++ ++usb:v0C60p000A* ++ ID_MODEL_FROM_DATABASE=Jam Bootloader ++ ++usb:v0C60p000B* ++ ID_MODEL_FROM_DATABASE=MiC ++ ++usb:v0C60p000C* ++ ID_MODEL_FROM_DATABASE=MiC Bootloader ++ ++usb:v0C60p8007* ++ ID_MODEL_FROM_DATABASE=Duet DFU Mode ++ + usb:v0C62* + ID_VENDOR_FROM_DATABASE=Chant Sincere Co., Ltd + +@@ -37524,7 +37632,7 @@ usb:v0DA3* + ID_VENDOR_FROM_DATABASE=Nippon Electro-Sensory Devices Corp. + + usb:v0DA4* +- ID_VENDOR_FROM_DATABASE=Polar Electro OY ++ ID_VENDOR_FROM_DATABASE=Polar Electro Oy + + usb:v0DA4p0001* + ID_MODEL_FROM_DATABASE=Interface +@@ -37667,6 +37775,18 @@ usb:v0DB3* + usb:v0DB4* + ID_VENDOR_FROM_DATABASE=Chung Fu Chen Yeh Enterprise Corp. + ++usb:v0DB5* ++ ID_VENDOR_FROM_DATABASE=Access IS ++ ++usb:v0DB5p0139* ++ ID_MODEL_FROM_DATABASE=LSR116 CDC ++ ++usb:v0DB5p013A* ++ ID_MODEL_FROM_DATABASE=LSR116 Keyboard ++ ++usb:v0DB5p013B* ++ ID_MODEL_FROM_DATABASE=LSR116 HID ++ + usb:v0DB7* + ID_VENDOR_FROM_DATABASE=ELCON Systemtechnik + +@@ -38510,6 +38630,9 @@ usb:v0E6Fp0005* + usb:v0E6Fp0006* + ID_MODEL_FROM_DATABASE=Edge wireless Controller + ++usb:v0E6Fp0128* ++ ID_MODEL_FROM_DATABASE=Wireless PS3 Controller ++ + usb:v0E70* + ID_VENDOR_FROM_DATABASE=Tokyo Electronic Industry Co., Ltd + +@@ -38618,6 +38741,9 @@ usb:v0E8Fp0020* + usb:v0E8Fp0021* + ID_MODEL_FROM_DATABASE=Multimedia Keyboard Controller + ++usb:v0E8Fp0022* ++ ID_MODEL_FROM_DATABASE=multimedia keyboard controller ++ + usb:v0E8Fp0201* + ID_MODEL_FROM_DATABASE=SmartJoy Frag Xpad/PS2 adaptor + +@@ -38858,6 +38984,9 @@ usb:v0EE3p1000* + usb:v0EE4* + ID_VENDOR_FROM_DATABASE=Sunrich Technology, Ltd + ++usb:v0EE4p0690* ++ ID_MODEL_FROM_DATABASE=SATA 3 Adapter ++ + usb:v0EEE* + ID_VENDOR_FROM_DATABASE=Digital Stream Technology, Inc. + +@@ -39663,7 +39792,7 @@ usb:v0FCEpE19B* + ID_MODEL_FROM_DATABASE=C2005 [Xperia M dual] (Mass Storage) + + usb:v0FCEpF0FA* +- ID_MODEL_FROM_DATABASE=Liveview micro display MN800 in DFU mode ++ ID_MODEL_FROM_DATABASE=MN800 / Smartwatch 2 (DFU mode) + + usb:v0FCF* + ID_VENDOR_FROM_DATABASE=Dynastream Innovations, Inc. +@@ -39884,6 +40013,9 @@ usb:v1004p61C6* + usb:v1004p61CC* + ID_MODEL_FROM_DATABASE=Optimus S + ++usb:v1004p61DA* ++ ID_MODEL_FROM_DATABASE=G2 Android Phone [tethering mode] ++ + usb:v1004p61F1* + ID_MODEL_FROM_DATABASE=Optimus Android Phone [LG Software mode] + +@@ -39900,13 +40032,13 @@ usb:v1004p6300* + ID_MODEL_FROM_DATABASE=Optimus Android Phone + + usb:v1004p631C* +- ID_MODEL_FROM_DATABASE=Optimus Android Phone [MTP mode] ++ ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone [MTP mode] + + usb:v1004p631D* + ID_MODEL_FROM_DATABASE=Optimus Android Phone (Camera/PTP Mode) + + usb:v1004p631E* +- ID_MODEL_FROM_DATABASE=Optimus Android Phone [Camera/PTP mode] ++ ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone [Camera/PTP mode] + + usb:v1004p631F* + ID_MODEL_FROM_DATABASE=Optimus Android Phone (Charge Mode) +@@ -40241,6 +40373,9 @@ usb:v1046p9967* + usb:v1048* + ID_VENDOR_FROM_DATABASE=Targus Group International + ++usb:v1048p2010* ++ ID_MODEL_FROM_DATABASE=4-Port hub ++ + usb:v104B* + ID_VENDOR_FROM_DATABASE=Mylex / Buslogic + +@@ -40287,13 +40422,22 @@ usb:v1050p0010* + ID_MODEL_FROM_DATABASE=Yubikey + + usb:v1050p0110* +- ID_MODEL_FROM_DATABASE=Yubikey NEO OTP ++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) OTP + + usb:v1050p0111* +- ID_MODEL_FROM_DATABASE=Yubikey NEO OTP+CCID ++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) OTP+CCID + + usb:v1050p0112* +- ID_MODEL_FROM_DATABASE=Yubikey NEO CCID ++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) CCID ++ ++usb:v1050p0113* ++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) U2F ++ ++usb:v1050p0114* ++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) OTP+U2F ++ ++usb:v1050p0115* ++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) U2F+CCID + + usb:v1050p0200* + ID_MODEL_FROM_DATABASE=U2F Gnubby +@@ -50777,6 +50921,15 @@ usb:v2931p0A05* + usb:v2931p0AFE* + ID_MODEL_FROM_DATABASE=Jolla charging only + ++usb:v2A03* ++ ID_VENDOR_FROM_DATABASE=dog hunter AG ++ ++usb:v2A03p0001* ++ ID_MODEL_FROM_DATABASE=Linino One (CDC ACM) ++ ++usb:v2A03p8001* ++ ID_MODEL_FROM_DATABASE=Linino ONE board ++ + usb:v2C02* + ID_VENDOR_FROM_DATABASE=Planex Communications + diff --git a/0080-networkd-Begin-with-serial-number-1-for-netlink-requ.patch b/0080-networkd-Begin-with-serial-number-1-for-netlink-requ.patch new file mode 100644 index 0000000..1d52a19 --- /dev/null +++ b/0080-networkd-Begin-with-serial-number-1-for-netlink-requ.patch @@ -0,0 +1,45 @@ +From cbc0484a42adf93bdd6897f93b15b0eaeb3077f6 Mon Sep 17 00:00:00 2001 +From: Richard Maw +Date: Thu, 12 Mar 2015 18:14:58 +0000 +Subject: [PATCH] networkd: Begin with serial number 1 for netlink requests + +"Notifications are of informal nature and no reply is expected, therefore the +sequence number is typically set to 0."[1] + +If networkd is started soon after recent netlink activity, then there +will be messages with sequence number 0 in the buffer. + +The first thing networkd does is to request a dump of all the links. If +it uses sequence number 0 for this, then it may confuse the dump request's +response with that of a notification. + +This will result in it failing to properly enumerate all the links, +but more importantly, when it comes to enumerate all the addresses, it +will still have the link dump in progress, so the address enumeration +will fail with -EBUSY. + +[1]: http://www.infradead.org/~tgr/libnl/doc/core.html#core_msg_types + +[tomegun: sequence -> serial] + +(cherry picked from commit d422e52a3523ad0955bec4f9fbed46e234d28590) +--- + src/libsystemd/sd-rtnl/sd-rtnl.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/src/libsystemd/sd-rtnl/sd-rtnl.c b/src/libsystemd/sd-rtnl/sd-rtnl.c +index ae49c77e01..7cdcc5d96a 100644 +--- a/src/libsystemd/sd-rtnl/sd-rtnl.c ++++ b/src/libsystemd/sd-rtnl/sd-rtnl.c +@@ -61,6 +61,11 @@ static int sd_rtnl_new(sd_rtnl **ret) { + sizeof(struct nlmsghdr), sizeof(uint8_t))) + return -ENOMEM; + ++ /* Change notification responses have sequence 0, so we must ++ * start our request sequence numbers at 1, or we may confuse our ++ * responses with notifications from the kernel */ ++ rtnl->serial = 1; ++ + *ret = rtnl; + rtnl = NULL; + diff --git a/0081-journal-remote-downgrade-routine-messages-to-debug.patch b/0081-journal-remote-downgrade-routine-messages-to-debug.patch new file mode 100644 index 0000000..cf152dd --- /dev/null +++ b/0081-journal-remote-downgrade-routine-messages-to-debug.patch @@ -0,0 +1,179 @@ +From 62ae285fd7265de8ef410b876a8aec047a93ea37 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Thu, 12 Mar 2015 21:29:28 -0400 +Subject: [PATCH] journal-remote: downgrade routine messages to debug + +https://bugs.freedesktop.org/show_bug.cgi?id=89486 +(cherry picked from commit 0e72da6fe8671d49b4d458519f5ac7600fd04f03) +--- + src/journal-remote/journal-remote-parse.c | 2 +- + src/journal-remote/journal-remote-write.c | 2 +- + src/journal-remote/journal-remote.c | 36 +++++++++++++++---------------- + src/journal-remote/microhttpd-util.c | 4 ++-- + 4 files changed, 22 insertions(+), 22 deletions(-) + +diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c +index afded7e380..6c096de03a 100644 +--- a/src/journal-remote/journal-remote-parse.c ++++ b/src/journal-remote/journal-remote-parse.c +@@ -443,7 +443,7 @@ int process_source(RemoteSource *source, bool compress, bool seal) { + return r; + + /* We have a full event */ +- log_trace("Received a full event from source@%p fd:%d (%s)", ++ log_trace("Received full event from source@%p fd:%d (%s)", + source, source->fd, source->name); + + if (!source->iovw.count) { +diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c +index df30049397..99820fa7b8 100644 +--- a/src/journal-remote/journal-remote-write.c ++++ b/src/journal-remote/journal-remote-write.c +@@ -156,7 +156,7 @@ int writer_write(Writer *w, + if (r < 0) + return r; + else +- log_info("%s: Successfully rotated journal", w->journal->path); ++ log_debug("%s: Successfully rotated journal", w->journal->path); + + log_debug("Retrying write."); + r = journal_file_append_entry(w->journal, ts, iovw->iovec, iovw->count, +diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c +index 8f32a9a988..d1486e7cda 100644 +--- a/src/journal-remote/journal-remote.c ++++ b/src/journal-remote/journal-remote.c +@@ -207,7 +207,7 @@ static int open_output(Writer *w, const char* host) { + log_error_errno(r, "Failed to open output journal %s: %m", + output); + else +- log_info("Opened output file %s", w->journal->path); ++ log_debug("Opened output file %s", w->journal->path); + return r; + } + +@@ -747,7 +747,7 @@ static int setup_microhttpd_socket(RemoteServer *s, + const char *trust) { + int fd; + +- fd = make_socket_fd(LOG_INFO, address, SOCK_STREAM | SOCK_CLOEXEC); ++ fd = make_socket_fd(LOG_DEBUG, address, SOCK_STREAM | SOCK_CLOEXEC); + if (fd < 0) + return fd; + +@@ -844,7 +844,7 @@ static int remoteserver_init(RemoteServer *s, + if (n < 0) + return log_error_errno(n, "Failed to read listening file descriptors from environment: %m"); + else +- log_info("Received %d descriptors", n); ++ log_debug("Received %d descriptors", n); + + if (MAX(http_socket, https_socket) >= SD_LISTEN_FDS_START + n) { + log_error("Received fewer sockets than expected"); +@@ -853,7 +853,7 @@ static int remoteserver_init(RemoteServer *s, + + for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd++) { + if (sd_is_socket(fd, AF_UNSPEC, 0, true)) { +- log_info("Received a listening socket (fd:%d)", fd); ++ log_debug("Received a listening socket (fd:%d)", fd); + + if (fd == http_socket) + r = setup_microhttpd_server(s, fd, NULL, NULL, NULL); +@@ -868,7 +868,7 @@ static int remoteserver_init(RemoteServer *s, + if (r < 0) + return log_error_errno(r, "Failed to retrieve remote name: %m"); + +- log_info("Received a connection socket (fd:%d) from %s", fd, hostname); ++ log_debug("Received a connection socket (fd:%d) from %s", fd, hostname); + + r = add_source(s, fd, hostname, true); + } else { +@@ -908,7 +908,7 @@ static int remoteserver_init(RemoteServer *s, + } + + if (arg_listen_raw) { +- log_info("Listening on a socket..."); ++ log_debug("Listening on a socket..."); + r = setup_raw_socket(s, arg_listen_raw); + if (r < 0) + return r; +@@ -930,12 +930,12 @@ static int remoteserver_init(RemoteServer *s, + const char *output_name; + + if (streq(*file, "-")) { +- log_info("Using standard input as source."); ++ log_debug("Using standard input as source."); + + fd = STDIN_FILENO; + output_name = "stdin"; + } else { +- log_info("Reading file %s...", *file); ++ log_debug("Reading file %s...", *file); + + fd = open(*file, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NONBLOCK); + if (fd < 0) +@@ -1014,22 +1014,22 @@ static int dispatch_raw_source_event(sd_event_source *event, + if (source->state == STATE_EOF) { + size_t remaining; + +- log_info("EOF reached with source fd:%d (%s)", +- source->fd, source->name); ++ log_debug("EOF reached with source fd:%d (%s)", ++ source->fd, source->name); + + remaining = source_non_empty(source); + if (remaining > 0) +- log_warning("Premature EOF. %zu bytes lost.", remaining); ++ log_notice("Premature EOF. %zu bytes lost.", remaining); + remove_source(s, source->fd); +- log_info("%zu active sources remaining", s->active); ++ log_debug("%zu active sources remaining", s->active); + return 0; + } else if (r == -E2BIG) { +- log_error("Entry too big, skipped"); ++ log_notice_errno(E2BIG, "Entry too big, skipped"); + return 1; + } else if (r == -EAGAIN) { + return 0; + } else if (r < 0) { +- log_info_errno(r, "Closing connection: %m"); ++ log_debug_errno(r, "Closing connection: %m"); + remove_source(server, fd); + return 0; + } else +@@ -1071,10 +1071,10 @@ static int accept_connection(const char* type, int fd, + return r; + } + +- log_info("Accepted %s %s connection from %s", +- type, +- socket_address_family(addr) == AF_INET ? "IP" : "IPv6", +- a); ++ log_debug("Accepted %s %s connection from %s", ++ type, ++ socket_address_family(addr) == AF_INET ? "IP" : "IPv6", ++ a); + + *hostname = b; + +diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c +index a95fff18f3..b45c38d682 100644 +--- a/src/journal-remote/microhttpd-util.c ++++ b/src/journal-remote/microhttpd-util.c +@@ -178,7 +178,7 @@ static int verify_cert_authorized(gnutls_session_t session) { + if (r < 0) + return log_error_errno(r, "gnutls_certificate_verification_status_print failed: %m"); + +- log_info("Certificate status: %s", out.data); ++ log_debug("Certificate status: %s", out.data); + gnutls_free(out.data); + + return status == 0 ? 0 : -EPERM; +@@ -280,7 +280,7 @@ int check_permissions(struct MHD_Connection *connection, int *code, char **hostn + return -EPERM; + } + +- log_info("Connection from %s", buf); ++ log_debug("Connection from %s", buf); + + if (hostname) { + *hostname = buf; diff --git a/0082-journal-remote-process-events-without-delay.patch b/0082-journal-remote-process-events-without-delay.patch new file mode 100644 index 0000000..ff4f296 --- /dev/null +++ b/0082-journal-remote-process-events-without-delay.patch @@ -0,0 +1,156 @@ +From 706ce3faab879d4cb20906ad6d27e962ab3e4ad0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 13 Mar 2015 00:02:28 -0400 +Subject: [PATCH] journal-remote: process events without delay + +journal-remote buffers input, and then parses it handling one journal entry at a time. +It was possible for useful data to be left in the buffer after some entries were +processesed. But all data would be already read from the fd, so there would be +no reason for the event loop to call the handler again. After some new data came in, +the handler would be called again, and would then process the "old" data in the buffer. + +Fix this by enabling a handler wherever we process input data and do not exhaust data +from the input buffer (i.e. when EAGAIN was not encountered). The handler runs until +we encounter EAGAIN. + +Looping over the input data is done in this roundabout way to allow the event loop +to dispatch other events in the meanwhile. If the loop was inside the handler, a +source which produced data fast enough could completely monopolize the process. + +https://bugs.freedesktop.org/show_bug.cgi?id=89516 +(cherry picked from commit 043945b93824e33e040954612aaa934cd1a43a1b) +--- + src/journal-remote/journal-remote-parse.c | 1 + + src/journal-remote/journal-remote-parse.h | 1 + + src/journal-remote/journal-remote.c | 65 +++++++++++++++++++++++++++---- + 3 files changed, 59 insertions(+), 8 deletions(-) + +diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c +index 6c096de03a..7e62954351 100644 +--- a/src/journal-remote/journal-remote-parse.c ++++ b/src/journal-remote/journal-remote-parse.c +@@ -41,6 +41,7 @@ void source_free(RemoteSource *source) { + writer_unref(source->writer); + + sd_event_source_unref(source->event); ++ sd_event_source_unref(source->buffer_event); + + free(source); + } +diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h +index 22db550913..06a50296a1 100644 +--- a/src/journal-remote/journal-remote-parse.h ++++ b/src/journal-remote/journal-remote-parse.h +@@ -54,6 +54,7 @@ typedef struct RemoteSource { + Writer *writer; + + sd_event_source *event; ++ sd_event_source *buffer_event; + } RemoteSource; + + RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer); +diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c +index d1486e7cda..b7cc6d7172 100644 +--- a/src/journal-remote/journal-remote.c ++++ b/src/journal-remote/journal-remote.c +@@ -289,6 +289,8 @@ static int dispatch_raw_source_event(sd_event_source *event, + int fd, + uint32_t revents, + void *userdata); ++static int dispatch_raw_source_until_block(sd_event_source *event, ++ void *userdata); + static int dispatch_blocking_source_event(sd_event_source *event, + void *userdata); + static int dispatch_raw_connection_event(sd_event_source *event, +@@ -376,8 +378,15 @@ static int add_source(RemoteServer *s, int fd, char* name, bool own_name) { + + r = sd_event_add_io(s->events, &source->event, + fd, EPOLLIN|EPOLLRDHUP|EPOLLPRI, +- dispatch_raw_source_event, s); +- if (r == -EPERM) { ++ dispatch_raw_source_event, source); ++ if (r == 0) { ++ /* Add additional source for buffer processing. It will be ++ * enabled later. */ ++ r = sd_event_add_defer(s->events, &source->buffer_event, ++ dispatch_raw_source_until_block, source); ++ if (r == 0) ++ sd_event_source_set_enabled(source->buffer_event, SD_EVENT_OFF); ++ } else if (r == -EPERM) { + log_debug("Falling back to sd_event_add_defer for fd:%d (%s)", fd, name); + r = sd_event_add_defer(s->events, &source->event, + dispatch_blocking_source_event, source); +@@ -997,15 +1006,18 @@ static void server_destroy(RemoteServer *s) { + ********************************************************************** + **********************************************************************/ + +-static int dispatch_raw_source_event(sd_event_source *event, +- int fd, +- uint32_t revents, +- void *userdata) { ++static int handle_raw_source(sd_event_source *event, ++ int fd, ++ uint32_t revents, ++ RemoteServer *s) { + +- RemoteServer *s = userdata; + RemoteSource *source; + int r; + ++ /* Returns 1 if there might be more data pending, ++ * 0 if data is currently exhausted, negative on error. ++ */ ++ + assert(fd >= 0 && fd < (ssize_t) s->sources_size); + source = s->sources[fd]; + assert(source->fd == fd); +@@ -1036,11 +1048,48 @@ static int dispatch_raw_source_event(sd_event_source *event, + return 1; + } + ++static int dispatch_raw_source_until_block(sd_event_source *event, ++ void *userdata) { ++ RemoteSource *source = userdata; ++ int r; ++ ++ /* Make sure event stays around even if source is destroyed */ ++ sd_event_source_ref(event); ++ ++ r = handle_raw_source(event, source->fd, EPOLLIN, server); ++ if (r != 1) ++ /* No more data for now */ ++ sd_event_source_set_enabled(event, SD_EVENT_OFF); ++ ++ sd_event_source_unref(event); ++ ++ return r; ++} ++ ++static int dispatch_raw_source_event(sd_event_source *event, ++ int fd, ++ uint32_t revents, ++ void *userdata) { ++ RemoteSource *source = userdata; ++ int r; ++ ++ assert(source->event); ++ assert(source->buffer_event); ++ ++ r = handle_raw_source(event, fd, EPOLLIN, server); ++ if (r == 1) ++ /* Might have more data. We need to rerun the handler ++ * until we are sure the buffer is exhausted. */ ++ sd_event_source_set_enabled(source->buffer_event, SD_EVENT_ON); ++ ++ return r; ++} ++ + static int dispatch_blocking_source_event(sd_event_source *event, + void *userdata) { + RemoteSource *source = userdata; + +- return dispatch_raw_source_event(event, source->fd, EPOLLIN, server); ++ return handle_raw_source(event, source->fd, EPOLLIN, server); + } + + static int accept_connection(const char* type, int fd, diff --git a/0083-man-update-example-2-in-systemd.network-5.patch b/0083-man-update-example-2-in-systemd.network-5.patch new file mode 100644 index 0000000..b8f49e7 --- /dev/null +++ b/0083-man-update-example-2-in-systemd.network-5.patch @@ -0,0 +1,26 @@ +From 1d6c7cfcd4e9f4117264e1611ce881a871b92a56 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 13 Mar 2015 00:25:31 -0400 +Subject: [PATCH] man: update example 2 in systemd.network(5) + +none/both/v4/v6 are deprecated in favour of no/yes/ipv4/ipv6. + +https://bugs.freedesktop.org/show_bug.cgi?id=89221 +(cherry picked from commit 9c8ca3f7a69f82ca181b3cd2d5e1d3e621938abb) +--- + man/systemd.network.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/systemd.network.xml b/man/systemd.network.xml +index 485876b6ac..24f8416ef9 100644 +--- a/man/systemd.network.xml ++++ b/man/systemd.network.xml +@@ -643,7 +643,7 @@ Gateway=192.168.0.1 + Name=en* + + [Network] +-DHCP=both ++DHCP=yes + + + diff --git a/0084-gpt-auto-generator-fix-detection-of-srv.patch b/0084-gpt-auto-generator-fix-detection-of-srv.patch new file mode 100644 index 0000000..ed2547c --- /dev/null +++ b/0084-gpt-auto-generator-fix-detection-of-srv.patch @@ -0,0 +1,24 @@ +From 4bbc153799e5b29d19c1ec699abfa3d562d8be46 Mon Sep 17 00:00:00 2001 +From: Mathieu Chevrier +Date: Fri, 13 Mar 2015 00:33:44 -0400 +Subject: [PATCH] gpt-auto-generator: fix detection of /srv + +https://bugs.freedesktop.org/show_bug.cgi?id=89226 +(cherry picked from commit d736e4f3e76daca4ab1b1fc444737e5ee20a27cd) +--- + 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 5c58b58f8a..869a230f17 100644 +--- a/src/gpt-auto-generator/gpt-auto-generator.c ++++ b/src/gpt-auto-generator/gpt-auto-generator.c +@@ -548,7 +548,7 @@ static int enumerate_partitions(dev_t devnum) { + srv_rw = !(flags & GPT_FLAG_READ_ONLY), + + free(srv); +- srv = strdup(node); ++ srv = strdup(subnode); + if (!srv) + return log_oom(); + } diff --git a/0085-sd-rtnl-never-set-serial-to-0.patch b/0085-sd-rtnl-never-set-serial-to-0.patch new file mode 100644 index 0000000..36c0284 --- /dev/null +++ b/0085-sd-rtnl-never-set-serial-to-0.patch @@ -0,0 +1,28 @@ +From 12e474fdf33ffc500aacad39fe19aa57b344f9cb Mon Sep 17 00:00:00 2001 +From: Tom Gundersen +Date: Fri, 13 Mar 2015 15:49:07 +0100 +Subject: [PATCH] sd-rtnl: never set serial to 0 + +In the unlikely event that we wrap the counter, skip 0 as this is used +for broadcasts. + +Suggested by Richard Maw. + +(cherry picked from commit 913b0eef1a01e0c78f0453b0174e75d5caae1023) +--- + src/libsystemd/sd-rtnl/sd-rtnl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/libsystemd/sd-rtnl/sd-rtnl.c b/src/libsystemd/sd-rtnl/sd-rtnl.c +index 7cdcc5d96a..5df39e1177 100644 +--- a/src/libsystemd/sd-rtnl/sd-rtnl.c ++++ b/src/libsystemd/sd-rtnl/sd-rtnl.c +@@ -262,7 +262,7 @@ static void rtnl_seal_message(sd_rtnl *rtnl, sd_rtnl_message *m) { + assert(m); + assert(m->hdr); + +- m->hdr->nlmsg_seq = rtnl->serial++; ++ m->hdr->nlmsg_seq = rtnl->serial++ ? : rtnl->serial++; + + rtnl_message_seal(m); + diff --git a/0086-gpt-auto-generator-allow-type-check-to-fail.patch b/0086-gpt-auto-generator-allow-type-check-to-fail.patch new file mode 100644 index 0000000..f9194c9 --- /dev/null +++ b/0086-gpt-auto-generator-allow-type-check-to-fail.patch @@ -0,0 +1,45 @@ +From 1261a8df61818d48c6bc9445a16b40e24ffaa74e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 13 Mar 2015 21:10:13 -0500 +Subject: [PATCH] gpt-auto-generator: allow type check to fail + +add_mount() is OK with unknow file type, but we have to initalize +the variable to NULL not to pass garbage on error. + +(cherry picked from commit a0b1209c4a59754f428894e0485413542da50014) +--- + src/gpt-auto-generator/gpt-auto-generator.c | 13 +++++-------- + 1 file changed, 5 insertions(+), 8 deletions(-) + +diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c +index 869a230f17..e0a5bb305b 100644 +--- a/src/gpt-auto-generator/gpt-auto-generator.c ++++ b/src/gpt-auto-generator/gpt-auto-generator.c +@@ -290,7 +290,7 @@ static int probe_and_add_mount( + const char *post) { + + _cleanup_blkid_free_probe_ blkid_probe b = NULL; +- const char *fstype; ++ const char *fstype = NULL; + int r; + + assert(id); +@@ -323,14 +323,11 @@ static int probe_and_add_mount( + r = blkid_do_safeprobe(b); + if (r == -2 || r == 1) /* no result or uncertain */ + return 0; +- else if (r != 0) { +- if (errno == 0) +- errno = EIO; +- log_error_errno(errno, "Failed to probe %s: %m", what); +- return -errno; +- } ++ else if (r != 0) ++ return log_error_errno(errno ?: EIO, "Failed to probe %s: %m", what); + +- blkid_probe_lookup_value(b, "TYPE", &fstype, NULL); ++ /* add_mount is OK with fstype being NULL. */ ++ (void) blkid_probe_lookup_value(b, "TYPE", &fstype, NULL); + + return add_mount( + id, diff --git a/0087-man-fix-a-bunch-of-links.patch b/0087-man-fix-a-bunch-of-links.patch new file mode 100644 index 0000000..2c97c98 --- /dev/null +++ b/0087-man-fix-a-bunch-of-links.patch @@ -0,0 +1,1453 @@ +From 285bc1b0a3d2a6e0b87a7778de8227216feb897e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 13 Mar 2015 21:22:39 -0500 +Subject: [PATCH] man: fix a bunch of links + +All hail linkchecker! + +(cherry picked from commit 3ba3a79df4ae094d1008c04a9af8d1ff970124c4) + +Conflicts: + man/systemd-efi-boot-generator.xml +--- + man/busctl.xml | 4 ++-- + man/crypttab.xml | 20 +++++++++---------- + man/file-hierarchy.xml | 2 +- + man/kernel-command-line.xml | 2 +- + man/locale.conf.xml | 8 ++++---- + man/localectl.xml | 8 ++++---- + man/logind.conf.xml | 2 +- + man/machine-id.xml | 4 ++-- + man/modules-load.d.xml | 2 +- + man/os-release.xml | 2 +- + man/sd_bus_message_append.xml | 2 +- + man/sd_bus_open_user.xml | 2 +- + man/sd_event_add_signal.xml | 4 ++-- + man/sd_journal_get_catalog.xml | 2 +- + man/sd_journal_get_cursor.xml | 2 +- + man/sd_journal_print.xml | 14 ++++++------- + man/sysctl.d.xml | 8 ++++---- + man/systemctl.xml | 6 +++--- + man/systemd-activate.xml | 2 +- + man/systemd-analyze.xml | 4 ++-- + man/systemd-cat.xml | 2 +- + man/systemd-cryptsetup-generator.xml | 2 +- + man/systemd-cryptsetup@.service.xml | 2 +- + man/systemd-efi-boot-generator.xml | 4 ++-- + man/systemd-firstboot.xml | 14 ++++++------- + man/systemd-fstab-generator.xml | 4 ++-- + man/systemd-gpt-auto-generator.xml | 8 ++++---- + man/systemd-hibernate-resume-generator.xml | 2 +- + man/systemd-journald.service.xml | 2 +- + man/systemd-localed.service.xml | 8 ++++---- + man/systemd-nspawn.xml | 4 ++-- + man/systemd-quotacheck.service.xml | 2 +- + man/systemd-remount-fs.service.xml | 6 +++--- + man/systemd-socket-proxyd.xml | 8 ++++---- + man/systemd-sysctl.service.xml | 8 ++++---- + man/systemd-system.conf.xml | 2 +- + man/systemd-update-utmp.service.xml | 2 +- + man/systemd-vconsole-setup.service.xml | 8 ++++---- + man/systemd.automount.xml | 6 +++--- + man/systemd.exec.xml | 16 +++++++-------- + man/systemd.generator.xml | 2 +- + man/systemd.journal-fields.xml | 2 +- + man/systemd.kill.xml | 4 ++-- + man/systemd.mount.xml | 14 ++++++------- + man/systemd.network.xml | 8 ++++---- + man/systemd.path.xml | 4 ++-- + man/systemd.socket.xml | 32 +++++++++++++++--------------- + man/systemd.swap.xml | 10 +++++----- + man/systemd.unit.xml | 4 ++-- + man/systemd.xml | 6 +++--- + man/vconsole.conf.xml | 6 +++--- + 51 files changed, 151 insertions(+), 151 deletions(-) + +diff --git a/man/busctl.xml b/man/busctl.xml +index 251233bb96..cc1844b0a0 100644 +--- a/man/busctl.xml ++++ b/man/busctl.xml +@@ -288,7 +288,7 @@ + url="http://wiki.wireshark.org/Development/LibpcapFileFormat">Libpcap + File Format description. Make sure to redirect the + output to STDOUT to a file. Tools like +- wireshark1 ++ wireshark1 + may be used to dissect and view the generated + files. + +@@ -472,7 +472,7 @@ o "/org/freedesktop/systemd1/job/42684" + systemd1, + systemd-bus-proxyd8, + machinectl1, +- wireshark1 ++ wireshark1 + + + +diff --git a/man/crypttab.xml b/man/crypttab.xml +index aeacc57973..3e249ad23e 100644 +--- a/man/crypttab.xml ++++ b/man/crypttab.xml +@@ -75,7 +75,7 @@ + + Setting up encrypted block devices using this file supports + three encryption modes: LUKS, TrueCrypt and plain. See +- cryptsetup8 ++ cryptsetup8 + for more information about each mode. When no mode is specified in + the options field and the block device contains a LUKS signature, + it is opened as a LUKS device; otherwise, it is assumed to be in +@@ -117,7 +117,7 @@ + + + Specifies the cipher to use. See +- cryptsetup8 ++ cryptsetup8 + for possible values and the default value of this option. A + cipher with unpredictable IV values, such as + aes-cbc-essiv:sha256, is +@@ -129,7 +129,7 @@ + + Specifies the hash to use for password + hashing. See +- cryptsetup8 ++ cryptsetup8 + for possible values and the default value of this + option. + +@@ -140,7 +140,7 @@ + Use a detached (separated) metadata device or + file where the LUKS header is stored. This option is only + relevant for LUKS devices. See +- cryptsetup8 ++ cryptsetup8 + for possible values and the default value of this + option. + +@@ -150,7 +150,7 @@ + + Specifies the number of bytes to skip at the + start of the key file. See +- cryptsetup8 ++ cryptsetup8 + for possible values and the default value of this + option. + +@@ -160,7 +160,7 @@ + + Specifies the maximum number of bytes to read + from the key file. See +- cryptsetup8 ++ cryptsetup8 + for possible values and the default value of this option. This + option is ignored in plain encryption mode, as the key file + size is then given by the key size. +@@ -174,7 +174,7 @@ + given passphrase or key, but another would, the setup of the + device will fail regardless. This option implies + . See +- cryptsetup8 ++ cryptsetup8 + for possible values. The default is to try all key slots in + sequential order. + +@@ -221,7 +221,7 @@ + + + Specifies the key size in bits. See +- cryptsetup8 ++ cryptsetup8 + for possible values and the default value of this + option. + +@@ -278,7 +278,7 @@ + volume provided in the second field. Please note that there is + no protection for the hidden volume if the outer volume is + mounted instead. See +- cryptsetup8 ++ cryptsetup8 + for more information on this limitation. + + +@@ -383,7 +383,7 @@ hidden /mnt/tc_hidden /dev/null tcrypt-hidden,tcrypt-keyfile=/etc/keyfil + systemd1, + systemd-cryptsetup@.service8, + systemd-cryptsetup-generator8, +- cryptsetup8, ++ cryptsetup8, + mkswap8, + mke2fs8 + +diff --git a/man/file-hierarchy.xml b/man/file-hierarchy.xml +index e9c894f5c8..364e130790 100644 +--- a/man/file-hierarchy.xml ++++ b/man/file-hierarchy.xml +@@ -397,7 +397,7 @@ + /dev/shm + Place for POSIX shared memory segments, as + created via +- shm_open3. ++ shm_open3. + This directory is flushed on boot, and is a + tmpfs file system. Since all users have + write access to this directory, special care should be taken +diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml +index 3741cf9cc2..919bd13745 100644 +--- a/man/kernel-command-line.xml ++++ b/man/kernel-command-line.xml +@@ -336,7 +336,7 @@ + + Enables resume from hibernation using the specified + device. All +- fstab5-like ++ fstab5-like + paths are supported. For details, see + systemd-hibernate-resume-generator8. + +diff --git a/man/locale.conf.xml b/man/locale.conf.xml +index 48c0006db2..2c32d16094 100644 +--- a/man/locale.conf.xml ++++ b/man/locale.conf.xml +@@ -91,7 +91,7 @@ + might be checked for locale configuration as well, however only as + fallback. + +- localectl1 ++ localectl1 + may be used to alter the settings in this file during runtime from + the command line. Use + systemd-firstboot1 +@@ -121,7 +121,7 @@ + Note that LC_ALL may not be configured in this + file. For details about the meaning and semantics of these + settings, refer to +- locale7. ++ locale7. + + + +@@ -142,8 +142,8 @@ LC_MESSAGES=en_US.UTF-8 + See Also + + systemd1, +- locale7, +- localectl1, ++ locale7, ++ localectl1, + systemd-localed.service8, + systemd-firstboot1 + +diff --git a/man/localectl.xml b/man/localectl.xml +index aae6e0629c..7def047f62 100644 +--- a/man/localectl.xml ++++ b/man/localectl.xml +@@ -124,7 +124,7 @@ + Set the system locale. This takes one or more + assignments such as "LANG=de_DE.utf8", + "LC_MESSAGES=en_GB.utf8", and so on. See +- locale7 ++ locale7 + for details on the available settings and their meanings. Use + list-locales for a list of available + locales (see below). +@@ -204,10 +204,10 @@ + See Also + + systemd1, +- locale7, +- locale.conf5, ++ locale7, ++ locale.conf5, + vconsole.conf5, +- loadkeys1, ++ loadkeys1, + kbd4, + + The XKB Configuration Guide +diff --git a/man/logind.conf.xml b/man/logind.conf.xml +index ca2b18783c..d02d573565 100644 +--- a/man/logind.conf.xml ++++ b/man/logind.conf.xml +@@ -126,7 +126,7 @@ + + Note that setting KillUserProcesses=1 + will break tools like +- screen1. ++ screen1. + + + +diff --git a/man/machine-id.xml b/man/machine-id.xml +index 83e0b26ced..92d67a3869 100644 +--- a/man/machine-id.xml ++++ b/man/machine-id.xml +@@ -75,7 +75,7 @@ + globally unique ID in the network, which does not change even if + the local network configuration changes. Due to this and its + greater length, it is a more useful replacement for the +- gethostid3 ++ gethostid3 + call that POSIX specifies. + + The +@@ -127,7 +127,7 @@ id[8] = (id[8] & 0x3F) | 0x80; + + systemd1, + systemd-machine-id-setup1, +- gethostid3, ++ gethostid3, + hostname5, + machine-info5, + os-release5, +diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml +index 34a937db68..4b722aa128 100644 +--- a/man/modules-load.d.xml ++++ b/man/modules-load.d.xml +@@ -94,7 +94,7 @@ virtio-net + systemd1, + systemd-modules-load.service8, + systemd-delta1, +- modprobe8 ++ modprobe8 + + + +diff --git a/man/os-release.xml b/man/os-release.xml +index 1b71a49d05..8f4ab10fed 100644 +--- a/man/os-release.xml ++++ b/man/os-release.xml +@@ -316,7 +316,7 @@ BUG_REPORT_URL="https://bugzilla.redhat.com/" + See Also + + systemd1, +- lsb_release1, ++ lsb_release1, + hostname5, + machine-id5, + machine-info5 +diff --git a/man/sd_bus_message_append.xml b/man/sd_bus_message_append.xml +index 0c49a0c7c9..11fa07c636 100644 +--- a/man/sd_bus_message_append.xml ++++ b/man/sd_bus_message_append.xml +@@ -245,7 +245,7 @@ sd_bus_message_append(m, "ynqiuxtd", y, n, q, i, u, x, t, d); + sd_bus_new3, + sd_bus_ref3, + sd_bus_unref3, +- ssh1, ++ ssh1, + systemd-machined.service8, + machinectl1 + +diff --git a/man/sd_bus_open_user.xml b/man/sd_bus_open_user.xml +index e7a765962a..2bbb010696 100644 +--- a/man/sd_bus_open_user.xml ++++ b/man/sd_bus_open_user.xml +@@ -208,7 +208,7 @@ along with systemd; If not, see . + sd_bus_new3, + sd_bus_ref3, + sd_bus_unref3, +- ssh1, ++ ssh1, + systemd-machined.service8, + machinectl1 + +diff --git a/man/sd_event_add_signal.xml b/man/sd_event_add_signal.xml +index 0299aa5a53..7c8df7df8d 100644 +--- a/man/sd_event_add_signal.xml ++++ b/man/sd_event_add_signal.xml +@@ -86,7 +86,7 @@ along with systemd; If not, see . + the source parameter. The + signal parameter specifies the signal to be handled + (see +- signal7). ++ signal7). + The handler must reference a function to + call when the signal is delivered or be NULL. + The handler function will be passed the +@@ -94,7 +94,7 @@ along with systemd; If not, see . + freely by the caller. The handler also receives a pointer to a + const struct signalfd_siginfo containing + the information about the received signal. See +- signalfd2 ++ signalfd2 + for further information. + + Only a single handler may be installed for a specific +diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml +index 1dcbadd186..c19eb11b20 100644 +--- a/man/sd_journal_get_catalog.xml ++++ b/man/sd_journal_get_catalog.xml +@@ -130,7 +130,7 @@ + sd_journal_open3, + sd_journal_next3, + sd_journal_get_data3, +- malloc3 ++ malloc3 + + + +diff --git a/man/sd_journal_get_cursor.xml b/man/sd_journal_get_cursor.xml +index 2b7f443f29..a400d8b1b5 100644 +--- a/man/sd_journal_get_cursor.xml ++++ b/man/sd_journal_get_cursor.xml +@@ -84,7 +84,7 @@ + time) available entry. The call takes two arguments: a journal + context object and a pointer to a string pointer where the cursor + string will be placed. The string is allocated via libc +- malloc3 ++ malloc3 + and should be freed after use with + free3. + +diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml +index 068b10e7ca..0cd0b45b9a 100644 +--- a/man/sd_journal_print.xml ++++ b/man/sd_journal_print.xml +@@ -119,7 +119,7 @@ + sd_journal_print() but takes a variable + argument list encapsulated in an object of type + va_list (see +- stdarg3 ++ stdarg3 + for more information) instead of the format string. It is + otherwise equivalent in behavior. + +@@ -145,7 +145,7 @@ + sd_journal_send() but takes an array of + struct iovec (as defined in + uio.h, see +- readv3 ++ readv3 + for details) instead of the format string. Each structure should + reference one field of the entry to submit. The second argument + specifies the number of structures in the array. +@@ -154,7 +154,7 @@ + necessary. + + sd_journal_perror() is a similar to +- perror3 ++ perror3 + and writes a message to the journal that consists of the passed + string, suffixed with ": " and a human readable representation of + the current error code stored in +@@ -219,7 +219,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid( + Async signal safety + sd_journal_sendv() is "async signal + safe" in the meaning of +- signal7. ++ signal7. + + + sd_journal_print, +@@ -249,11 +249,11 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid( + sd-journal3, + sd_journal_stream_fd3, + syslog3, +- perror3, ++ perror3, + errno3, + systemd.journal-fields7, +- signal7, +- socket7 ++ signal7, ++ socket7 + + + +diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml +index 5a35cfe2c8..8a131791a5 100644 +--- a/man/sysctl.d.xml ++++ b/man/sysctl.d.xml +@@ -57,7 +57,7 @@ + At boot, + systemd-sysctl.service8 + reads configuration files from the above directories to configure +- sysctl8 ++ sysctl8 + kernel parameters. + + +@@ -162,9 +162,9 @@ net.bridge.bridge-nf-call-arptables = 0 + systemd1, + systemd-sysctl.service8, + systemd-delta1, +- sysctl8, +- sysctl.conf5, +- modprobe8 ++ sysctl8, ++ sysctl.conf5, ++ modprobe8 + + + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index 338c1d3280..b5e4cdf862 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -1703,9 +1703,9 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service + $VISUAL are present or if it is set to an empty + string or if their execution failed, systemctl will try to execute well + known editors in this order: +- nano1, +- vim1, +- vi1. ++ nano1, ++ vim1, ++ vi1. + + + +diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml +index e64894a28b..cb68a79be7 100644 +--- a/man/systemd-activate.xml ++++ b/man/systemd-activate.xml +@@ -165,7 +165,7 @@ + systemd1, + systemd.socket5, + systemd.service5, +- cat1 ++ cat1 + + + +diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml +index 1ff81d3d5a..198315052f 100644 +--- a/man/systemd-analyze.xml ++++ b/man/systemd-analyze.xml +@@ -145,7 +145,7 @@ + systemd-analyze dot generates textual + dependency graph description in dot format for further processing + with the GraphViz +- dot1 ++ dot1 + tool. Use a command line like systemd-analyze dot | dot + -Tsvg > systemd.svg to generate a graphical dependency + tree. Unless or +@@ -229,7 +229,7 @@ + dot command (see above), this selects which + relationships are shown in the dependency graph. Both options + require a +- glob7 ++ glob7 + pattern as an argument, which will be matched against the + left-hand and the right-hand, respectively, nodes of a + relationship. +diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml +index 38ddf66d27..9b1a8809dc 100644 +--- a/man/systemd-cat.xml ++++ b/man/systemd-cat.xml +@@ -171,7 +171,7 @@ + + systemd1, + systemctl1, +- logger1 ++ logger1 + + + +diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml +index 1974cd7a2d..b6270358ea 100644 +--- a/man/systemd-cryptsetup-generator.xml ++++ b/man/systemd-cryptsetup-generator.xml +@@ -185,7 +185,7 @@ + systemd1, + crypttab5, + systemd-cryptsetup@.service8, +- cryptsetup8, ++ cryptsetup8, + systemd-fstab-generator8 + + +diff --git a/man/systemd-cryptsetup@.service.xml b/man/systemd-cryptsetup@.service.xml +index bd03637deb..ea524851eb 100644 +--- a/man/systemd-cryptsetup@.service.xml ++++ b/man/systemd-cryptsetup@.service.xml +@@ -78,7 +78,7 @@ + systemd1, + systemd-cryptsetup-generator8, + crypttab5, +- cryptsetup8 ++ cryptsetup8 + + + +diff --git a/man/systemd-efi-boot-generator.xml b/man/systemd-efi-boot-generator.xml +index fd7ba79837..3431c3ce5b 100644 +--- a/man/systemd-efi-boot-generator.xml ++++ b/man/systemd-efi-boot-generator.xml +@@ -62,7 +62,7 @@ + does not communicate the used ESP to the OS, on systems where + /boot is an explicitly configured mount (for + example, listed in +- fstab5) ++ fstab5) + or where the /boot mount point is non-empty. + Since this generator creates an automount unit, the mount will + only be activated on-demand, when accessed. +@@ -79,7 +79,7 @@ + systemd.automount5, + systemd-gpt-auto-generator8, + gummiboot8, +- fstab5 ++ fstab5 + + + +diff --git a/man/systemd-firstboot.xml b/man/systemd-firstboot.xml +index 67d38ba31f..67289daa26 100644 +--- a/man/systemd-firstboot.xml ++++ b/man/systemd-firstboot.xml +@@ -91,7 +91,7 @@ + + Note that this tool operates directly on the file system and + does not involve any running system services, unlike +- localectl1, ++ localectl1, + timedatectl1 + or + hostnamectl1. +@@ -125,7 +125,7 @@ + LANG= and LC_MESSAGES + settings. The argument should be a valid locale identifier, + such as de_DE.UTF-8. This controls the +- locale.conf5 ++ locale.conf5 + configuration file. + + +@@ -163,7 +163,7 @@ + + Sets the password of the system's root user. + This creates a +- shadow5 ++ shadow5 + file. This setting exists in two forms: + accepts the password to set + directly on the command line, +@@ -171,7 +171,7 @@ + Note that it is not recommended specifying passwords on the + command line as other users might be able to see them simply + by invoking +- ps1. ++ ps1. + + + +@@ -244,13 +244,13 @@ + See Also + + systemd1, +- locale.conf5, ++ locale.conf5, + localtime5, + hostname5, + machine-id5, +- shadow5, ++ shadow5, + systemd-machine-id-setup1, +- localectl1, ++ localectl1, + timedatectl1, + hostnamectl1 + +diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml +index 022efb4130..bdc2dc1d0e 100644 +--- a/man/systemd-fstab-generator.xml ++++ b/man/systemd-fstab-generator.xml +@@ -54,7 +54,7 @@ + + systemd-fstab-generator is a generator + that translates /etc/fstab (see +- fstab5 ++ fstab5 + for details) into native systemd units early at boot and when + configuration of the system manager is reloaded. This will + instantiate mount and swap units as necessary. +@@ -173,7 +173,7 @@ + See Also + + systemd1, +- fstab5, ++ fstab5, + systemd.mount5, + systemd.swap5, + systemd-cryptsetup-generator8 +diff --git a/man/systemd-gpt-auto-generator.xml b/man/systemd-gpt-auto-generator.xml +index 8d2eaca4f6..bcc64ec9b5 100644 +--- a/man/systemd-gpt-auto-generator.xml ++++ b/man/systemd-gpt-auto-generator.xml +@@ -66,7 +66,7 @@ + Partitions Specification. Note that this generator has no + effect on non-GPT systems, on systems where the units are + explicitly configured (for example, listed in +- fstab5), ++ fstab5), + or where the mount points are non-empty. + + This generator will only look for root partitions on the +@@ -169,9 +169,9 @@ + systemd-fstab-generator8, + systemd-efi-boot-generator8, + systemd-cryptsetup@.service8, +- cryptsetup8, +- fstab5, +- btrfs8 ++ cryptsetup8, ++ fstab5, ++ btrfs8 + + + +diff --git a/man/systemd-hibernate-resume-generator.xml b/man/systemd-hibernate-resume-generator.xml +index a21782cbf9..d811b9b551 100644 +--- a/man/systemd-hibernate-resume-generator.xml ++++ b/man/systemd-hibernate-resume-generator.xml +@@ -73,7 +73,7 @@ + Takes a path to the resume device. Both + persistent block device paths like + /dev/disk/by-foo/bar and +- fstab5-style ++ fstab5-style + specifiers like FOO=bar are + supported. + +diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml +index 6b250b65e6..8280d6c874 100644 +--- a/man/systemd-journald.service.xml ++++ b/man/systemd-journald.service.xml +@@ -241,7 +241,7 @@ + systemd.journal-fields7, + sd-journal3, + systemd-coredump8, +- setfacl1, ++ setfacl1, + sd_journal_print4, + pydoc systemd.journal. + +diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml +index 8999166383..06aa78c0e4 100644 +--- a/man/systemd-localed.service.xml ++++ b/man/systemd-localed.service.xml +@@ -64,7 +64,7 @@ + unused. + + The tool +- localectl1 ++ localectl1 + is a command line client to this service. + + See the See Also + + systemd1, +- locale.conf5, ++ locale.conf5, + vconsole.conf5, +- localectl1, +- loadkeys1 ++ localectl1, ++ loadkeys1 + + + +diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml +index 4a936d326f..65b4c2f294 100644 +--- a/man/systemd-nspawn.xml ++++ b/man/systemd-nspawn.xml +@@ -598,7 +598,7 @@ + + Control the architecture ("personality") + reported by +- uname2 ++ uname2 + in the container. Currently, only x86 and + x86-64 are supported. This is useful when + running a 32-bit container on a 64-bit host. If this setting +@@ -735,7 +735,7 @@ + pacman8, + systemd.slice5, + machinectl1, +- btrfs8 ++ btrfs8 + + + +diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml +index 2179f11e95..9d4976274e 100644 +--- a/man/systemd-quotacheck.service.xml ++++ b/man/systemd-quotacheck.service.xml +@@ -86,7 +86,7 @@ + See Also + + systemd1, +- quotacheck8, ++ quotacheck8, + systemd-fsck@.service8 + + +diff --git a/man/systemd-remount-fs.service.xml b/man/systemd-remount-fs.service.xml +index 7b88ac3f3c..8e60e31b5c 100644 +--- a/man/systemd-remount-fs.service.xml ++++ b/man/systemd-remount-fs.service.xml +@@ -56,7 +56,7 @@ + + systemd-remount-fs.service is an + early-boot service that applies mount options listed in +- fstab5 ++ fstab5 + to the root file system, the /usr file system + and the kernel API file systems. This is required so that the + mount options of these file systems -- which are pre-mounted by +@@ -80,8 +80,8 @@ + See Also + + systemd1, +- fstab5, +- mount8 ++ fstab5, ++ mount8 + + + +diff --git a/man/systemd-socket-proxyd.xml b/man/systemd-socket-proxyd.xml +index 1c78b656e1..0b852e6bc1 100644 +--- a/man/systemd-socket-proxyd.xml ++++ b/man/systemd-socket-proxyd.xml +@@ -72,7 +72,7 @@ + to a configured server for each client, and then bidirectionally + forwards data between the two. + This utility's behavior is similar to +- socat1. ++ socat1. + The main differences for systemd-socket-proxyd + are support for socket activation with + Accept=false and an event-driven +@@ -183,9 +183,9 @@ $ curl http://localhost:80/]]> + systemd.socket5, + systemd.service5, + systemctl1, +- socat1, +- nginx1, +- curl1 ++ socat1, ++ nginx1, ++ curl1 + + + +diff --git a/man/systemd-sysctl.service.xml b/man/systemd-sysctl.service.xml +index f35a18a4d4..d4c1a7ebe3 100644 +--- a/man/systemd-sysctl.service.xml ++++ b/man/systemd-sysctl.service.xml +@@ -56,11 +56,11 @@ + + systemd-sysctl.service is an early-boot + service that configures +- sysctl8 ++ sysctl8 + kernel parameters. + + See +- sysctl.d5 ++ sysctl.d5 + for information about the configuration of this service. + + +@@ -68,8 +68,8 @@ + See Also + + systemd1, +- sysctl.d5, +- sysctl8, ++ sysctl.d5, ++ sysctl8, + + + +diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml +index c7bcfaee4d..1b74ed38f7 100644 +--- a/man/systemd-system.conf.xml ++++ b/man/systemd-system.conf.xml +@@ -172,7 +172,7 @@ + capabilities7 + for details. Takes a whitespace-separated list of capability + names as read by +- cap_from_name3. ++ cap_from_name3. + Capabilities listed will be included in the bounding set, all + others are removed. If the list of capabilities is prefixed + with ~, all but the listed capabilities will be included, the +diff --git a/man/systemd-update-utmp.service.xml b/man/systemd-update-utmp.service.xml +index b842d29721..c8a9cb7c90 100644 +--- a/man/systemd-update-utmp.service.xml ++++ b/man/systemd-update-utmp.service.xml +@@ -69,7 +69,7 @@ + + systemd1, + utmp5, +- auditd8 ++ auditd8 + + + +diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml +index 59bb5e4e8c..7c6ed08997 100644 +--- a/man/systemd-vconsole-setup.service.xml ++++ b/man/systemd-vconsole-setup.service.xml +@@ -57,9 +57,9 @@ + systemd-vconsole-setup.service is an + early-boot service that configures the virtual console font and + console keymap. Internally it calls +- loadkeys1 ++ loadkeys1 + and +- setfont8. ++ setfont8. + + See + vconsole.conf5 +@@ -105,8 +105,8 @@ + + systemd1, + vconsole.conf5, +- loadkeys1, +- setfont8, ++ loadkeys1, ++ setfont8, + systemd-localed.service8 + + +diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml +index 3db65d988d..b5b5885cdf 100644 +--- a/man/systemd.automount.xml ++++ b/man/systemd.automount.xml +@@ -96,7 +96,7 @@ + + Automount units may either be configured via unit files, or + via /etc/fstab (see +- fstab5 ++ fstab5 + for details). + + For details how systemd parses +@@ -145,8 +145,8 @@ + systemctl1, + systemd.unit5, + systemd.mount5, +- mount8, +- automount8, ++ mount8, ++ automount8, + systemd.directives7 + + +diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml +index fdb1578641..56b53e6015 100644 +--- a/man/systemd.exec.xml ++++ b/man/systemd.exec.xml +@@ -663,7 +663,7 @@ + capabilities7 + for details. Takes a whitespace-separated list of capability + names as read by +- cap_from_name3, ++ cap_from_name3, + e.g. CAP_SYS_ADMIN, + CAP_DAC_OVERRIDE, + CAP_SYS_PTRACE. Capabilities listed will +@@ -711,7 +711,7 @@ + set for the executed process. Take a capability string + describing the effective, permitted and inherited capability + sets as documented in +- cap_from_text3. ++ cap_from_text3. + Note that these capability sets are usually influenced (and + filtered) by the capabilities attached to the executed file. + Due to that CapabilityBoundingSet= is +@@ -881,7 +881,7 @@ + , which control whether mounts in the + file system namespace set up for this unit's processes will + receive or propagate mounts or unmounts. See +- mount2 ++ mount2 + for details. Defaults to . Use + to ensure that mounts and unmounts are + propagated from the host to the container and vice versa. Use +@@ -929,7 +929,7 @@ + authorize the transition. This directive is ignored if SELinux + is disabled. If prefixed by -, all errors + will be ignored. See +- setexeccon3 ++ setexeccon3 + for details. + + +@@ -1076,7 +1076,7 @@ + prefixed with ~ the listed address + families will be applied as blacklist, otherwise as whitelist. + Note that this restricts access to the +- socket2 ++ socket2 + system call only. Sockets passed into the process by other + means (for example, by using socket activation with socket + units, see +@@ -1104,7 +1104,7 @@ + Personality= + + Controls which kernel architecture +- uname2 ++ uname2 + shall report, when invoked by unit processes. Takes one of + x86 and x86-64. This + is useful when running 32-bit services on a 64-bit host +@@ -1166,7 +1166,7 @@ + $LANG + + Locale. Can be set in +- locale.conf5 ++ locale.conf5 + or on the kernel command line (see + systemd1 + and +@@ -1184,7 +1184,7 @@ + login shell. The variables are set for the units that have + User= set, which includes user + systemd instances. See +- passwd5. ++ passwd5. + + + +diff --git a/man/systemd.generator.xml b/man/systemd.generator.xml +index ccb698752a..9b39e732e3 100644 +--- a/man/systemd.generator.xml ++++ b/man/systemd.generator.xml +@@ -333,7 +333,7 @@ find $dir + systemd-debug-generator8, + systemd-efi-boot-generator8, + systemd-fstab-generator8, +- fstab5, ++ fstab5, + systemd-getty-generator8, + systemd-gpt-auto-generator8, + systemd-hibernate-resume-generator8, +diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml +index 1fd46de31f..7d6c5c715f 100644 +--- a/man/systemd.journal-fields.xml ++++ b/man/systemd.journal-fields.xml +@@ -134,7 +134,7 @@ + derived from glibc's + program_invocation_short_name variable, + see +- program_invocation_short_name3.) ++ program_invocation_short_name3.) + + + +diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml +index c974e22489..e57f0e7242 100644 +--- a/man/systemd.kill.xml ++++ b/man/systemd.kill.xml +@@ -135,7 +135,7 @@ + of shutting down a unit (see above), and is usually followed + by SIGKILL (see above and below). For a + list of valid signals, see +- signal7. ++ signal7. + Defaults to SIGTERM. + + +@@ -176,7 +176,7 @@ + systemd.exec5, + systemd.directives7, + kill2, +- signal7 ++ signal7 + + + +diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml +index 5cbde8b84c..fcb9a44161 100644 +--- a/man/systemd.mount.xml ++++ b/man/systemd.mount.xml +@@ -68,7 +68,7 @@ + Additional options are listed in + systemd.exec5, + which define the execution environment the +- mount8 ++ mount8 + binary is executed in, and in + systemd.kill5, + which define the way the processes are terminated, and in +@@ -78,7 +78,7 @@ + particularly useful for mount units specifying a + Type= option or using configuration not + specified in /etc/fstab; +- mount8 ++ mount8 + will refuse options that are not listed in + /etc/fstab if it is not run as UID 0. + +@@ -118,7 +118,7 @@ + + Mount units may either be configured via unit files, or via + /etc/fstab (see +- fstab5 ++ fstab5 + for details). Mounts listed in /etc/fstab + will be converted into native units dynamically at boot and when + the configuration of the system manager is reloaded. In general, +@@ -231,7 +231,7 @@ + What= + Takes an absolute path of a device node, file + or other resource to mount. See +- mount8 ++ mount8 + for details. If this refers to a device node, a dependency on + the respective device unit is automatically created. (See + systemd.device5 +@@ -251,7 +251,7 @@ + + Type= + Takes a string for the file system type. See +- mount8 ++ mount8 + for details. This setting is optional. + + +@@ -270,7 +270,7 @@ + the options specified in Options= is + relaxed, and unknown mount options are tolerated. This + corresponds with +- mount8's ++ mount8's + -s switch. Defaults to + off. + +@@ -321,7 +321,7 @@ + systemd.service5, + systemd.device5, + proc5, +- mount8, ++ mount8, + systemd-fstab-generator8, + systemd.directives7 + +diff --git a/man/systemd.network.xml b/man/systemd.network.xml +index 24f8416ef9..97386271d6 100644 +--- a/man/systemd.network.xml ++++ b/man/systemd.network.xml +@@ -286,7 +286,7 @@ + separated by a / character. Specify + this key more than once to configure several addresses. + The format of the address must be as described in +- inet_pton3. ++ inet_pton3. + This is a short-hand for an [Address] section only + containing an Address key (see below). This option may be + specified more than once. +@@ -312,7 +312,7 @@ + + The gateway address, which must be in the format + described in +- inet_pton3. ++ inet_pton3. + This is a short-hand for a [Route] section only containing + a Gateway key. This option may be specified more than + once. +@@ -323,7 +323,7 @@ + + A DNS server address, which must be in the format + described in +- inet_pton3. ++ inet_pton3. + This option may be specified more than once. + + +@@ -429,7 +429,7 @@ + + The broadcast address, which must be in the format + described in +- inet_pton3. ++ inet_pton3. + This key only applies to IPv4 addresses. If it is not + given, it is derived from the Address + key. +diff --git a/man/systemd.path.xml b/man/systemd.path.xml +index 08a7ec8975..d02bc92ae6 100644 +--- a/man/systemd.path.xml ++++ b/man/systemd.path.xml +@@ -74,7 +74,7 @@ + (see below). + + Internally, path units use the +- inotify7 ++ inotify7 + API to monitor file systems. Due to that, it suffers by the same + limitations as inotify, and for example cannot be used to monitor + files or directories changed by other machines on remote NFS file +@@ -187,7 +187,7 @@ + systemctl1, + systemd.unit5, + systemd.service5, +- inotify7, ++ inotify7, + systemd.directives7 + + +diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml +index 3938345fac..2f541937f8 100644 +--- a/man/systemd.socket.xml ++++ b/man/systemd.socket.xml +@@ -265,7 +265,7 @@ + Takes a one of , + or . Controls + the IPV6_V6ONLY socket option (see +- ipv67 ++ ipv67 + for details). If , IPv6 sockets bound + will be accessible via both IPv4 and IPv6. If + , they will be accessible via IPv6 +@@ -294,7 +294,7 @@ + this socket to. If set, traffic will only be accepted from the + specified network interfaces. This controls the + SO_BINDTODEVICE socket option (see +- socket7 ++ socket7 + for details). If this option is used, an automatic dependency + from this socket unit on the network interface device unit + (systemd.device5 +@@ -380,7 +380,7 @@ + /proc/sys/net/ipv4/tcp_keepalive_time) + for all TCP streams accepted on this socket. This controls the + SO_KEEPALIVE socket option (see +- socket7 ++ socket7 + and the TCP + Keepalive HOWTO for details.) Defaults to +@@ -392,7 +392,7 @@ + Takes time (in seconds) as argument . The connection needs to remain + idle before TCP starts sending keepalive probes. This controls the TCP_KEEPIDLE + socket option (see +- socket7 ++ socket7 + and the TCP + Keepalive HOWTO for details.) +@@ -405,7 +405,7 @@ + individual keepalive probes, if the socket option SO_KEEPALIVE + has been set on this socket seconds as argument. This controls + the TCP_KEEPINTVL socket option (see +- socket7 ++ socket7 + and the TCP + Keepalive HOWTO for details.) Defaults value is 75 +@@ -418,7 +418,7 @@ + unacknowledged probes to send before considering the + connection dead and notifying the application layer. This + controls the TCP_KEEPCNT socket option (see +- socket7 ++ socket7 + and the TCP + Keepalive HOWTO for details.) Defaults value is +@@ -431,7 +431,7 @@ + algorithm works by combining a number of small outgoing + messages, and sending them all at once. This controls the + TCP_NODELAY socket option (see +- tcp7 ++ tcp7 + Defaults to . + + +@@ -440,7 +440,7 @@ + Takes an integer argument controlling the + priority for all traffic sent from this socket. This controls + the SO_PRIORITY socket option (see +- socket7 ++ socket7 + for details.). + + +@@ -453,7 +453,7 @@ + established. When this option is set, the + TCP_DEFER_ACCEPT socket option will be + used (see +- tcp7), ++ tcp7), + and the kernel will ignore initial ACK packets without any + data. The argument specifies the approximate amount of time + the kernel should wait for incoming data before falling back +@@ -480,7 +480,7 @@ + Takes an integer argument controlling the + receive or send buffer sizes of this socket, respectively. + This controls the SO_RCVBUF and SO_SNDBUF socket options (see +- socket7 ++ socket7 + for details.). The usual suffixes K, M, G are supported and + are understood to the base of 1024. + +@@ -490,7 +490,7 @@ + Takes an integer argument controlling the IP + Type-Of-Service field for packets generated from this socket. + This controls the IP_TOS socket option (see +- ip7 ++ ip7 + for details.). Either a numeric string or one of + , , + or may +@@ -503,9 +503,9 @@ + Time-To-Live/IPv6 Hop-Count field for packets generated from + this socket. This sets the IP_TTL/IPV6_UNICAST_HOPS socket + options (see +- ip7 ++ ip7 + and +- ipv67 ++ ipv67 + for details.) + + +@@ -515,7 +515,7 @@ + mark of packets generated by this socket. This can be used in + the firewall logic to filter packets from this socket. This + sets the SO_MARK socket option. See +- iptables8 ++ iptables8 + for details. + + +@@ -526,7 +526,7 @@ + bind2s + to this TCP or UDP port. This controls the SO_REUSEPORT socket + option. See +- socket7 ++ socket7 + for details. + + +@@ -578,7 +578,7 @@ + control the mq_maxmsg field or the mq_msgsize field, + respectively, when creating the message queue. Note that + either none or both of these variables need to be set. See +- mq_setattr3 ++ mq_setattr3 + for details. + + +diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml +index 23b9c712ed..5016f453d5 100644 +--- a/man/systemd.swap.xml ++++ b/man/systemd.swap.xml +@@ -69,7 +69,7 @@ + Additional options are listed in + systemd.exec5, + which define the execution environment the +- swapon8 ++ swapon8 + binary is executed in, and in + systemd.kill5, + which define the way the processes are terminated, and in +@@ -100,7 +100,7 @@ + + Swap units may either be configured via unit files, or via + /etc/fstab (see +- fstab5 ++ fstab5 + for details). Swaps listed in /etc/fstab will + be converted into native units dynamically at boot and when the + configuration of the system manager is reloaded. See +@@ -161,7 +161,7 @@ + What= + Takes an absolute path of a device node or + file to use for paging. See +- swapon8 ++ swapon8 + for details. If this refers to a device node, a dependency on + the respective device unit is automatically created. (See + systemd.device5 +@@ -187,7 +187,7 @@ + device. This may be used for controlling discard options among + other functionality, if the swap backing device supports the + discard or trim operation. (See +- swapon8 ++ swapon8 + for more information.) + + +@@ -229,7 +229,7 @@ + systemd.resource-control5, + systemd.device5, + systemd.mount5, +- swapon8, ++ swapon8, + systemd-fstab-generator8, + systemd.directives7 + +diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml +index a452f87baf..c2e374a94e 100644 +--- a/man/systemd.unit.xml ++++ b/man/systemd.unit.xml +@@ -826,7 +826,7 @@ + cris to test + against a specific architecture. The architecture is + determined from the information returned by +- uname2 ++ uname2 + and is thus subject to + personality2. + Note that a Personality= setting in the +@@ -1438,7 +1438,7 @@ PrivateTmp=yes + systemd-analyze1, + capabilities7, + systemd.directives7, +- uname1 ++ uname1 + + + +diff --git a/man/systemd.xml b/man/systemd.xml +index 9b92140e6b..d006b0bb99 100644 +--- a/man/systemd.xml ++++ b/man/systemd.xml +@@ -1012,9 +1012,9 @@ + Set the system locale to use. This overrides + the settings in /etc/locale.conf. For + more information see +- locale.conf5 ++ locale.conf5 + and +- locale7. ++ locale7. + + + +@@ -1077,7 +1077,7 @@ + + The systemd Homepage, + systemd-system.conf5, +- locale.conf5, ++ locale.conf5, + systemctl1, + journalctl1, + systemd-notify1, +diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml +index 17bea8b682..27196d44e9 100644 +--- a/man/vconsole.conf.xml ++++ b/man/vconsole.conf.xml +@@ -129,9 +129,9 @@ FONT=eurlatgr + + systemd1, + systemd-vconsole-setup.service8, +- loadkeys1, +- setfont8, +- locale.conf5, ++ loadkeys1, ++ setfont8, ++ locale.conf5, + systemd-localed.service8 + + diff --git a/0088-man-link-to-fd.o-for-dbus-stuff.patch b/0088-man-link-to-fd.o-for-dbus-stuff.patch new file mode 100644 index 0000000..38d76c8 --- /dev/null +++ b/0088-man-link-to-fd.o-for-dbus-stuff.patch @@ -0,0 +1,90 @@ +From 0cdbfc2734a4e1b3b926be66c31a37e50c9d1733 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 13 Mar 2015 21:24:30 -0500 +Subject: [PATCH] man: link to fd.o for dbus stuff + +(cherry picked from commit 3b5cfcdb580f5b766ff7fb1a2839bd37d74a98de) +--- + man/busctl.xml | 2 +- + man/custom-html.xsl | 13 +++++++++++++ + man/systemd-bus-proxyd.xml | 2 +- + man/systemd-bus-proxyd@.service.xml | 2 +- + man/systemd-machine-id-setup.xml | 2 +- + 5 files changed, 17 insertions(+), 4 deletions(-) + +diff --git a/man/busctl.xml b/man/busctl.xml +index cc1844b0a0..807fc78e8f 100644 +--- a/man/busctl.xml ++++ b/man/busctl.xml +@@ -465,7 +465,7 @@ o "/org/freedesktop/systemd1/job/42684" + See Also + + +- dbus-daemon1, ++ dbus-daemon1, + D-Bus, + kdbus, + sd-bus3, +diff --git a/man/custom-html.xsl b/man/custom-html.xsl +index 32299db710..706b95a1c4 100644 +--- a/man/custom-html.xsl ++++ b/man/custom-html.xsl +@@ -91,6 +91,19 @@ + + + ++ ++ ++ ++ http://dbus.freedesktop.org/doc/ ++ ++ . ++ ++ .html ++ ++ ++ ++ ++ + + +

+diff --git a/man/systemd-bus-proxyd.xml b/man/systemd-bus-proxyd.xml +index 2c7764047b..e0efe99854 100644 +--- a/man/systemd-bus-proxyd.xml ++++ b/man/systemd-bus-proxyd.xml +@@ -101,7 +101,7 @@ along with systemd; If not, see . + See Also + + +- dbus-daemon1, ++ dbus-daemon1, + D-Bus, + kdbus + +diff --git a/man/systemd-bus-proxyd@.service.xml b/man/systemd-bus-proxyd@.service.xml +index 141b43f6d9..dc4f07ff1b 100644 +--- a/man/systemd-bus-proxyd@.service.xml ++++ b/man/systemd-bus-proxyd@.service.xml +@@ -73,7 +73,7 @@ + + + systemd-bus-proxyd8, +- dbus-daemon1, ++ dbus-daemon1, + D-Bus, + kdbus + +diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml +index 22bad3e5f4..182717f524 100644 +--- a/man/systemd-machine-id-setup.xml ++++ b/man/systemd-machine-id-setup.xml +@@ -122,7 +122,7 @@ + + systemd1, + machine-id5, +- dbus-uuidgen1, ++ dbus-uuidgen1, + systemd-firstboot1 + + diff --git a/0089-man-fix-name-of-systemd.resource-control-5.patch b/0089-man-fix-name-of-systemd.resource-control-5.patch new file mode 100644 index 0000000..2918e25 --- /dev/null +++ b/0089-man-fix-name-of-systemd.resource-control-5.patch @@ -0,0 +1,23 @@ +From 01c9c40501ba72a595160137ab31a80bd42f62c6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= +Date: Fri, 13 Mar 2015 21:25:37 -0500 +Subject: [PATCH] man: fix name of systemd.resource-control(5) + +(cherry picked from commit ee41f6028189819c728316e917ca09b9eb0a7850) +--- + man/systemctl.xml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/man/systemctl.xml b/man/systemctl.xml +index b5e4cdf862..50e6bc93f2 100644 +--- a/man/systemctl.xml ++++ b/man/systemctl.xml +@@ -1721,7 +1721,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service + loginctl1, + machinectl1, + systemd.unit5, +- systemd.resource-management5, ++ systemd.resource-control5, + systemd.special7, + wall1, + systemd.preset5, diff --git a/0090-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch b/0090-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch new file mode 100644 index 0000000..9b4feb5 --- /dev/null +++ b/0090-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch @@ -0,0 +1,37 @@ +From 19e98bf405a8105db71a4e3247b0397509825a6e Mon Sep 17 00:00:00 2001 +From: Will Woods +Date: Fri, 13 Mar 2015 17:24:46 -0400 +Subject: [PATCH] selinux: fix SEGV during switch-root if SELinux policy loaded + +If you've got SELinux policy loaded, label_hnd is your labeling handle. +When systemd is shutting down, we free that handle via mac_selinux_finish(). + +But: switch_root() calls mkdir_p_label(), which tries to look up a label +using that freed handle, and so we get a bunch of garbage and eventually +SEGV in libselinux. + +(This doesn't happen in the switch-root from initramfs to real root because +there's no SELinux policy loaded in initramfs, so label_hnd is NULL and we +never attempt any lookups.) + +So: make sure that mac_selinux_finish() actually sets label_hnd to NULL, so +nobody tries to use it after it becomes invalid. + +https://bugzilla.redhat.com/show_bug.cgi?id=1185604 +(cherry picked from commit f5ce2b49585a14cefb6d02f61c8dcdf7628a8605) +--- + src/shared/selinux-util.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/shared/selinux-util.c b/src/shared/selinux-util.c +index a2233e0cfb..a46ddf8498 100644 +--- a/src/shared/selinux-util.c ++++ b/src/shared/selinux-util.c +@@ -117,6 +117,7 @@ void mac_selinux_finish(void) { + return; + + selabel_close(label_hnd); ++ label_hnd = NULL; + #endif + } + diff --git a/0091-service-don-t-add-After-dependencies-on-.busname-uni.patch b/0091-service-don-t-add-After-dependencies-on-.busname-uni.patch new file mode 100644 index 0000000..0fc26ce --- /dev/null +++ b/0091-service-don-t-add-After-dependencies-on-.busname-uni.patch @@ -0,0 +1,35 @@ +From 4acdc3835b2c9d395f1df95bb1dd5620a4a0e7e5 Mon Sep 17 00:00:00 2001 +From: Michael Biebl +Date: Sat, 14 Mar 2015 16:48:54 +0100 +Subject: [PATCH] service: don't add After= dependencies on .busname units if + kdbus support is disabled + +(cherry picked from commit 6962fd3bd28cb5d3aaff69c1e3b6cc006e7c8426) +--- + src/core/service.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/core/service.c b/src/core/service.c +index 7781b4e626..ae5e610008 100644 +--- a/src/core/service.c ++++ b/src/core/service.c +@@ -556,14 +556,16 @@ static int service_add_extras(Service *s) { + s->notify_access = NOTIFY_MAIN; + + if (s->bus_name) { ++#ifdef ENABLE_KDBUS + const char *n; + +- r = unit_watch_bus_name(UNIT(s), s->bus_name); ++ n = strjoina(s->bus_name, ".busname"); ++ r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, n, NULL, true); + if (r < 0) + return r; ++#endif + +- n = strjoina(s->bus_name, ".busname"); +- r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, n, NULL, true); ++ r = unit_watch_bus_name(UNIT(s), s->bus_name); + if (r < 0) + return r; + } diff --git a/systemd.spec b/systemd.spec index 8cf6ab1..60a060e 100644 --- a/systemd.spec +++ b/systemd.spec @@ -13,7 +13,7 @@ Name: systemd Url: http://www.freedesktop.org/wiki/Software/systemd Version: 219 -Release: 9%{?gitcommit:.git%{gitcommit}}%{?dist} +Release: 10%{?gitcommit:.git%{gitcommit}}%{?dist} # For a breakdown of the licensing, see README License: LGPLv2+ and MIT and GPLv2+ Summary: A System and Service Manager @@ -64,7 +64,71 @@ Patch0023: 0023-journal-fix-Inappropriate-ioctl-for-device-on-ext4.patch Patch0024: 0024-sd-daemon-replace-VLA-with-alloca-to-make-llvm-happy.patch Patch0025: 0025-tmpfiles-quietly-ignore-ACLs-on-unsupported-filesyst.patch Patch0026: 0026-shared-util-assume-ac-when-sys-class-power_supply-is.patch -Patch0027: 0027-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch +Patch0027: 0027-import-remove-unused-variable.patch +Patch0028: 0028-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch +Patch0029: 0029-man-add-newlines-to-the-pull-raw-example-in-machinec.patch +Patch0030: 0030-core-shared-in-deserializing-match-same-files-reache.patch +Patch0031: 0031-shared-use-SocketAddress-in-socket_address_matches_f.patch +Patch0032: 0032-shared-avoid-semi-duplicating-socket_address_equal.patch +Patch0033: 0033-shared-handle-unnamed-sockets-in-socket_address_equa.patch +Patch0034: 0034-man-make-bootup-graph-consistent.patch +Patch0035: 0035-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch +Patch0036: 0036-man-explain-time-units-in-tmpfiles.patch +Patch0037: 0037-systemctl-check-validity-of-PID-we-received.patch +Patch0038: 0038-systemctl-support-auditd.service-better.patch +Patch0039: 0039-shared-unit-name-fix-gcc5-warning.patch +Patch0040: 0040-test-hashmap-fix-gcc5-warning.patch +Patch0041: 0041-shared-fix-wrong-assertion-in-barrier_set_role.patch +Patch0042: 0042-hwdb-Update-database-of-Bluetooth-company-identifier.patch +Patch0043: 0043-journal-make-skipping-of-exhausted-journal-files-eff.patch +Patch0044: 0044-hwdb-add-sdio-identifiers-for-Broadcom-WLAN-cards.patch +Patch0045: 0045-shared-condition-fix-gcc5-warning.patch +Patch0046: 0046-man-correct-description-of-systemd-user-sessions.patch +Patch0047: 0047-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch +Patch0048: 0048-man-fix-typo.patch +Patch0049: 0049-bus-proxyd-avoid-logging-oom-twice.patch +Patch0050: 0050-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch +Patch0051: 0051-README-mention-ACLs-more.patch +Patch0052: 0052-Do-not-advertise-.d-snippets-over-main-config-file.patch +Patch0053: 0053-hwdb-add-pnpid-for-the-T450s-touchpad.patch +Patch0054: 0054-networkd-netdev-inform-when-we-take-over-an-existing.patch +Patch0055: 0055-man-replace-obsolete-wiki-link-with-man-page.patch +Patch0056: 0056-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch +Patch0057: 0057-hwdb-fix-Dell-XPS12-9Q33-key-name.patch +Patch0058: 0058-Remove-the-cap-on-epoll-events.patch +Patch0059: 0059-Allow-up-to-4096-simultaneous-connections.patch +Patch0060: 0060-hwdb-add-Logitech-G5-Laser-Mouse.patch +Patch0061: 0061-tmpfiles-Fix-handling-of-duplicate-lines.patch +Patch0062: 0062-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch +Patch0063: 0063-vconsole-match-on-vtcon-events-not-fbcon-ones.patch +Patch0064: 0064-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch +Patch0065: 0065-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch +Patch0066: 0066-sysusers-do-not-reject-users-with-already-present-et.patch +Patch0067: 0067-nspawn-fix-use-after-free-and-leak-in-error-paths.patch +Patch0068: 0068-login-fix-copy-pasto-in-error-path.patch +Patch0069: 0069-journalctl-update-hint-now-that-we-set-ACL-everywher.patch +Patch0070: 0070-sd-journal-return-error-when-we-cannot-open-a-file.patch +Patch0071: 0071-missing.h-add-NDA_.patch +Patch0072: 0072-udevd-close-race-in-udev-settle.patch +Patch0073: 0073-man-document-that-ExecStartPre-is-not-the-place-to-s.patch +Patch0074: 0074-journal-fix-return-code.patch +Patch0075: 0075-console-fix-error-code-inversion.patch +Patch0076: 0076-bus-proxy-complain-only-once-about-queue-overflows.patch +Patch0077: 0077-cgtop-fix-assert-when-not-on-tty.patch +Patch0078: 0078-man-split-paragraph.patch +Patch0079: 0079-hwdb-update.patch +Patch0080: 0080-networkd-Begin-with-serial-number-1-for-netlink-requ.patch +Patch0081: 0081-journal-remote-downgrade-routine-messages-to-debug.patch +Patch0082: 0082-journal-remote-process-events-without-delay.patch +Patch0083: 0083-man-update-example-2-in-systemd.network-5.patch +Patch0084: 0084-gpt-auto-generator-fix-detection-of-srv.patch +Patch0085: 0085-sd-rtnl-never-set-serial-to-0.patch +Patch0086: 0086-gpt-auto-generator-allow-type-check-to-fail.patch +Patch0087: 0087-man-fix-a-bunch-of-links.patch +Patch0088: 0088-man-link-to-fd.o-for-dbus-stuff.patch +Patch0089: 0089-man-fix-name-of-systemd.resource-control-5.patch +Patch0090: 0090-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch +Patch0091: 0091-service-don-t-add-After-dependencies-on-.busname-uni.patch # kernel-install patch for grubby, drop if grubby is obsolete @@ -289,6 +353,7 @@ systemd-journal-gatewayd serves journal events over the network using HTTP. --exclude CODING_STYLE \ --exclude src/readahead/Makefile \ --exclude src/libsystemd-terminal/unifont-def.h \ + --exclude hwdb/sdio.ids \ %{patches} %endif @@ -885,6 +950,21 @@ getent passwd systemd-journal-upload >/dev/null 2>&1 || useradd -r -l -g systemd /usr/lib/firewalld/services/* %changelog +* Sat Mar 14 2015 Zbigniew Jędrzejewski-Szmek - 219-10 +- Fixes for bugs 1186018, 1195294, 1185604, 1196452. +- Hardware database update. +- Documentation fixes. +- A fix for journalctl performance regression. +- Fix detection of inability to open files in journalctl. +- Detect SuperH architecture properly. +- The first of duplicate lines in tmpfiles wins again. +- Do vconsole setup after loading vconsole driver, not fbcon. +- Fix problem where some units were restarted during systemd reexec. +- Fix race in udevadm settle tripping up NetworkManager. +- Downgrade various log messages. +- Fix issue where journal-remote would process some messages with a delay. +- GPT /srv partition autodiscovery is fixed. + * Tue Mar 10 2015 Jan Synáček - 219-9 - Buttons on Lenovo X6* tablets broken (#1198939)